此代码获取正确选中的复选框的 ID,但它从我的第一个选择中选择选择下拉列表,而不是我更改的那个。有没有办法来解决这个问题?我正在使用
<select name="status[]"><option value="1">active</option><option value="0">inactive</option></select>
这是我的流程代码。
if (isset($_POST['submit'])) {
// find out how many records there are to update
$size = count($_POST['id']);
// start a loop in order to update each record
$i = 0;
while ($i < $size) {
// define each variable
$id = $_POST['id'][$i];
$status= $_POST['status'][$i];
// do the update and print out some info just to provide some visual feedback
$query = "UPDATE users SET status = '$status' WHERE id = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
print "$status | $id<br /><br /><em>Updated!</em><br /><br />";
++$i;
}
mysql_close();
}
我同意这些评论,但是,我只会快速回答这个问题。
为了简单起见,我会在 HTML 中做类似的事情。数组索引可以简单地从 PHP 中的计数器回显或静态输入,如果它不会基于任何其他内容而改变的话。只需为每个项目增加此索引即可。
<input type="checkbox" name="id[0]" value="1"> Some Text
<select name="status[0]">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
现在是 PHP
if (isset($_POST['submit'])) {
foreach($_POST['id'] as $i=>$value) {
if($value == 1) {
// define each variable
$id = $_POST['id'][$i];
$status= $_POST['status'][$i];
// do the update and print out some info just to provide some visual feedback
$query = "UPDATE users SET status = '$status' WHERE id = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
print "$status | $id<br /><br /><em>Updated!</em><br /><br />";
}
}
mysql_close();
}
编辑:
我忘了提到您可以将复选框的值设置为您需要的任何值。只需确保 if($value==1)
检查有效结果(例如 >0
如果您的所有 ID 都是正数)。