2012-05-10 52 views
0

下面是一個顯而易見的非工作代碼,我正在尋找一個示例。複選框選項 - 選擇決定插入到數據庫中的內容

可以說這是一個晚餐菜單,回聲是當前所有存儲在數據庫中的食物。用戶只選擇他們想要的食物,並將這些選擇插入到另一個表格中。

例:

<form method="post" action="entryform3.php"> 
<?php 

SELECT * FROM foods ...etc...etc... 

//Say for example whats echoed below at the moment is value: pizza, apple, steak...etc. So this will echo atleast 3 entries. 

echo "For dinner, I'd like ". $result['food'] ."?"; 
echo "<input type=\"checkbox\" name=\"check\" />Click Me<hr></input>"; 
echo "<input type=\"hidden\" name=\"item_name\" value=\"$result['food']\"/>"; 

?> 

<input type="submit" value="Add Selected Foods" name="submit"></form> 


------------entryform3.php----------- 
<?php 

$food = $_POST['food']; 

if (isset($_POST['check'])) { 


INSERT INTO selectedfoods "(foods) VALUES '$food'"; 


} 

//made up example... but if user check marks only apple, and steak from the echo, I want only apple and steak to be inserted into database. 
?> 

我知道有缺失的MySQL等,但我的問題在於與個人價值捆綁在一起的複選框按鈕。我使用這個例子的部分工作代碼僅檢查最後一個回顯選擇,如果檢查了任何一種食物。

因此,它不會將正確的食物選擇發送到數據庫中,只有最後一個回顯 - if語句只會注意是否選中了任何一個複選框。

謝謝!

+1

沒有嵌入引號內的字符串數組引用。你會從PHP獲得語法警告。 OK:'echo「$ x [a]」',不好:'echo「$ x ['a']」'。也可以(並且首選):'echo「{$ x ['a']}」'。 –

回答

1

看起來你錯過了複選框的名稱作爲數組。例如,你可以寫你的複選框,這樣的:

<input type="checkbox" name="box[]" value="name_of_food" />Name_of_Food<br /> 
....... 
....... 

然後當你得到的結果,只是這樣做:

<?php 
     if(isset($_POST['check'])){ 
      $foods = $_POST['box']; 

      foreach($foods as $food){ 
       echo $food." <br />"; 
      } 
     } 
?>