我正在构建一个页面,该页面会写出不同数量的类别,然后在每个类别下写出与该类别相关联的单位。每个类别部分都是一个单独的表单,其中的字段会重复并根据它们所属的行进行命名。布局是这样的:
第1类
- 第1单元更新字段
- 第2单元更新字段
- 第3单元更新字段
提交第1类的按钮
等
每个字段的名称都相同,最后添加了单位编号:
- 功能1,功能2,功能3等
给定类别中的总行数保存在变量 $ id#中,其中#是类别的ID(例如:$ id1,$ id2,$ id3等)。
我已经解决了大部分问题。但是,如果表单已更改,我想循环并执行SQL查询,这就是我遇到麻烦的地方。在这一点上,我不知所措。这是我的代码的简化版本:
if (isset($_POST['submit'])) {
$form = $_POST['form']; //save which category we're on in a variable.
for ($i = 1; $i <= ${id.$form}; $i++) { //I think the problem is here
$Feature = $_POST['Feature'.$i];
$update = "UPDATE Units
SET Feature ='$Feature'
WHERE ID='$i'";
if (($Feature!=${initialFeature.$i})) {
$updateQuery = mysqli_query($dbc, $update);
}
}
}
我该如何使这项工作?有更好的方法吗?
答案 0 :(得分:0)
我这样做的方法是在字段名中使用数组。
<input type="text" name="id[]" value="$foo">
然后在表单的操作页面上
$id = $_POST['id'];
for($i=0;$i<sizeof($id),$i++){
...//do something here using $id[$i] to select elements in the array
}
我认为这就是你要做的事。
答案 1 :(得分:0)
试试这个
for($i=0; $i<3; $i++)
echo '<input type="text" name="feature[]" value=""/>';
echo '<input type="submit" name="go" value="submit">';
if (isset($_POST['go'])) {
$feature = $_POST['feature'];
if(is_array($feature)){
for ($i = 1; $i <= count($feature); $i++) {
$update = "UPDATE Units
SET Feature ='$feature[$i]'
WHERE ID='$i'";
$updateQuery = mysqli_query($dbc, $update);
}
}else{
$update = "UPDATE Units
SET Feature ='$feature'
WHERE ID='$i'";
$updateQuery = mysqli_query($dbc, $update);
}
}
希望此代码可以解决您的问题