首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$_POST数组包含UniqueID的更新记录

$_POST数组包含UniqueID的更新记录
EN

Stack Overflow用户
提问于 2017-01-14 19:43:54
回答 1查看 73关注 0票数 0

我正在尝试编写可以更新表中记录的代码。我有一个带有两个复选框的表单,名为“已修复”,使用的格式为:

代码语言:javascript
复制
<input name="repaired[]" type="checkbox" id="repaired" value="1" />

当表单加载时,它可以逐行包含任意数量的记录,并且每行都有一个“隐藏”表单字段,其中包含该记录的unquieid。

如果用户通过选择“腐蚀”复选框来选择任何记录,然后提交我需要循环遍历每条选定记录并更新表的表单。

我的表格代码:

代码语言:javascript
复制
<form id="form1" name="form1" method="post" action="<?php echo $editFormAction;?>">
<?php 
do { 
    echo $row_Faults['SeqID'];
    echo $row_Faults['SeqHeader'];
    echo $row_Faults['Room'];
    <input name="repaired[]" type="checkbox" id="repaired" value="1" />
    <input name="UniqueID" type="hidden" value="<?php echo $row_Faults['UniqueID'];?>" />
    } while ($row_Faults = mysql_fetch_assoc($Faults));
?>

<input type="image" src="../images/actioned_button.png" name="button" id="button" value="1" />
<input name="MM_update" type="hidden" value="form1" />
<input name="submit" type="hidden" value="submit" />
</form>

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
    $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {

    if(!empty($_POST['UniqueID']) && $_POST['repaired'] == "1"){

        foreach($_POST['repaired'] as $Selected){

//THIS IS WHERE I AM STUCK

        UPDATE QUERY.......

        }
    }
}

这就是我陷入困境的地方,我如何循环遍历$_POST数据并更新"UniqueID“匹配$_POST'UniqueID‘以及如果$_POST’修复‘== 1匹配的记录。

任何帮助或指点我需要做的事都会很棒,

非常感谢您的时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-14 20:12:45

您的代码很少有问题,例如:

  • 运行代码后,您的do-while循环将抛出未定义的变量$row_Faults错误,这是因为它是稍后在while(...);语句中定义的。在本例中,需要使用一个简单的while()循环,如下所示: 时间($row_Faults = mysql_fetch_assoc($Faults)){ .} 另外,您不能像这样在PHP中使用修复和UniqueID <input> HTML元素,它会引发其他错误。
  • 对于唯一ID,不需要为每一行单独的<input>元素,您也可以将其合并到复选框输入元素中,如下所示: 因此,基于以上两点,将do-while循环替换为下面的while循环。 而($row_Faults = mysql_fetch_assoc($Faults)){ echo $row_Faults‘’SeqID‘;echo $row_Faults’‘SeqHeader’;echo $row_Faults‘’Room‘;?>
  • 由于表单提交使用image输入元素,因此没有必要使用单独的hidden提交元素。所以你可以完全删除下面一行, 因此,一旦提交了表单,就可以处理表单并更新相应的检查行, if (isset( $_POST"MM_update“) &$_POST”MM_update“== "form1"){ foreach($_POST‘isset’as $uniqueID => $repairedValue){ // $_POST UPDATE查询}

Sidenote:不使用mysql_*函数,它们在PHP5.5中被取消,并且在PHP7.0中被完全删除。使用mysqlipdo代替。functions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41654234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档