※ 引述《Notte (why so serious ?)》之銘言:
: 因為該頁前端 需要五張圖
: 所以在資料庫只放了一筆資料 紀錄五張圖的存取位置
: 後台的設計 也寫好五張圖去撈資料庫的位置
: 如果我一次上傳五張 那麼結果是正常的
: 問題是 如果我再次去上傳更改某一張圖 那麼其餘四張會變成空值
: 我是用UPDATE SET 去更改上傳過的圖
: 但因為四張沒改而抓不到POST的值而導致空值
: 請問我應該要怎麼改寫才比較正確呢???
簡單回一下推文大概是怎麼樣@@
chemberlain:把五張圖放進陣列,serialize後再寫進資料庫
c大的意思是假設五張圖的路徑方別是1,2,3,4,5
那麼把這五個路徑放進陣列並讓他沉睡(利用serialize)
a = array(1,2,3,4,5)
b = serialize(a),再把b放進資料庫欄位裏,這樣在資料庫內就只需要一個欄位
要更改的時候讀取資料庫的欄位,然後重新喚醒他
a = unserialize(b) 這時候a陣列就會是(1,2,3,4,5)了
再分別放入輸入欄內更改就行了,類似
foreach($a as $a_val){
echo "<input type='text' name=a[] value='$a_val'>";
}
送出後,再讓a沉睡成b在寫入資料庫就可以了
這種方式跟
crossdunk:如果你不想改資料庫結構,我建議是五個都抓出來 08/05 10:26
→ crossdunk:都放進去input text裡面 改要改的 這樣沒改的也會有值
差不多,都是把值都叫出來,有改的改沒改的不動,
在一起更新,只是後者不用改資料庫結構
Bambe:所以才說你要在程式裡加工,讓空值也不要一起update進去
這種方法比較麻煩,其實小弟孤陋寡聞,也不懂是什麼意思
自以為大概是不用撈資料庫的值,分別開五個輸入欄代表五張圖
有值的就是要改的,沒值的代表不更動
直接用if($輸入欄=='')來判斷要輸入的sql指令
$sql = 'update xxx set ';
if($pic1!='') $sql .= 'pic1 = ".$pic1."';
類似這樣,不過我不知道你是用哪種方式使用資料庫的,所以隨便打打而已
大致上就是這樣吧
賺賺P幣XD
感謝各位先進觀看
有錯請指正囉 QQ