作者Notte (why so serious ?)
看板PHP
標題Re: [請益] 下拉式選單傳值 用$變數失敗?
時間Sun Jul 27 15:23:39 2014
我一開始不好意思把功能都講出來 感覺很像叫大家幫我寫code =.=
因為我不太熟悉後台製作 以下可能有很多錯誤觀念 再麻煩大家見諒
我原本設計的資料庫是有
1.產品分類名稱 2.產品分類代號 3.產品名稱 4.產品代號 5.產品內容
(用來儲存圖文編輯器的內容)
我的需求功能是
第一個頁面可以
增加產品分類
所以我在設計上有兩個欄位 輸入產品分類名稱 & 輸入產品分類代號
(這邊我一直思考怎麼設計才好 還是我應該在資料庫用
enum的型態設定?)
第二個頁面是使用圖文編輯器
1.有個下拉式選單 會是第一頁新增過的
產品分類名稱
2.有輸入產品名稱的欄位
____________以下是我的部分程式碼______________
$sql = ("SELECT 產品分類代號,產品分類名稱 FROM product
GROUP BY 產品分類名稱");
(這邊我不知道對不對 因為我不GROUP BY的話 會有很多重複名稱)
$result = mysql_query($sql);
<select name="select">
<?php
while ($row =
mysql_fetch_assoc($result)){
echo "<option value =".$row['分類代號'].">".$row['分類名稱']."</option>\n";
}
?>
</select>
<input type="submit" value=" 確認新增 "/>
________(以上都包在form裡 action到下一頁INSERT進資料庫的code)____________
另外產品內容跟產品名稱 都能順利進資料庫 唯獨下拉式選單的值是空值
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.121.251.106
※ 編輯: Notte (203.121.251.106), 07/27/2014 15:29:37
1F:推 rocairforce:你的 $result 確定有撈到資的?? 07/27 16:23
2F:→ Notte:!! 好像沒有 跑出Resource id #9 但是$sql在資料庫跑可以 07/27 16:59
3F:→ Notte:我發現echo $row 也沒值 但是選單裡面有值 怎麼會這樣@@??? 07/27 17:28
4F:推 rocairforce:把你的查詢直接下給DB,沒報錯又沒資料就是你的查詢 07/27 18:55
5F:→ rocairforce:寫錯了,有的話在PHP裡dump出來看看,如果是空的再去 07/27 18:56
6F:→ rocairforce:檢查看看是什麼原因造成資料沒到PHP,如果dump出來不 07/27 18:57
7F:→ rocairforce:是空的,再去看你HTML裡的迴圈錯在哪裡。 07/27 18:58
8F:→ rocairforce:debug如果經驗還不夠,最簡單的方式就是一層一層去追 07/27 18:59
9F:推 hit1205:原po是在哪裡 echo $row 的呢?如果是在 while 後面,因為 07/28 13:35
10F:→ hit1205:紀錄已經都跑完了,他只會等於 false @@ 07/28 13:36
11F:→ hit1205:另外'像樓上說的用 var_dump() 會比 echo 好,因為你可以 07/28 13:36
12F:→ hit1205:看到那個變數本身的形態與內容 ($row 在 while 裡時應該 07/28 13:36
13F:→ hit1205:是陣列 @@) 不過既然選項有跑出來的話應該是有抓到紀錄... 07/28 13:37
14F:推 hit1205:資料庫的部分,另一種做法是另外用一個表來存分類與代號 07/28 13:40
15F:→ hit1205:產品這邊就只要記錄他所屬的分類代號就好 @@ 07/28 13:41
16F:→ Notte:感謝! 我會多加嘗試的! 我的確是測試時在while後面echo @_@" 07/28 23:15
17F:推 hit1205:mysql_fetch_assoc()的作用是取出一列資料之後,把指針 07/29 10:46
18F:→ hit1205:移到下一列,所以迴圈跑第二次的時候就會抓到下一列 07/29 10:46
19F:→ hit1205:直到最後沒有任何紀錄了,他就會回傳false 07/29 10:47
20F:→ hit1205:而while就是不斷在執行mysql_fetch_assoc(),直到false 07/29 10:47
21F:→ hit1205:就跳離while,所以在while後面時$row就會等於false 07/29 10:47
22F:→ Notte:已解決 下一頁做處理的頁面 是要GET select的name! 07/31 18:14
23F:→ Notte:應該說是取POST>>> $i = $_POST['select1']; 07/31 18:15
24F:推 birkhofflee: 請使用 PDO,以後 mysql_ 開頭的 function 都會移除 08/20 21:59