PHP:使用每行的复选框值更新数据库
PHP: Update database with checkbox values for each row
我目前正在努力显示一个包含警报列表的 table,其中每一行都包含一个复选框,用于确定用户是否已查看该警报。这是
an image:
到目前为止,我设法 check/uncheck 给定复选框在数据库中的状态。我想做的,但不知道如何做,允许用户 check/uncheck 一个复选框并立即用这个新状态更新数据库,而无需按下提交按钮。我现在拥有的代码如下。
<div class="card-body table-responsive p-0">
<form action=modules/alarms.php method="POST">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>ID</th>
<th>Tipus</th>
<th>Data</th>
<th>Vista</th>
</tr>
</thead>
<tbody>
<?php
foreach ($result->fetchAll() as $row){
if ($row[4] == 1){
$status = "checked";
}else{
$status = "";
}
echo
'<tr data-widget="expandable-table" aria-expanded="false">
<td>'.$row[0].'</td>
<td>'.$row[1].'</td>
<td>'.$row[2].'</td>
<td><input type="checkbox" name="chk1[]" value="viewed" '.$status.'></td>
</tr>
<tr class="expandable-body">
<td colspan="5">
<p>
<video width="416" height="416" controls>
<!-- el 42 es la cabecera C:/... fins videos-->
<source src="'.substr($row[3], 42).'" type="video/mp4">
Your browser does not support the video tag.
</video>
</p>
</td>
</tr>';
}
?>
</tbody>
</table>
还有我的 PHP 代码(我没有更新数据库值的代码,但我会弄清楚的。我想知道如何检索值每行的复选框及其 ID,以便我可以在数据库中更新它。
$ei = $_POST['chk1'];
if ($_POST["chk1"] == "chk1") {
for ($i = 0; $i < sizeof($checkbox1); $i++) {
print_r($checkboxl[$i]);
}
}
为了解决这个问题,首先我必须在复选框输入中添加一些字段。通过这些更改,table 生成如下:
<tr data-widget="expandable-table" aria-expanded="false">
<td>'.$row[0].'</td>
<td>'.$row[1].'</td>
<td>'.$row[2].'</td>
<td><input type="checkbox" name="id" id="viewed" value="'.$row[0].'" '.$status.'></td>
</tr>
完成后,只需添加一个脚本,该脚本将从单击的复选框中检索值并将它们传递给必要的 PHP 函数:
$("input").change(function() {
if ($(this).is(':checked')){
var viewed=1;
}else{
var viewed = 0;
}
var id = $(this).val();
$.ajax({
url:"modules/alarms.php",
method:"POST",
data:{viewed:viewed,id:id,},
success: function(data){
},
});
请注意'url'字段是我们PHP函数实现的相对路径。
现在,只需使用复选框值(我正在使用 PDO 对象)更新数据库,如下所示:
<?php
if(isset($_POST["viewed"])) {
$id = $_POST["id"];
$viewed = $_POST["viewed"];
$sql="UPDATE `alarms` SET `viewed` = '$viewed' WHERE (`id` = '$id')";
if($connection->query($sql) === TRUE){
echo "Success";
} else {
echo "error" . $sql . "<br>".$connection->error;
}}?>
我目前正在努力显示一个包含警报列表的 table,其中每一行都包含一个复选框,用于确定用户是否已查看该警报。这是 an image:
到目前为止,我设法 check/uncheck 给定复选框在数据库中的状态。我想做的,但不知道如何做,允许用户 check/uncheck 一个复选框并立即用这个新状态更新数据库,而无需按下提交按钮。我现在拥有的代码如下。
<div class="card-body table-responsive p-0">
<form action=modules/alarms.php method="POST">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>ID</th>
<th>Tipus</th>
<th>Data</th>
<th>Vista</th>
</tr>
</thead>
<tbody>
<?php
foreach ($result->fetchAll() as $row){
if ($row[4] == 1){
$status = "checked";
}else{
$status = "";
}
echo
'<tr data-widget="expandable-table" aria-expanded="false">
<td>'.$row[0].'</td>
<td>'.$row[1].'</td>
<td>'.$row[2].'</td>
<td><input type="checkbox" name="chk1[]" value="viewed" '.$status.'></td>
</tr>
<tr class="expandable-body">
<td colspan="5">
<p>
<video width="416" height="416" controls>
<!-- el 42 es la cabecera C:/... fins videos-->
<source src="'.substr($row[3], 42).'" type="video/mp4">
Your browser does not support the video tag.
</video>
</p>
</td>
</tr>';
}
?>
</tbody>
</table>
还有我的 PHP 代码(我没有更新数据库值的代码,但我会弄清楚的。我想知道如何检索值每行的复选框及其 ID,以便我可以在数据库中更新它。
$ei = $_POST['chk1'];
if ($_POST["chk1"] == "chk1") {
for ($i = 0; $i < sizeof($checkbox1); $i++) {
print_r($checkboxl[$i]);
}
}
为了解决这个问题,首先我必须在复选框输入中添加一些字段。通过这些更改,table 生成如下:
<tr data-widget="expandable-table" aria-expanded="false">
<td>'.$row[0].'</td>
<td>'.$row[1].'</td>
<td>'.$row[2].'</td>
<td><input type="checkbox" name="id" id="viewed" value="'.$row[0].'" '.$status.'></td>
</tr>
完成后,只需添加一个脚本,该脚本将从单击的复选框中检索值并将它们传递给必要的 PHP 函数:
$("input").change(function() {
if ($(this).is(':checked')){
var viewed=1;
}else{
var viewed = 0;
}
var id = $(this).val();
$.ajax({
url:"modules/alarms.php",
method:"POST",
data:{viewed:viewed,id:id,},
success: function(data){
},
});
请注意'url'字段是我们PHP函数实现的相对路径。
现在,只需使用复选框值(我正在使用 PDO 对象)更新数据库,如下所示:
<?php
if(isset($_POST["viewed"])) {
$id = $_POST["id"];
$viewed = $_POST["viewed"];
$sql="UPDATE `alarms` SET `viewed` = '$viewed' WHERE (`id` = '$id')";
if($connection->query($sql) === TRUE){
echo "Success";
} else {
echo "error" . $sql . "<br>".$connection->error;
}}?>