如何用复选框更新多个记录,使用循环

问题描述:

我有一个更新表单,它使用循环来回显要更新的记录列表。它包括一个文本字段'句子'和一个复选框'可接受'。 我的foreach工作无法正常工作,并在吞噬数据列,所以现在是时候寻求帮助。先生们和女士们,我怎么写这个?如何用复选框更新多个记录,使用循环

感谢您的帮助。

​​
+1

[**在新的代码,请不要使用'mysql_ *'功能**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。 – Kermit 2013-03-14 17:08:54

+0

谢谢。我打算做出改变,但是这个项目太大了,无法停下来重做。在列表中虽然... – AllThisOnAnACER 2013-03-14 17:10:21

+0

顺便说一句,你能指点我一个好的,易于理解的文章,使转换为mysqli?谢谢 – AllThisOnAnACER 2013-03-14 17:28:01

可接受和句子输入需要的变量结构也可以是数组,如name =“Acceptable []”。然后你可以在你的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)); 
?> 
+0

谢谢SomeSilly,让我用这个工作更多,让你知道。 – AllThisOnAnACER 2013-03-14 18:00:17

+0

DUUDE!你已经杀死了FormZilla。 ('谁吃数据列')感谢。 – AllThisOnAnACER 2013-03-14 18:15:02

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

之前

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

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

这应该给你一些洞察到你想遍历

+0

谢谢。我已经完成了,它回显了受影响记录的列表,但此时正在使用列表中最后一条记录的初始数据更新每条记录。相当烦人。 – AllThisOnAnACER 2013-03-14 17:19:38

+0

如果你可以发布输出,我可能会给你一点洞察,为什么foreach循环不工作。 – zajd 2013-03-14 17:30:14

+0

'阵列 ( [Sentences_Id] =>数组 ( [128] => 128 [197] => 197 [198] => 198 [199] => 199 [200] => 200 [ 201] => 201 [202] => 202 [203] => 203 [205] => 205 ) [句] =>我们打算叫警察。 [可接受] =>可接受 [KT_Update1] =>保存你的建议 )' – AllThisOnAnACER 2013-03-14 17:55:58