Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 标记正确复选框并更新mysql中的正确行_Php_Mysql_Forms_Function - Fatal编程技术网

Php 标记正确复选框并更新mysql中的正确行

Php 标记正确复选框并更新mysql中的正确行,php,mysql,forms,function,Php,Mysql,Forms,Function,我找不到正确的方法如何从复选框更新mysqli中的正确行。如果我提交按钮,它将更新所有字段。如果我在循环时在外部使用ifset,它只对第一行进行更改。你能提出一些建议吗 功能显示命令{ $query=querySELECT*FROM orders orders BY ORDER\u id DESC; 确认$query; 而$row=fetch\u数组$query{ $order_id=$row['order_id']; $order_amount=$row['order_amount']; $o

我找不到正确的方法如何从复选框更新mysqli中的正确行。如果我提交按钮,它将更新所有字段。如果我在循环时在外部使用ifset,它只对第一行进行更改。你能提出一些建议吗

功能显示命令{ $query=querySELECT*FROM orders orders BY ORDER\u id DESC; 确认$query; 而$row=fetch\u数组$query{ $order_id=$row['order_id']; $order_amount=$row['order_amount']; $order_transaction=$row['order_transaction']; $order_status=$row['order_status']; $order\u currency=$row['order\u currency']; $order_date=$row['order_date']; $order\u date=strotime$order\u date; $order_date=日期'd-m-Y',$order_date; $checked=$row['mark_as_done']; // 检查是否标记为完成或空 如果$checked==完成{ echo$checked_status=已检查; }否则{ echo$checked_status=; } 如果设置为提交,则更新表 ifisset$\u POST['submit']{ 全球美元连接; $value=$_POST['done']; $update_query=更新订单设置标记_as_done=?其中订单id=?;; $stmt=mysqli\u stmt\u init$connection; 如果!mysqli\u stmt\u准备$stmt,$update\u查询{ echo-SQL失败; } 否则{ mysqli_stmt_bind_param$stmt,ss,$value,$order_id; mysqli_stmt_execute$stmt; } } //从数据库中读取信息
$orders=这有点令人困惑/费解,但这可能更符合您试图实现的目标。生成的表单需要某种方式来引用它们要更新的记录-在这种情况下,order\u id似乎是正确的选择。为此,将提交一个带有order\u id值的隐藏字段ted的表单仍然不清楚除了提供“完成”的值之外,应该做什么


如果有关系的话,我会注意到DELIMETER不是一个单词。请使用正确的缩进,这样您的代码实际上是可读的。生成的每一行的表单都应该有一个与记录相关的ID,这样更新将使用正确的记录。现在看来,它似乎不是caseaction=index.php?ordersfunction display_orders(){ $query = query( "SELECT * FROM orders ORDER BY order_id DESC"); confirm($query); while($row = fetch_array($query)) { $order_id = $row['order_id']; $order_amount = $row['order_amount']; $order_transaction = $row['order_transaction']; $order_status = $row['order_status']; $order_currency = $row['order_currency']; $order_date = $row['order_date']; $order_date = strtotime($order_date); $order_date = date('d-m-Y', $order_date); $checked = $row['mark_as_done']; if( $checked === "done" ){ $checked_status = "checked"; }else{ $checked_status = ""; } $orders = <<<DELIMITER <tr> <td><a href="index.php?order_details&id={$order_id}">{$order_id}</a></td> <td>{$order_transaction}</td> <td>{$order_amount}</td> <td>{$order_currency}</td> <td>{$order_status}</td> <td>{$order_date}</td> <td><a class="btn btn-danger" href="index.php?delete_order_id={$order_id}"><span class="glyphicon glyphicon-remove"></span></a></td> <td> <form action='index.php?orders' method='post'> <input type='checkbox' name='done' value='done' {$checked_status} /> <input type='hidden' name='order_id' value='{$order_id}' /> <input class='btn btn-primary btn-sm' type='submit' name='submit' value='submit'> </form> </td> </tr> DELIMITER; echo $orders; } if( isset( $_POST['submit'], $_POST['order_id'], $_POST['done'] ) ){ global $connection; $id = $_POST['order_id']; $value = $_POST['done']; $update_query = "UPDATE orders SET mark_as_done=? WHERE order_id =?;"; $stmt = mysqli_stmt_init($connection); if( !mysqli_stmt_prepare($stmt, $update_query)){ echo "SQL failed"; } else { mysqli_stmt_bind_param( $stmt, "ss", $value, $id ); mysqli_stmt_execute($stmt); } } }