如何使用循环更新带有复选框的多个记录


How to update multiple records with a checkbox, using a loop

我有一个更新表单,它使用循环回呼要更新的记录列表。它包括一个文本框"句子"和一个复选框"可接受"。我的每一项努力都不起作用,而且正在吞噬一列又一列的数据,所以是时候寻求帮助了。先生们女士们,我该怎么写呢?

谢谢你的帮助。

<?php 
if( isset($_POST["Sentences_ID"]) ) {
    foreach($_POST['Sentences_ID'] as $key=>$value) {
        $updateSQL = sprintf("UPDATE Sentences SET Sentences=%s, Acceptable=%s WHERE   Sentences_ID=$value",
            GetSQLValueString($_POST['Sentences'], "text"),
            GetSQLValueString($_POST['Acceptable'], "text"),
            ($_POST['Sentences_ID']));
        mysql_select_db($database_name, $name);
        $Result1 = mysql_query($updateSQL, $name) or die(mysql_error());
    }
}
?>

<?php
do {
?>
Sentence:<input type="hidden" name="Sentences_ID[]" id="Sentences_ID[< ?php echo     $row_rsCounting['Sentences_Id'];?>]" value="<?php echo $row_rsCounting['Sentences_Id'];?>"   />
Acceptable:<input type="checkbox" name="Acceptable" id="Acceptable"     value="Acceptable"/></label> | 
<input type="text" name="Sentences" id="Sentences" value="< ?php echo     $row_rsCounting['Sentences'];?>" size="50" />
<?php
} while ($row_rsCounting = mysql_fetch_assoc($rsCounting));
?>

可接受和句子输入也需要是数组,如name="可接受[]"。然后你会在PHP循环中访问它们,比如$_POST['Acceptable'][$key]。但是,我认为不能保证多个输入数组的顺序相同,因此我建议在输入名称中使用Sentence ID。对所有输入都这样做。

像这样…

<?php 
if( isset($_POST["Sentences_ID"]) ) {
    foreach($_POST['Sentences_ID'] as $key=>$value) {
        $updateSQL = sprintf("UPDATE Sentences SET Sentences=%s, Acceptable=%s WHERE   Sentences_ID=$value",
            GetSQLValueString($_POST['Sentences'][$key], "text"),
            GetSQLValueString($_POST['Acceptable'][$key], "text"),
            ($value));
        mysql_select_db($database_name, $name);
        $Result1 = mysql_query($updateSQL, $name) or die(mysql_error());
    }
}
?>

<?php
do {
?>
Sentence:<input type="hidden" name="Sentences_ID[< ?php echo  $row_rsCounting['Sentences_Id'];?>]" id="Sentences_ID[< ?php echo     $row_rsCounting['Sentences_Id'];?>]" value="<?php echo $row_rsCounting['Sentences_Id'];?>"   />
Acceptable:<input type="checkbox" name="Acceptable[< ?php echo     $row_rsCounting['Sentences_Id'];?>]" id="Acceptable" value="Acceptable"/></label> | 
<input type="text" name="Sentences[< ?php echo $row_rsCounting['Sentences_Id'];?>]" id="Sentences" value="< ?php echo $row_rsCounting['Sentences'];?>" size="50" />
<?php
} while ($row_rsCounting = mysql_fetch_assoc($rsCounting));
?>

我的第一个建议是做一些调试。

之前
foreach($_POST['Sentences_ID'] as $key=>$value) {

print_r($_POST['Sentences_ID']);die;

这应该能让你对你要迭代的变量的结构有一些了解