2015-09-07 3 views
0

Я создаю очень простой форум с возможностью комментировать сообщения. Как вы можете видеть, этот код показывает коммиты, и когда автор комментариев равен зарегистрированному пользователю, он должен показать кнопку удаления, чтобы удалить комментарий. Проблема в том, что когда я нажимаю кнопку «Удалить», она удаляет все комментарии по почте, а не только комментарий с кнопкой «Удалить» рядом с ней.MYSQL удалить определенную строку строки PHP

Мой стол «Комментарии» имеет столбцы ID, discid, comment_username, комментарий и COMMENT_TIME, в котором discid столбец «комментарии» относится к колонке идентификаторов в таблице «dicussions»

<?php 

    $id = mysql_real_escape_string($_GET['id']); 
    $query = 'SELECT * FROM discussions WHERE `id` = '.$id.' LIMIT 1'; 
    $result = mysql_query($query); 
    $row = mysql_fetch_array($result); 

    ?> 
      <h2><? echo $row['category'] . $row['topic']; ?></h2> 
      <div>Posted on <? echo $row['date_time']; ?> by <? echo $row['username'] ?></div> 
      <div><? echo $row['discussion']; ?></div> 

    <? 

$result_comments = mysql_query("SELECT * FROM comments WHERE discid = $id ORDER BY comment_time ASC"); 

     while ($record = mysql_fetch_array($result_comments)) 

     { 

     ?> 
       <form action="" method="POST" > 
        <? echo $record['comment_username']. $record['comment_time'] ?> 

        <!-- if comment from logged in user, show delete option --> 
        <? 
        if ($record['comment_username'] == $log_username) 
        { 
         echo '<span><button title="Delete comment" value="' . $record['id'] .'" name="deletecommentbutton" type="submit">X</button></span>'; 
        } 
        if(isset($_POST['deletecommentbutton'])) 
        { 
         $commentid = $record['id']; 
         $result_delete = mysql_query("DELETE from comments WHERE id='$commentid'"); 
         header("Location: url/discussion_view.php?id=".$_GET['id'].""); 
        } 
        ?> 

       <div><? echo $record['comment'] ?></div></form> 

      <?php } ?> 

ответ

4

Прежде все вы не должны использовать функции mysql_*. Это устарело.

Вместо этого вы можете использовать PDO.

И о вашей проблеме, заявление if(isset($_POST['deletecommentbutton'])) является true за каждый комментарий к данному сообщению, потому что вы не проверяете ID выбранного комментария. Вы должны переместить код удаления за пределы цикла и выполнить его только для выбранного идентификатора.

+0

Как я могу выполнить его только для выбранного идентификатора? –

+0

Просто используйте значение из '$ _POST ['deletecommentbutton']', которое является идентификатором выбранного комментария. Но не забывайте санировать его! –

+0

Не могли бы вы привести мне пример или способ начать? Я не могу заставить его работать :( –

Смежные вопросы