Re: [請益] 下拉式選單傳值 用$變數失敗?

看板PHP作者 (why so serious ?)時間11年前 (2014/07/27 15:23), 11年前編輯推噓6(6018)
留言24則, 4人參與, 最新討論串4/4 (看更多)
我一開始不好意思把功能都講出來 感覺很像叫大家幫我寫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

07/27 16:23, , 1F
你的 $result 確定有撈到資的??
07/27 16:23, 1F

07/27 16:59, , 2F
!! 好像沒有 跑出Resource id #9 但是$sql在資料庫跑可以
07/27 16:59, 2F

07/27 17:28, , 3F
我發現echo $row 也沒值 但是選單裡面有值 怎麼會這樣@@???
07/27 17:28, 3F

07/27 18:55, , 4F
把你的查詢直接下給DB,沒報錯又沒資料就是你的查詢
07/27 18:55, 4F

07/27 18:56, , 5F
寫錯了,有的話在PHP裡dump出來看看,如果是空的再去
07/27 18:56, 5F

07/27 18:57, , 6F
檢查看看是什麼原因造成資料沒到PHP,如果dump出來不
07/27 18:57, 6F

07/27 18:58, , 7F
是空的,再去看你HTML裡的迴圈錯在哪裡。
07/27 18:58, 7F

07/27 18:59, , 8F
debug如果經驗還不夠,最簡單的方式就是一層一層去追
07/27 18:59, 8F

07/28 13:35, , 9F
原po是在哪裡 echo $row 的呢?如果是在 while 後面,因為
07/28 13:35, 9F

07/28 13:36, , 10F
紀錄已經都跑完了,他只會等於 false @@
07/28 13:36, 10F

07/28 13:36, , 11F
另外'像樓上說的用 var_dump() 會比 echo 好,因為你可以
07/28 13:36, 11F

07/28 13:36, , 12F
看到那個變數本身的形態與內容 ($row 在 while 裡時應該
07/28 13:36, 12F

07/28 13:37, , 13F
是陣列 @@) 不過既然選項有跑出來的話應該是有抓到紀錄...
07/28 13:37, 13F

07/28 13:40, , 14F
資料庫的部分,另一種做法是另外用一個表來存分類與代號
07/28 13:40, 14F

07/28 13:41, , 15F
產品這邊就只要記錄他所屬的分類代號就好 @@
07/28 13:41, 15F

07/28 23:15, , 16F
感謝! 我會多加嘗試的! 我的確是測試時在while後面echo @_@"
07/28 23:15, 16F

07/29 10:46, , 17F
mysql_fetch_assoc()的作用是取出一列資料之後,把指針
07/29 10:46, 17F

07/29 10:46, , 18F
移到下一列,所以迴圈跑第二次的時候就會抓到下一列
07/29 10:46, 18F

07/29 10:47, , 19F
直到最後沒有任何紀錄了,他就會回傳false
07/29 10:47, 19F

07/29 10:47, , 20F
而while就是不斷在執行mysql_fetch_assoc(),直到false
07/29 10:47, 20F

07/29 10:47, , 21F
就跳離while,所以在while後面時$row就會等於false
07/29 10:47, 21F

07/31 18:14, , 22F
已解決 下一頁做處理的頁面 是要GET select的name!
07/31 18:14, 22F

07/31 18:15, , 23F
應該說是取POST>>> $i = $_POST['select1'];
07/31 18:15, 23F

08/20 21:59, , 24F
請使用 PDO,以後 mysql_ 開頭的 function 都會移除
08/20 21:59, 24F
文章代碼(AID): #1JrAZ-y- (PHP)
文章代碼(AID): #1JrAZ-y- (PHP)