我正在尝试使用复选框删除 MySQL 日期行。当我应用下面的脚本时,它没有执行我想要它执行的操作。没有执行操作..我明白了
undefined variable :第 108 行 C:\wamp\www\project\topics.php 中的复选框
我尝试回显正在发送执行的实际 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_*
函数,因为弃用过程已经开始。
EDIT 在 if
条件中添加了遗漏的括号
编辑 我还建议在提交表单后将用户重定向到同一页面,这样可以防止在页面刷新时重复提交表单。请参阅更新的代码。当然,删除逻辑应该放在你做出任何选择之前
关于php - 如何使用复选框删除数据库结果行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396096/