我想結合從這裏兩個答案: counting how many checkbox are checked php/html 這裏: validating input types "checkbox" and "number" php/html插入值到數據庫
我的目標是要算多少複選框被選中,並與沿插入他們的價值觀號碼輸入中的數字值。
我發現其他各種關於它的帖子,但無法找出答案。
下面是代碼:
echo '<form action="" method="post">';
然後,我有一個循環,在那裏我創造我的錶行,用的複選框。 其中$ id = $ row [0]在每個循環上更新,這是與我的條目相同的id。 (的
echo '<td style="vertical-align: top;">' . $row[0] . '</td>';
的輸出顯示正確的ID)
echo '<tr>';
echo "<td style='vertical-align: top;'><input type='checkbox' name='choice[$id][id]' value='$id'></td>";
echo "<td style='vertical-align: top;'><input type='number' name='choice[$id][order]' size='20'></td>";
echo '</tr>';
echo '<b> <input type="submit" value="Insert"></b>';
然後,在接下來的頁面上,我有這樣的:
$var_checkbox=$_POST['choice'];
$sql_var_id = "SELECT id FROM custom_form WHERE id=(SELECT max(id) FROM custom_form)";
$var_id_result = mysqli_query($link,$sql_var_id);
$var_id = mysqli_fetch_array($var_id_result);
$count=count($var_checkbox[$var_id[0]]);
for($i=0; $i<$count; $i++){
if($var_checkbox[$i]!= NULL){
$sql1 = sprintf("INSERT INTO custom_form_has_property (custom_form_id,property_id,field_order) VALUES ('%d','%d','%d');",
$var_id[0],
$var_checkbox[$var_id[0]][id],
$var_checkbox[$var_id[0]][order]
);
$result1 = mysqli_query($link,$sql1);
}
}
的問題是,沒有任何的價值複選框或數字被插入。
(作爲一個方面說明,試圖更具體) 如果相反的矩陣,我用
echo "<td style='vertical-align: top;'><input type='checkbox' name='choice[]' value='$row[0]'></td>";
echo '<td style="vertical-align: top;"><input type="number" name="order[]" size="2"></td>';
而且
$var_checkbox=$_POST['choice'];
$order = $_POST['order'];
然後
echo "Orders: $order[0],$order[1],$order[2],$order[3],$order[4],$order[5],$ordemr[6]";
echo "Choices: $var_checkbox[0],$var_checkbox[1],$var_checkbox[2],$var_checkbox[3],$var_checkbox[4],$var_checkbox[5],$var_checkbox[6]";
將輸出
個訂單:1日,2日,3日,選擇:1,3,13 ,,,,
我需要從複選框choiced以某種方式鏈接到從數字字段的命令。實現這一點的唯一方法是,如果它們具有相同的名稱,但具有不同的索引,這就是爲什麼我有矩陣,在第一個索引中,它保存了在每個循環中生成的id號,並在第二個,實際的名稱,這使得它們之間的區別(ID和順序)。
我嘗試了各種其他的東西,但它都回到了同樣的問題...... order(number)的值存儲在數組中,即使爲null,而選項的值(複選框)也不存在。 我可以做一個array_filter(),但不能保證用戶不會輸入訂單,而不會勾選選擇複選框。 如果我將比較選擇的長度和順序的長度,過濾後,如果他們輸出相同的大小,仍然不能保證,用戶沒有選中第x行的複選框,並在順序字段中添加了一個值,在線上。
也許有一種方法可以將未檢查的值傳遞給選擇[]變量爲空,它與[]中的順序相同?
您目前正在混合不同的MySQL API與mysql_'和'mysqli_'。您希望使用'mysqli_real_escape_string()'而不是'mysql_real_escape_string()',其中['mysqli_real_escape_string()'](http://php.net/manual/en/mysqli.real-escape-string.php)要求將數據庫連接作爲第一個參數傳遞。 – 2015-01-21 04:00:53
@Fred,他根本不需要逃避那些,因爲它們是數字(參見'%d'?)。 – 2015-01-21 04:01:58
我知道,我已經嘗試過兩種方法,但是我對mysqli_real_escape_string()有不好的體驗。 – 2015-01-21 04:02:31