使用Javascript和PHP从数据库中删除项目
我正在使用锚标记来运行JS函数confirm(),并且如果用户单击了好的话,它会添加“deltopic = id”,并使用$ _GET方法来获得“deltopic”删除特定项目,但它似乎没有找到$ _GET [“deltopic”]使用Javascript和PHP从数据库中删除项目
<script language="JavaScript" type="text>
function deltopic(title, tid) {
if(confirm("Are you sure you want to delete '" + title + "'")){
window.location.href = "?viewtopic.php&deltopic=" + tid;
}
}
</script>
<?php
if(isset($_GET['deltopic'])){
if($_GET['deltopic'] !=='1'){
$query = "DELETE FROM `bkg`.`bkg_topics` WHERE `bkg_topics`.`topic_id` = :topicid";
$query_params = array(':topicid' => $_GET['deltopic']);
try{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
header('Location: index.php?forums&action=deleted');
exit;
} catch(PDOException $e) {
$error[] = "An error has occured. Please try again later.";
}
}
echo "deltopic is set";
}
我最后添加的回声只是为了看看它的检查,如果deltopic
isset,或者如果它在我的SQL中是一个错误,我只是没有看到。但是我没有看到“deltopic已经设置”了。
我不知道我做错了什么和/或我忘记了什么。我有类似这样的代码,确实有效,并仔细检查了它。
编辑:我看到了我在'window.location.href'字符串中的错误,我在那里添加.php到?viewtopic的末尾,使它成为?viewtopic.php
。删除.php也解决了我的问题。
window.location.href = "?viewtopic.php&deltopic=" + tid;
将导致URL,其中 “viewtopic.php” 是URL QUERY的一部分。也许你希望它在PATH:
window.location.href = "viewtopic.php?deltopic=" + tid;
啊我其实可能会看到我可能做的错误。在我的index.php中,我使用$ _GET方法检索要在页面上显示的信息,具体取决于$ _GET的设置。当我有'?viewtopic.php&deltopic =“+ tid;'我不是指”.php“部分在那里。 – Moonblaze
太棒了!我们没有在您的问题中看到PHP文件名,所以我推测这是“viewtopic.php”。谢谢 –
展望未来,我建议你使用** $ _REQUEST **而不是** $ _ GET **来覆盖“发布”和“获取”:如果切换到阿贾克斯。 –
尝试'window.location.href = “?viewtopic.php deltopic =” + TID;' – Matt
虽然,阿贾克斯通过jQuery的会好很多 – Matt
我不太熟悉使用ajax和mysql数据库。我把它改成了'window.location.href =“viewtopic.php?deltopic =”+ id;',遇到了一些其他问题,但把它弄清楚^ ^谢谢。 – Moonblaze