За последние 24 часа нас посетили 5670 программистов и 448 роботов. Сейчас ищут 227 программистов ...

Не работает удаление с базы данных

Тема в разделе "PHP и базы данных", создана пользователем yar.rybka, 11 окт 2018.

  1. yar.rybka

    yar.rybka Новичок

    С нами с:
    11 окт 2018
    Сообщения:
    3
    Симпатии:
    0
    Комментарий полностью прогружается из БД, но кнопка удаления по каким-то причинам не срабатывает
    Код (Text):
    1.  
    2. <?php
    3. $comments = mysqli_query($connection, "SELECT * FROM `comments` WHERE `articles_id` = " . (int) $_GET['id']);
    4.  while ( $com = mysqli_fetch_assoc($comments)) { ?>
    5.  
    6. <article class="article">
    7. <div class="article__image" style="background-image: url(https://www.gravatar.com/avatar/<?php echo md5($com['email']); ?>?s=125);"></div>
    8. <div class="article__info">
    9. <a href="/article.php?id=<?php echo $com['articles_id']; ?>#comment-form"><?php echo $com['author']; ?></a>
    10.  
    11. <div class="article__info__meta" method="POST" action="/article.php?id=<?php echo $art['id'];?>#comment-form">
    12. <small><a><?php echo $com['pubdate']; ?></a></small>
    13.  
    14. <?php if (isset($_POST['del'])) {mysql_query($connection, "DELETE FROM `comments` WHERE `id` = " . $com['id']);}?>
    15.  
    16. <div><input type="submit" name="del" value="del"></div>
    17. </div>
    18.  
    19. <div class="article__info__preview"><?php echo mb_substr($com['text'], 0, 105, 'utf-8');?></div>
    20. </div>
    21. </article>
    22.  
    23. <?php } ?>
    Буду очень благодарен за вашу помощь:
     
  2. Valick

    Valick Новичок

    С нами с:
    12 авг 2018
    Сообщения:
    313
    Симпатии:
    66
    Почему div а не form?
     
  3. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    175
    Симпатии:
    37
    1) php code ( действия )
    2) Запросы в таблицу базы данных для вывода их в html
    3) html

    Попробуй пройтись с первого по третий пункт и показать отдельно php & html код, тогда что то можно будет и подсказать.
    Не забудь про вывод ошибок.
     
  4. yar.rybka

    yar.rybka Новичок

    С нами с:
    11 окт 2018
    Сообщения:
    3
    Симпатии:
    0
    Решил, что бы было проще в отдельный файл и немного изменил и теперь пишет ошибку:

    mysql_query() expects parameter 1 to be string, object given in D:\!!ops\OSPanel\domains\blog.yar\com.php on line 14

    Полный код:
    Код (Text):
    1. <?php include "/includes/config.php";?>
    2. <?php
    3. $comments = mysqli_query($connection, "SELECT * FROM `comments` WHERE `articles_id` = 3");
    4. while ( $com = mysqli_fetch_assoc($comments))
    5.     { ?>
    6.     <article class="article">
    7.         <div class="article__image" style="background-image: url(https://www.gravatar.com/avatar/<?php echo md5($com['email']); ?>?s=125);"></div>
    8.         <div class="article__info">
    9.         <a href="/article.php?id=<?php echo $com['articles_id']; ?>#comment-form"><?php echo $com['author']; ?></a>
    10.         <div class="article__info__meta">
    11.         <small><a><?php echo $com['pubdate']; ?></a></small>
    12.             <?php if (isset($_POST['del'])) {mysql_query($connection, "DELETE FROM `comments` WHERE `comments`.`id` = " . intval($com['id']));}?>
    13.             <form method="POST" action="#comment-form">
    14.              <input type="hidden" name="del" />
    15.              <input type="submit" value="Удалить"/>
    16.             </form>
    17.         </div>
    18.         <div class="article__info__preview"><?php echo mb_substr($com['text'], 0, 105, 'utf-8');?></div>
    19.         </div>
    20.     </article>
    21. <?php } ?>
    @Valick, заигрался, я пока учусь и могу делать обычные ошибки)

    @lastdays, сейчас все разложу))

    1) php
    там подключение к БД и массив с названием сайта и основных ссылок (работает)
    Код (Text):
    1. <?php include "/includes/config.php";?>
    цикл дублирование штмл кода по количеству комментариев (работает)
    Код (Text):
    1. <?php $comments = mysqli_query($connection, "SELECT * FROM `comments` WHERE `articles_id` = 3"); while ( $com = mysqli_fetch_assoc($comments)) { } ?>
    внутри цикла, информация из таблицы БД, имя, мыло и прочие (работает)
    Код (Text):
    1. <?php echo md5($com['email']); ?>?s=125);">
    2. <?php echo $com['author']; ?>
    3. <?php echo $com['pubdate']; ?>
    4. <?php echo mb_substr($com['text'], 0, 105, 'utf-8');?>
    внутри цикла, попытка создать кнопку удаление строки из бд по параметру ид строки (не работает)
    Код (Text):
    1. <?php if (isset($_POST['del'])) {mysql_query($connection, "DELETE FROM `comments` WHERE `comments`.`id` = " . intval($com['id']));}?>
    2) Если я правильно понял:
    Код (Text):
    1.  mysqli_query($connection, "SELECT * FROM `comments` WHERE `articles_id` = 3");
    2. while ( $com = mysqli_fetch_assoc($comments) {
    3. <?php echo $com['author']; ?>
    4. <?php echo $com['pubdate']; ?>
    5. <?php echo mb_substr($com['text'], 0, 105, 'utf-8');?>
    6. }
    Это же удаление, насколько это вывод?!
    Код (Text):
    1.  mysql_query($connection, "DELETE FROM `comments` WHERE `comments`.`id` = " . intval($com['id']));
    3) Здесь, я выделил капсом, то что заменяется на информацию из бд:
    Код (Text):
    1.    <article class="article">
    2.         <div class="article__image" style="background-image: url(АВАТАР);"></div>
    3.         <div class="article__info">
    4.         <a href="ССЫЛКА НА СТРАНИЦУ#comment-form">ИМЯ АВТОРА</a>
    5.         <div class="article__info__meta">
    6.         <small><a>ДАТА</a></small>
    7.             <form method="POST" action="#comment-form">
    8.             <input type="hidden" name="del" />
    9.             <input type="submit" value="Удалить"/>
    10.             </form>
    11.         </div>
    12.         <div class="article__info__preview">ТЕКСТ КОММЕНТАРИЯ</div>
    13.         </div>
    14.     </article>



     
  5. Valick

    Valick Новичок

    С нами с:
    12 авг 2018
    Сообщения:
    313
    Симпатии:
    66
    Исходный код страницы смотрели? Экшен формы так и нарисован action="#comment-form" ?
    То что вы учитесь это хорошо, но больше похоже, что код кусками откуда-то содран и вы его допиливаете под себя.
     
  6. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    849
    Симпатии:
    120
    Пропустили i в имени ф-ции.
     
  7. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    175
    Симпатии:
    37
    И не нужно чтобы работало внутри цикла :)

    Удаление сообщения пишите сверху, вне цикла.
    Не забыть нужно про проверку прав, мало ли кто захочет и сможет удалить.
    Проверяете, что сообщение существует в таблице базы данных, есть права на удаление = удаляете
    id сообщения можно передать с помощью ссылки <a href="?post_id=5&action=delete">Удалить</a>
    Вместо цифры 5 ваш $com['id'] соответственно, только опять же, кнопочку от всех прятать)

    mysql_query != mysqli_query . Внимательнее.
     
    yar.rybka нравится это.
  8. Ondottr

    Ondottr Новичок

    С нами с:
    24 ноя 2017
    Сообщения:
    34
    Симпатии:
    5
    PHP:
    1. mysql_query($connection, "DELETE FROM `comments` WHERE `comments`.`id` = " . intval($com['id']));
    нужно написать mysqli_query
     
  9. yar.rybka

    yar.rybka Новичок

    С нами с:
    11 окт 2018
    Сообщения:
    3
    Симпатии:
    0
    @Valick этот якорь я писал, что бы при действиях в этом блоке возвращалось к нему же, а также для сайтбара где вывод комментов есть. Моя цель просто создать тестовый блог с нуля и для себя, просто что бы научиться, конечно я иногда подсматриваю как выглядит код на других сайтах, но не в этом примере)

    @miketomlin @Ondottr@lastdays спасибо, все заработало, но есть одна проблема хотя код и вроде как написан правильно, но он удаляет все комментарии на странице, если вывести это текстом через эко и скопировать результата в ПхпМайАдмине то он удаляет нужную строку.
    Но я уже очень рад, то что вообще удаляется и работает)