2012-06-05 24 views
0

我運行一個腳本來創建訂單表單,這只是一個非常小的示例。我不擅長PHP和動態表單。它從MySQL數據庫中提取數據。處理動態php/mySql創建的表單設置

<td> 
<h3>Round Cuts</h3> 
<?php while($row = mysql_fetch_array($round_cuts)){ 
$round_box_value = @$row["meat_names"]; 
$round_box_value_name = @$row["meat_names"]; 
echo " <input type=\"checkbox\" name=\"round_box_value\" value=\"$round_box_value_name\">  $round_box_value_name"; 
echo "<br>"; 
}?> 
</td> 

我曾經真的只建基本的聯繫方式,我怎麼能處理一個動態的形式是這樣的。如果一切都失敗了,我會把所有可能的元素和程序設計成它不是動態的。但必須有更好的方法。

即使鏈接到網站也會有所幫助。我一直在尋找解決方案。謝謝。

+0

爲什麼你使用''@壓制的錯誤?如果你已經處理靜態形式,就是動態的區別?它們的處理方式完全相同。 – Mike

+0

改爲round_box_value []的名稱,然後你在$ _ POST循環一個很好的陣列通過 – 2012-06-05 21:42:18

回答

0

我會假設你的表作爲id

開始主鍵與一個小的改動你的複選框:

<?php 
while($row = mysql_fetch_array($round_cuts)){ 
    echo sprintf('<label><input type="checkbox" name="round_box_value[]" value="%s"> %s</label><br>', $row['id'], $row['meat_names']); 
} 
?> 

名字現在有一個[]末告訴PHP是值的數組+我已將複選框包裝在標籤中以方便使用。

然後,當你處理表單,你可以簡單地通過round_box_value迭代像這樣

<?php 
foreach ($_POST['round_box_value'] as $id) { 
    // $id is the table reference from your previous table 
} 

// or query all the rows selected 
$ids = array_map('intval', $_POST['round_box_value']); // "basic" sql injection handler 
$sql = "SELECT * FROM table WHERE id IN (".implode(",", $ids).")"; 

應該產生這樣的:

SELECT * FROM table WHERE id IN (2,5,7) 
+0

它的工作混合你的代碼和一個小試錯讓我來解決。感謝幫助。 – bradpotts