作者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