我不确定如何提出这个问题。我认为这是程序问题。
<input type="hidden" name="1[]" value="dummy">
<input type="radio" name="1[]" value="5">
<label> Very Good </label>
<input type="radio" name="1[]" value="4">
<label> Good </label>
<input type="text" name="1[]" size="20">
<br>
<input type="hidden" name="2[]" value="dummy">
<input type="radio" name="2[]" value="5">
<label> Very Good </label>
<input type="radio" name="2[]" value="4">
<label> Good </label>
<input type="text" name="2[]" size="20">
$ _ POST输出:
[1] => Array
(
[0] => Text misc
)
[2] => Array
(
[0] => 5
[1] =>
)
从这个I构造和INSERT语句。
INSERT INTO coached_tracked (coached_id, value, note)
VALUES ($key, $value[0], $value[1]);
这是从输入动态生成的。单选按钮,文本字段对。
如何处理未选择无线电且文本字段具有值的事件,就像在第一个实例中一样。我想要没有选择任何选项,所以似乎没有要求默认值。我尝试使用和不使用虚拟值(我看到一个示例暗示隐藏字段作为可能的解决方案。)
建议。
答案 0 :(得分:1)
您不应该告诉数据库使用什么ID。让数据库本身通过使用自动递增列来确定。
首先,从逻辑输入名称开始。使用数字非常混乱,看着你的代码,我完全不知道你在做什么。我们还希望所有内容都进入相同的PHP $_POST
变量,而不必迭代所有可能的数字组合。这意味着我们可以迭代单个数组。
假设您正在向数据库添加教练,因此从逻辑上讲,我们将从:
开始<input name="coach">
现在,当我们想要添加多个教练而不只是一个时,我们可以使用HTML数组名称,但我建议您对它们进行硬编码,而不是在HTML中自动递增,这应该会在以后简化。我们还将其复数为coaches
:
<?php
for ($i=0;$i<10;$i++) {
?>
<input name="coaches[<?=$i?>]">
<?php
}
现在,如果每个教练都包含某些属性,让我们说name
,salary
,note
等,我们可以将这些属性添加到输入名称中,如下所示:
<?php
for ($i=0;$i<10;$i++) {
?>
<input name="coaches[<?=$i?>][name]">
<input name="coaches[<?=$i?>][salary]">
<input name="coaches[<?=$i?>][note]">
<?php
}
然后在PHP中,您只需迭代$_POST['coaches']
,然后按照您希望的方式使用每个教练的属性:
if (isset($_POST['coaches'])) {
foreach ($_POST['coaches'] as $coach) {
$name = $coach['name'];
$salary = $coach['salary'];
$note = $coach['note'];
// Now execute the query:
// INSERT INTO coached_tracked (name, salary, note)
// VALUES ($name, $salary, $note);
}
}
注意:请记住使用带有绑定参数的预准备语句来清理任何用户提供的数据,以确保您不会对SQL注入攻击开放。