PHP使用id更新多行并选择

时间:2012-05-16 21:30:08

标签: php mysql

此代码选中正确选中的复选框的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();
}

1 个答案:

答案 0 :(得分:2)

我同意这些意见,但是,我只是快速回答这个问题。

为了简单起见,我会做这样的事情。数组索引可以简单地从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均为正数。)