插入值到数据库
我想结合从这里两个答案: 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行的复选框,并在顺序字段中添加了一个值,在线上。
也许有一种方法可以将未检查的值传递给选择[]变量为空,它与[]中的顺序相同?
这是什么?choice[.$id.]
?什么是点?
我相信这是错误!
您可能试图将$id
连接到字符串之前,并忘记将其删除?
更正行:
echo "<td style='vertical-align: top;'><input type='checkbox' name='choice[$id][id]' value='$id'></td>";
这是echo“选项:$ var_checkbox [1] [id],$ var_checkbox [1] [order](也删除了点)的输出:”选项:Array [id],Array [order]“ – 2015-01-21 04:30:25
有一些方法来做到这一点..
你必须通过jQuery在计算总的没有选中的复选框,并设置在隐藏字段值的那些查看每个复选框上的检查或在表格提交
你必须采取计数器插入部分和保存ID和最后更新ids值与计数器值在数据库中...
是的,我正在考虑类似的东西...计算总行数,通过隐藏输入添加值 然后对于每个循环,直到我 2015-01-21 05:04:13
为什么你用我i
和复选框名称“choice []”只会在数组中输入复选框的值。 – 2015-01-21 05:08:55
您目前正在混合不同的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