2014-03-24 25 views
0

我寫了這段代碼,刪除每次點擊數據庫表'community_posts'後的帖子。當我點擊按鈕時,它不會刪除它,他得到的網址爲do=delete&key=THEID,但它不起作用,爲什麼?有人能幫助我嗎!爲什麼不刪除帖子?

// PHP CODE 
if($do == "delete" && is_numeric($key)){ 
     $check = mysql_query("SELECT id FROM community_posts WHERE id = '".$key."' LIMIT 1") or die(mysql_error()); 

     if(mysql_num_rows($check) > 0){ 
       mysql_query("DELETE FROM community_posts WHERE id = '".$key."' LIMIT 1") or die(mysql_error()); 
       $msg = "<center>Neuigkeit wurde erfolgreich gelöscht...</center>"; } else { $msg = "<center>Neuigkeit konnte nicht entfernt werden, versuche es erneut...</center>"; 
     } 
} 

// HTML CODE UND AUSGABE DER DATENBANK 
<form action='' method='post'> 
<?php $getComments = mysql_query("SELECT * FROM community_posts ORDER by id DESC LIMIT 100"); ?> 
<?php while($row = mysql_fetch_array($getComments)){ 
$getUserInfo = mysql_query("SELECT * FROM users WHERE id = '".$row['userid']."'"); 
$roww = mysql_fetch_array($getUserInfo); ?> 

<div class="feedOne fade ptr"> 
     <div class="ph20"> 
       <div class="inner-1 lt" style=""><p style="color:#aeaeae;font-size:13px;"><a href="/community/userprofile/<?php echo $roww['username']; ?>" style="color:orange;text-decoration:none;font-weight:normal;"><?php echo $roww['vorname']; ?></a> &raquo; Open Community</p> 
       <p class=lt style="color:#aeaeae;font-size:11px;"><?php echo $row['posted_on']; ?></p><br /> 
       </div> 
       <div class="rt inner-2"> 
       <p style="color:#333;font-size:13px;"><?php echo $row['story']; ?></p> 
       </div> 
       <div class=cl></div> 
     </div> 

<!-- BEI KLICK SOLL HIERMIT DER ENTSPRECHENDE BEITRAG GELÖSCHT WERDEN --> 
<a href='<?php echo $path_admin; ?>/openfeed?do=delete&key=<?php echo $row['id']; ?>'><img src="/assets/data/images/icons/delete_round.png" alt="delete" /></a> 
<!----> 

</div> 

<?php } ?> 
</form> 
+0

以及究竟如何你正在做$&$關鍵在'如果($做==「刪除」 && is_numeric($鍵)){' –

+0

最有可能的,如果聲明不會評估你想要的方式。刪除代碼看起來沒問題。我不確定在刪除之前是否需要執行初始查詢來檢查行,但是再次看起來,如果它被觸發,它應該可以工作。 – Mattt

+0

$要做的就是==「刪除」,一樣可以在PHP-代碼的第一行看到的,我從數據庫表中的輸出拿到鑰匙community_posts – user3455912

回答

2

URL標題中的變量存儲在$_GET數組中。相反,你的第一行應該是:

if($_GET['do'] == "delete" && is_numeric($_GET['key'])){ 

編輯:您可能要檢查變量設置預先使用isset()方法。

+0

人非常感謝你,它現在可以工作,我已經瞭解了更多,謝謝! – user3455912

+0

請記住腳本還有其他問題。其中:使用不推薦使用的mysql_ *函數,不對數據庫中的值進行編碼以便在html輸出中安全使用,不使用SQL JOIN,而是使用一次一個相關查詢來敲擊數據庫服務器,一些多餘的代碼(如在DELETE之前選擇SELECT)等等......還有改進的空間;-) – VolkerK

0

您需要分配這兩個變量,你在上面運行的if語句前:

// PHP CODE 

if (isset($_GET['do'])){ 
    $do = $_GET['do']; 
} 
if (isset($_GET['key'])){ 
    $key = $GET['key']; 
} 

if($do == "delete" && is_numeric($key)){ 
0

首先,我沒有看到你在哪裏賦值的$do$key變量。這裏是你必須做的:

<?php 
$do = !empty($_GET['do']) ? $_GET['do'] : ''; 
//Prevent SQL injection 
$key = !empty($_GET['key']) ? (int)$_GET['key'] : ''; 
// ALL OTHER PHP CODE GOES HERE 

?> 
+0

需要一個$的變量$ key存在 – larsAnders

+0

確實,修正:) – bodi0