使用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也解决了我的问题。

+2

尝试'window.location.href = “?viewtopic.php deltopic =” + TID;' – Matt

+0

虽然,阿贾克斯通过jQuery的会好很多 – Matt

+0

我不太熟悉使用ajax和mysql数据库。我把它改成了'window.location.href =“viewtopic.php?deltopic =”+ id;',遇到了一些其他问题,但把它弄清楚^ ^谢谢。 – Moonblaze

window.location.href = "?viewtopic.php&deltopic=" + tid; 

将导致URL,其中 “viewtopic.php” 是URL QUERY的一部分。也许你希望它在PATH

window.location.href = "viewtopic.php?deltopic=" + tid; 
+0

啊我其实可能会看到我可能做的错误。在我的index.php中,我使用$ _GET方法检索要在页面上显示的信息,具体取决于$ _GET的设置。当我有'?viewtopic.php&deltopic =“+ tid;'我不是指”.php“部分在那里。 – Moonblaze

+0

太棒了!我们没有在您的问题中看到PHP文件名,所以我推测这是“viewtopic.php”。谢谢 –

+1

展望未来,我建议你使用** $ _REQUEST **而不是** $ _ GET **来覆盖“发布”和“获取”:如果切换到阿贾克斯。 –