我有这张桌子:
在我的SQL中,我将此列命名为“Status”,仅包含两个值:Inactive和Active,默认情况下设置为Inactive。
我的问题是,如果在点击“提交”按钮后检查特定行,如何在我的数据库中将“状态”列更新为“活动”?即使检查的行数超过1行也是如此。我应该使用什么SQL查询(或者如果与PHP结合使用)?
我顺便使用PHP。我已经研究过,似乎无法得到正确的答案。
提前感谢您提供所有帮助/建议/建议。
更新:
我修改了@Vikas Umrao的答案并做了一些修改。每当检查表行时,“状态”行都会成功更新。但是,先前更新的行将保留在阵列中,并且不会重置。我将进一步解释,但在此之前,下面是我使用数据库的工作代码:
SQL (设置自己的连接,我的名字叫做database.php)
CREATE TABLE IF NOT EXISTS `table_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`department` varchar(255) NOT NULL,
`status` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `table_test` (`id`, `name`, `department`, `status`) VALUES
(1, 'Misha', 'Accounting', 'Inactive'),
(2, 'Justin', 'IT', 'Inactive'),
(3, 'Chris', 'HR', 'Inactive');
这是我的整个index.php,因为某些基于Vikas的脚本
<?php
include('database.php');
$query = "SELECT * FROM table_test";
$result = mysql_query($query);
if($result === false) {
die(mysql_error());
}
echo "<form method='post' action='#'>
<h2>Table Content</h2>
<table>
<thead>
<tr style='background-color: rgb(102, 222, 93);'>
<td>Name</td>
<td>Department</td>
<td>Status</td>
<td></td>
</tr>
</thead>
<tbody>";
while($row = mysql_fetch_array($result)){
$row_id = $row['id'];
$name = $row['name'];
$department = $row['department'];
$status = $row['status'];
echo "<tr><td>" . $name . "</td><td>" . $department . "</td><td>" . $status . "</td><td><input type='checkbox' name='id[]' value='" . $row_id . "'/></td></tr>";
}
echo "</tbody></table><input type='submit' value='submit'></form>"; //end form
/***** Update Status *****/
/*print_r($_POST);*/
if(gettype($_POST['id'])=="array"){
foreach($_POST['id'] as $val){
$id_c = $val;
$query2 = "UPDATE table_test SET status = 'Inactive' where id='".$id_c."'";
$result2 = mysql_query($query2);
if($result2 === false) {
die(mysql_error());
}
echo "Status " .$id_c. " is updated. <br>";
}
}
mysql_close();
?>
更新问题:
当我检查一行然后单击“提交”时,数据库中的状态值会发生变化。我回应了更新ID的结果。但是,即使刷新页面后,数据行的更新值仍然存在。
因此,假设我将更新查询更改为活动而不是非活动,如果我刷新页面并且之前更新的行是Misha和Chris',那么即使我不希望它们处于活动状态,它们的状态也将处于活动状态:< / p>
$query2 = "UPDATE table_test SET status = 'Active' where id='".$id_c."'";
因此,每次刷新页面时,即使没有选中,也会不断更新行。如何清除php数组值?我已经看到这个未设置和实例化但似乎无法在这里应用它。我该怎么做?
以下是结果的示例屏幕截图:
谢谢!
=======================
FINAL:
我能够自己解决这个问题。感谢大家!
答案 0 :(得分:1)
你的表格应该是这样的。 <input name="id[]" value="1" type="checkbox" checked="">
的值将是表格的主要ID。
<form method="post">
<table id="status-table">
<thead>
<tr style="background-color: rgb(102, 222, 93);">
<td>Name</td>
<td>Department</td>
<td>Status</td>
<td><input type="checkbox"></td>
</tr>
</thead>
<tbody>
<tr>
<td>Misha</td>
<td>Accounting</td>
<td>Inactive</td>
<td><input name="id[]" value="1" type="checkbox" checked=""></td>
</tr>
<tr>
<td>Justin</td>
<td>IT</td>
<td>Active</td>
<td><input name="id[]" value="2" type="checkbox"></td>
</tr>
<tr>
<td>Chris</td>
<td>HR</td>
<td>Inactive</td>
<td><input name="id[]" value="3" type="checkbox" checked=""></td>
</tr>
</tbody>
</table>
<input type="submit" value="submit">
</form>
你的php代码就像这样:
<?php
//print_r($_POST);
if(gettype($_POST['id'])=="array"){
foreach($_POST['id'] as $val){
$id_c=$val;
$query="update table set status='Active' where id='".$id_c."'";
}
}
?>