在while语句中选择ID PHP

问题描述:

我在尝试创建一个函数,允许用户删除他们已经离开的帖子。基本上我试图选择一个ID然后将它传递给另一个函数来删除它。目前的代码是删除每个评论,而不仅仅是像我试图链接到ID的评论。在while语句中选择ID PHP

下面是表值

Table eventUpdates 
ID - unique ID. Trying to use this value to delete the post 
eventID - references an eventID from another table 
eventReply - the "message" or response 
eventUserID -ID of the user posting the message 
username -username of the person 
eventTimestamp -timestamp 

所以,目前每个响应被删除。我无法让它删除我发送的ID。

<table border ="1"> 
<? 
$eventUpdates = mysql_query($sql); 
while ($list = mysql_fetch_assoc($eventUpdates)) { 
     echo $updateID; 
       echo '<tr><td>'; 
        echo $list['username'],"</br>", $list['eventTimestamp'],'<br/>'; 
         if($list['eventUserID'] == $userid){ //used for deleting posts. Checks the session to make sure it's the user who made the post 
           ?> 
           <form method="post"> 
           <input type="submit" name="deleteUpdate" value="Delete Update"> 
           </form> 
           <? 
           if(isset($_POST['deleteUpdate'])){ 
            $updateID = $list['ID']; 
            $delete = new postprocessing; 
            $delete->deleteEventUpdate($updateID); 
            echo '<meta http-equiv="refresh" content="0;url=main.php">'; 
           } 
         } 
         echo '</td><td>'; 
         echo $list['eventReply']; 
         echo '</td></tr>'; 
} 

这里是用来删除

function deleteEventUpdate($ID){ 
    mysql_query("delete from eventUpdates where ID = '$ID'"); 
} 
+0

嗯,这会删除C的所有评论ourse。由于您正在循环整个列表,因此每次循环时,都会删除该事件的所有注释。因此,在循环结束时删除所有注释 – 2012-04-25 02:11:30

+0

我在循环之外尝试了同样的事情,但后来我意识到它不知道我试图选择哪个ID。 – user1104854 2012-04-25 02:15:57

+0

以及我猜这就是它,发送一个空白的ID将删除所有内容:) – 2012-04-25 02:17:02

的功能。这是因为你没有指定你想要的职位数组中删除的ID,所以每一个评论,他们创造了“匹配”的删除标准。 $_POST数组看起来像:

$ _POST = array('deleteUpdate'='删除更新');

所以,当你通过事件列表循环,每一个评论用户“拥有”($list['eventUserID'] == $userid)符合条件“isset($_POST['deleteUpdate'])”:

您需要包括与特定的ID隐藏的输入评论要删除并匹配反对,以及:

<form method="post"> 
<input type="submit" name="deleteUpdate" value="Delete Update"> 
<input name='post_id' value="<?php echo $list['ID'];?>" type='hidden' /> 
</form> 

,然后在循环:

if(isset($_POST['deleteUpdate']) && isset($_POST['post_id']) && $_POST['post_id']==$list['ID']){... 
+0

真棒,非常感谢。这是一个漫长的一天,使用隐藏的输入甚至没有想到。谢谢您的帮助! – user1104854 2012-04-25 02:23:26