2016-02-14 63 views
2

我正在使用錨標記來運行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

回答

1
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 **來覆蓋「發佈」和「獲取」:如果切換到阿賈克斯。 –

相關問題