[請益] 更新圖片 (已解決>"<)

看板PHP作者 (我很愛阿旺...)時間13年前 (2010/12/28 02:36), 編輯推噓1(1012)
留言13則, 2人參與, 最新討論串1/1
不好意思,我是個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

12/28 10:18, , 1F
我是縮圖上傳遇到跟妳一樣的問題.我是在上傳時,在檔案後
12/28 10:18, 1F

12/28 10:18, , 2F
加入時間參數
12/28 10:18, 2F

12/28 10:22, , 3F
$Pro_name 這個裝的是啥東西@@?
12/28 10:22, 3F
時間參數?? 囧>? 不是很懂QQ 其他的都只是一些可以更改的資訊,名稱編號等等之類的..

12/28 12:04, , 4F
rex大說的是瀏覽器快取的問題 跟你的問題應該不一樣
12/28 12:04, 4F
是喔QQ 感謝

12/28 14:37, , 5F
你上傳的圖片有重新命名嗎?還是固定的名稱@@?
12/28 14:37, 5F
就從電腦資料夾直接抓他的檔名,沒改過 也都有在photo的資料夾中,但就是沒辦法更新圖片

12/28 15:20, , 6F
那你上傳新圖片之後.你資料庫存檔名的欄位資料有更新嗎?
12/28 15:20, 6F
剛剛試了一下,我資料庫是看不到檔名有沒有更改 但是檔案大小是有變動的,但是都會變成只有6Bytes,也跟圖片大小不符

12/29 10:24, , 7F
是重新上傳才變叉燒包嗎@@?
12/29 10:24, 7F
嗯嗯 是的

12/30 15:30, , 8F
我的小小建議是..把上傳的圖片檔名也寫進資料庫..看上傳之
12/30 15:30, 8F

12/30 15:31, , 9F
後的檔名是否正確..一步一步試吧....
12/30 15:31, 9F
剛剛測試了一下 問題似乎是出在於getBimgfilename以及getBimgfiletmp這兩個變數上 我將變數用echo呼叫路徑出來查看,只有這兩個是空的。 導致saveBimgname也只有"photo/"這個路徑,因此他就跳到if中 讓photo這個路徑蓋過原本圖片路徑,判定我沒上傳圖。 (那個IF我有故意加上Pro_picture = '$saveBimgname',所以他強制變成沒圖 叉燒包) 於是我又跑回去測試新增 結果同樣的getBimgfilename跟getBimgfiletmp都是正常的顯示出檔名 導致我現在很納悶,囧a

12/31 01:55, , 10F
出在更新的SQL語法上嗎? $Pro_name這個釋放啥東西
12/31 01:55, 10F
我覺得應該是出在前一頁上傳路徑的問題,我兩個都有echo過Pro_picture的路徑 新增的echo出來是無法顯示的,更新那個則是會顯示出路徑 上面提到的getBimg那兩個則是相反,新增echo的到,更新則不行 但是我兩個都是一樣的方式上傳的,所以目前無法理解為什麼會這樣.. 那個是名稱。

12/31 10:03, , 11F
$filein = "C:/AppServ/www/$saveBimgname" ; 這串以我的寫
12/31 10:03, 11F

12/31 10:04, , 12F
法,$filein = "C:/AppServ/www/".$saveBimgname;..你試試.
12/31 10:04, 12F
謝謝,試過不行 囧 我弄出來了 囧 更新圖片的 $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)

12/31 13:09, , 13F
用CS5..有些php語法會幫你debug...
12/31 13:09, 13F
文章代碼(AID): #1D6DomRp (PHP)