作者everymoon (我很爱阿旺...)
看板PHP
标题[请益] 更新图片 (已解决>"<)
时间Tue Dec 28 02:36:30 2010
不好意思,我是个PHP新手
遇到一个问题卡很久
一开始从网页上自行上传图片显示在网页上没问题
但是想从网页上更换掉图片就会变成叉烧包
<input name="Pro_picture" type="file" class="InputText" id="Pro_picture" />
上面这是前页上传的图片CODE
下面是更新图片的CODE
$getBimgfilename=$_FILES['Pro_picture']['name'];
$getBimgfiletmp=$_FILES['Pro_picture']['tmp_name'];
$saveBimgname="PHOTO/".$getBimgfilename;
$filein = "C:/AppServ/www/$saveBimgname" ;
move_uploaded_file($getBimgfiletmp , $filein) ;
if ($saveBimgname == "PHOTO/"){
$savefolder="../pdimage/";
if(!file_exists($savefolder)) {
mkdir($savefolder); }
mysql_query("SET NAMES 'big5'");
$sql = "UPDATE product SET Pro_name = '$Pro_name',
Pro_class = '$Pro_class' , Pro_cost = '$Pro_cost',
Pro_amount = '$Pro_amount',
Pro_picture = '$saveBimgname', Pro_info = '$Pro_info'
WHERE Pro_id = '$Pro_id'";
$result = mysql_query($sql, $link);
if (!$result) die("执行 SQL 命令失败");
$savefolder="../pdimage/";
if(!file_exists($savefolder)) {
mkdir($savefolder); }
}
else{
$savefolder="../pdimage/";
if(!file_exists($savefolder)) {
mkdir($savefolder);
mysql_query("SET NAMES 'big5'");
$sql = "UPDATE product SET Pro_name = '$Pro_name',
Pro_class = '$Pro_class' , Pro_cost = '$Pro_cost',
Pro_amount = '$Pro_amount',
Pro_picture = '$saveBimgname', Pro_info = '$Pro_info',
WHERE Pro_id = '$Pro_id'";
$result = mysql_query($sql, $link);
if (!$result) die("执行 SQL 命令失败");
}
小弟在更新图片时也有同时更新其他资讯
其他方面没问题,就是只有图片不行
有试过其他方法(例如先删除再新增),但也是判定不行
苦了快一个月,因此只好请各位大大帮忙看看是否哪里错误
指导一下小弟我>"<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.63.90
1F:推 rex921:我是缩图上传遇到跟你一样的问题.我是在上传时,在档案後 12/28 10:18
2F:→ rex921:加入时间参数 12/28 10:18
3F:→ rex921:$Pro_name 这个装的是啥东西@@? 12/28 10:22
时间参数?? 囧>? 不是很懂QQ
其他的都只是一些可以更改的资讯,名称编号等等之类的..
4F:→ athelok:rex大说的是浏览器快取的问题 跟你的问题应该不一样 12/28 12:04
是喔QQ 感谢
5F:→ rex921:你上传的图片有重新命名吗?还是固定的名称@@? 12/28 14:37
就从电脑资料夹直接抓他的档名,没改过
也都有在photo的资料夹中,但就是没办法更新图片
6F:→ rex921:那你上传新图片之後.你资料库存档名的栏位资料有更新吗? 12/28 15:20
刚刚试了一下,我资料库是看不到档名有没有更改
但是档案大小是有变动的,但是都会变成只有6Bytes,也跟图片大小不符
7F:→ rex921:是重新上传才变叉烧包吗@@? 12/29 10:24
嗯嗯 是的
8F:→ rex921:我的小小建议是..把上传的图片档名也写进资料库..看上传之 12/30 15:30
9F:→ rex921:後的档名是否正确..一步一步试吧.... 12/30 15:31
刚刚测试了一下
问题似乎是出在於getBimgfilename以及getBimgfiletmp这两个变数上
我将变数用echo呼叫路径出来查看,只有这两个是空的。
导致saveBimgname也只有"photo/"这个路径,因此他就跳到if中
让photo这个路径盖过原本图片路径,判定我没上传图。
(那个IF我有故意加上Pro_picture = '$saveBimgname',所以他强制变成没图 叉烧包)
於是我又跑回去测试新增
结果同样的getBimgfilename跟getBimgfiletmp都是正常的显示出档名
导致我现在很纳闷,囧a
10F:→ rex921:出在更新的SQL语法上吗? $Pro_name这个释放啥东西 12/31 01:55
我觉得应该是出在前一页上传路径的问题,我两个都有echo过Pro_picture的路径
新增的echo出来是无法显示的,更新那个则是会显示出路径
上面提到的getBimg那两个则是相反,新增echo的到,更新则不行
但是我两个都是一样的方式上传的,所以目前无法理解为什麽会这样..
那个是名称。
11F:→ rex921:$filein = "C:/AppServ/www/$saveBimgname" ; 这串以我的写 12/31 10:03
12F:→ rex921:法,$filein = "C:/AppServ/www/".$saveBimgname;..你试试. 12/31 10:04
谢谢,试过不行 囧
我弄出来了 囧
更新图片的
$savefolder="../pdimage/";
if(!file_exists($savefolder)) {
mkdir($savefolder);
}
那个
}我在修改时拿到最下面去了
他是在判断我有没有那个目录,因为新增就会有目录了,所以他跳出这个IF
连我更新的部份也一起跳出了..
然後我又不小心在 WHERE Pro_id = '$Pro_id'"; 这之前多加个
,
语法出错Orz
之前那个echo的差别我也找出来了
我有一个在送表单有加上 enctype="multipart/form-data"
另一个没有,我都加上之後echo都变的一样了..
感谢rex921大大这几天的帮忙Orz
我真是蠢蛋ㄒ口ㄒ
※ 编辑: everymoon 来自: 218.170.52.106 (12/31 11:24)
13F:→ rex921:用CS5..有些php语法会帮你debug... 12/31 13:09