За последние 24 часа нас посетили 23536 программистов и 1549 роботов. Сейчас ищут 985 программистов ...

Не могу реализовать удаление комментария.

Тема в разделе "PHP для новичков", создана пользователем SamyRed, 28 июл 2015.

  1. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Доброго времени суток.
    Подскажите, пожалуйста, как реализовать удаление комментария при нажатии на <input type="image"> для кода:
    Код (PHP):
    1. while($myrow=mysql_fetch_array($res))    
    2. {
    3. if($myrow['new_id'] == $id){
    4.     echo '
    5.         <div style="border:1px solid silver; padding:5px 0 0 5px; margin:5px 0 5px 0">
    6.     ';}
    7. if($myrow['new_id'] == $id)    
    8.     if ($_SESSION['user_access_level'] == 'admin')
    9.         echo '
    10.             <form style="padding:0" action="" method="post">
    11.             <input type="image" name="delete_comment" style="padding:0; margin:0 0 5px 10px; cursor:pointer;" title="Удалить комментарий" src="images/delete.png"></input></br>
    12.             </form>
    13.         ';
    14. if($myrow['new_id'] == $id)
    15.     echo '
    16.         <span style="font-size:18px; padding:0">'.$myrow['text'].'</span></br>
    17.         <span class="text1" style="font-size:12px; line-height:20px; padding:0">Добавил '.$myrow['user_login'].' '.$myrow['create_date'].'</span>
    18.         </div>
    19.     ';
    20. }
    21.  
    Никак не могу допереть, в какой части кода нужно брать id комментария для удаления.
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Код (PHP):
    1. if(isset($_POST['delete_comment'])){
    2.     //тут уже работа с бд
    3. } 
     
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Так мне же нужно где-то взять id комментария чтобы потом удалить его из бд

    Добавлено спустя 18 секунд:
    я по этому сюда и обратился

    Добавлено спустя 1 минуту 46 секунд:
    Если делать так как вы написали то неизвестно какой коммент удалять
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    заведи скрытое поле в форме, и в качестве значения передавай ид текущего коммента
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Точно, спасибо огромное, я б не догадался))

    Добавлено спустя 5 минут 12 секунд:
    Такой вопросик ещё:
    Код (PHP):
    1. if (isset($_POST['delete_comment']))
    2.     if($_SESSION['user_access_level'] == 'admin')
    3.         mysql_query ("DELETE * FROM `news_comments` WHERE `id` = ".$_POST['comment_id_delete']."");
    4.  
    Что тут не так?
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
  7. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Вот так:
    mysql_query> DELETE FROM `news_comments` WHERE `id` = ".$_POST['comment_id_delete'].";?
     
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Код (PHP):
    1. if (isset($_POST['delete_comment']))
    2.     if($_SESSION['user_access_level'] == 'admin')
    3.         mysql_query ("DELETE * FROM `news_comments` WHERE `id` = '{$_POST['comment_id_delete']}';");
    я думаю, не будет лишним всегда использовать открывающую и закрывающую скобку для операторов ветвления.
    И не есть хорошо обращаться к суперглобальным переменные таким образом.

    Добавлено спустя 55 секунд:
    и пора перейти на использование mysqli так как mysql уже устарел и будет выпилен в новой версии.
     
  9. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Насчёт суперглобальных переменных - привычка не выработалась)
    а насчёт mysqli надо бы подучить....
    Я сделал вот так:
    Код (Text):
    1.  
    2. mysql_query ("DELETE FROM `news_comments`");
    но всё равно не удаляет, значит дело не в фигурных скобках...
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    я выше выложил код, где правил запрос твой.
    последний твой запрос не работает потому что пропустил "*" и этот запрос удалит все комменты будь осторожен.
     
  11. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Да на коммента мне пофиг, их пока что нет)) я только движок пишу)) и то на денвере)

    Добавлено спустя 1 минуту 20 секунд:
    Всё равно не хочет удалять
     
  12. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    делай отладку, выполняется ли условие if($_SESSION['user_access_level'] == 'admin')
     
  13. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    тут точно правильно, у меня в шапке пишет весь массив сессии и куки
     
  14. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Код (PHP):
    1. if (isset($_POST['delete_comment']))
    2.     if($_SESSION['user_access_level'] == 'admin')
    3.         mysql_query ("DELETE  FROM `news_comments` WHERE `id` = '{$_POST['comment_id_delete']}';");
    Добавлено спустя 46 секунд:
    оказалось для delete не нужна "*"
     
  15. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Нет

    Добавлено спустя 1 минуту 17 секунд:
    Не срабатывает условие
    Код (PHP):
    1. if (isset($_POST['delete_comment']))
    2.  
     
  16. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Код (PHP):
    1. echo "<pre>";
    2. var_dump($_POST);//проверим, существует ли переменная которую мы ожидаем.
    3. echo "</pre>"; 
     
  17. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Код (PHP):
    1. if ($_SESSION['user_access_level'] == 'admin')
    2.     echo '
    3.         <form style="padding:0" action="" method="post">
    4.         <input type="hidden" name="comment_id_delete" value="'.$myrow['id'].'"></input>
    5.         <input type="image" name="delete_comment" style="padding:0; margin:0 0 5px 10px; cursor:pointer;" title="Удалить комментарий" src="images/delete.png"></input></br>
    6.         </form>
    7.     ';
    8.  
    Добавлено спустя 1 минуту 8 секунд:
    array(0) {}
     
  18. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    теперь понял почему не удаляются?
     
  19. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Я то понл, но не могу понять теперь почему всё таки не идёт post

    Добавлено спустя 3 минуты 32 секунды:
    Блин, это я лах. Есть всё таки пост:
    Код (Text):
    1.  
    2. array(3) {
    3.   ["comment_id_delete"]=>
    4.   string(1) "8"
    5.   ["delete_comment_x"]=>
    6.   string(1) "4"
    7.   ["delete_comment_y"]=>
    8.   string(1) "6"
    9. }
    Добавлено спустя 23 секунды:
    Я страницу обновил, а на кнопочку то нажать не додумался)

    Добавлено спустя 1 минуту 54 секунды:
    А почему delete_comment_x и delete_comment_y? Что это значит?

    Добавлено спустя 3 минуты 48 секунд:
    Всё получилось) Спасибо за помощь)) Я не знал что если <input type="image"> то берутся координаты)