[英]How to delete rows of database results using checkbox
我正在尝试使用Checkboxes删除MySQL日期行。 当我在下面应用脚本时,它不会执行我想要的操作。 没有执行动作。
Undefined variable: checkbox in C:\\wamp\\www\\project\\topics.php on line 108
我试图回显发送给执行的实际SQL,它给出了
DELETE FROM forum_topics WHERE topic_id = intval()
的PHP
<?php
$topics = mysql_query(" SELECT topic_id , topic_head ,
topic_tags , topic_owner , topic_date
FROM forum_topics ") or die (mysql_error());?>
<form method='post' action='topics.php'>
<div class='admin'><table>
<tr>
<td >DELETE</td>
<td >ID</td>
<td>Title</td>
<td>Tags</td>
<td>Owner</td>
<td>Date</td>
</tr>
<?php
while($row=mysql_fetch_array($topics)){ ?>
<tr align=center>
<td align="center" bgcolor="black">
<input name="checkbox[]" type="checkbox" value="<?php echo $row['topic_id'];?>">
</td>
<td><?php echo intval($row['ID']); ?></td>
<td><?php echo htmlspecialchars($row['topic_head']); ?></td>
<td><?php echo htmlspecialchars($row['topic_tags']); ?></td>
<td>><?php echo htmlspecialchars($row['topic_owner']); ?></td>
<td>
<?php
$date = date_create($row['topic_date']) ;
echo date_format($date, 'F j, Y, g:i A');
?>
</td>
<?php echo"
</tr>";
}?>
<td ><input name="delete" type="submit" value="DELETE"></td>
<?php
// Check if delete button active, start this
if (isset($_POST['delete'])) {
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM forum_topics WHERE topic_id = intval($del_id)";
mysql_query($sql);
}
}
?>
</table>
</form>
</div>
好吧,您需要将删除逻辑重写为这样的形式
if (isset($_POST['delete']) && isset($_POST['checkbox'])) {
foreach($_POST['checkbox'] as $del_id){
$del_id = (int)$del_id;
$sql = "DELETE FROM forum_topics WHERE topic_id = $del_id";
mysql_query($sql);
}
header('Location: topics.php');
}
另外,由于弃用过程已经开始,因此请考虑不要使用mysql_*
函数。
编辑新增错过括号中if
条件
编辑另外,我建议在表单提交后将用户重定向到同一页面,这样可以防止页面刷新时重复提交表单。 查看更新的代码。 当然,删除逻辑应该放在进行任何选择之前
您在哪里从数组中获取值?
你应该有类似的东西
$array = $_POST[checkbox];
那么你可以做到
foreach($array as $delID){
$sql = "DELETE FROM forum_topics WHERE topic_id = $delID";
mysql_query($sql);
}
num值的验证先于一切
尝试替换这些行:
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
为了这个
$count=count($_POST['checkbox']);
for($i=0;$i<$count;$i++){
$del_id = $_POST['checkbox'][$i];
如果启用了php指令register_globals,则$checkbox
变量应该可以工作,但是由于安全性原因,该指令自PHP 5.3.0起已被弃用,而PHP 5.4.0以来已被取消,该指令已经被默认禁用了。问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.