За последние 24 часа нас посетили 17808 программистов и 1627 роботов. Сейчас ищут 1134 программиста ...

Удаление строк из таблицы

Тема в разделе "PHP и базы данных", создана пользователем UIS, 8 дек 2017.

  1. UIS

    UIS Новичок

    С нами с:
    7 дек 2017
    Сообщения:
    3
    Симпатии:
    0
    Подскажите пожалуйста:
    нужно, чтобы в каждой строке таблицы появилась запись "Удалить", при нажатии на которую удалялась бы эта строка.
    Код (Text):
    1.       <?php
    2.  
    3.         $result=mysql_query("SELECT  nomber, date, content FROM pricaz");
    4.        
    5.         $n=mysql_num_rows($result);
    6.    
    7.         echo "<table border=1>
    8.           <tr><th>Номер </th>
    9.           <th>Дата </th>
    10.           <th>Вид </th></tr>";
    11.         for ($i=0; $i<$n ; $i++)
    12.              echo
    13.              "<tr><td>", mysql_result($result, $i, nomber),
    14.             "<td>", mysql_result($result, $i, date),
    15.             "<td>", mysql_result($result, $i, content),
    16.             "<td>", //пытался сюда вставить ссылку на файл "delete.php?id=", чтобы там уже произвести удаление , но безуспешно
    17.                "</td></tr>";
    18.            echo "</table>";
    19.   ?>
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    В HTML таблице добавь th для заголовка колонки с кнопками удалить, в цикле добавь <td> с кнопкой удалить, можно через form тег, и передавать ID, потом лови это ID.
    например ссылка delete.php?id=5
    в delete.php если приходит $_GET['id'] то удаляй его с помощью SQL запроса к базе.
    https://secure.php.net/manual/ru/language.variables.external.php
    https://secure.php.net/manual/ru/function.mysql-real-escape-string.php (читай предупреждение в красном квадрате)
     
    UIS нравится это.
  3. UIS

    UIS Новичок

    С нами с:
    7 дек 2017
    Сообщения:
    3
    Симпатии:
    0
    У меня получается удалить запись, присваивая id в коде (т.е. все ссылки "Удалить" удаляют одну запись) .

    Код (Text):
    1. for ($i=0; $i<$n ; $i++)
    2.         echo
    3.         "<tr><td>", mysql_result($result, $i, nomber),
    4.           "<td>", mysql_result($result, $i, date),
    5.           "<td>", mysql_result($result, $i, content),
    6.           "<td>", "<form method='get' action='delete'><a href='delete.php?id=5'>Удалить</a></form>";
    7.       echo "</table>";  
    А как присвоить каждой строчке свой id ? Что-то не выходит... Перепробовал множество вариантов, вот один из них:

    Код (Text):
    1.       for ($i=0; $i<$n ; $i++)
    2.         echo
    3.         "<tr><td>", mysql_result($result, $i, nomber),
    4.           "<td>", mysql_result($result, $i, date),
    5.           "<td>", mysql_result($result, $i, content),
    6.           "<td>", "<form method='get' action='delete'><a href='delete.php?id=<?php mysql_result($result, $i, id) ?>'>Удалить</a></form>";
    7.       echo "</table>";
    На счет mysql и mysqli знаю. На данный момент стоит старая версия (есть своя необходимость)
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    тут нужно напечатать результат, например через echo, а ты просто вызвал функцию
     
  5. UIS

    UIS Новичок

    С нами с:
    7 дек 2017
    Сообщения:
    3
    Симпатии:
    0
    C echo я так же пробовал, но выдавал ошибку (видимо причина в кривых руках :))

    В итоге сделал так, может кому поможет:

    PHP:
    1.       for ($i=0; $i<$n ; $i++)
    2.         echo
    3.         "<tr><td>", mysql_result($result, $i, nomber),
    4.           "<td>", mysql_result($result, $i, date),
    5.           "<td>", mysql_result($result, $i, content),
    6.           "<td style='display: none'>", $s=mysql_result($result, $i, id),
    7.           "<td>","<form method='get' action='delete'><a href='delete.php?id=$s'>Удалить</a></form>";
    8.       echo "</table>";
     
  6. voral

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

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    третий параметр ф-ии mysql_result либо число (смещение поля) либо строка. У вас действительно константа определенная гдето выше через define или же вы кавычки забыли? Во втором случае, оно конечно "работает", но делать так не надо
     
  7. lamok

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

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Используйте в форме метод ПОСТ иначе поисковики могут поудалять вам все данные, метод пост они не используют при обхоже юрл сайта.
     
    UIS нравится это.
  8. uri

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

    С нами с:
    3 сен 2009
    Сообщения:
    43
    Симпатии:
    1
    Как-то подозрительно с mysql_result() в цикле, да еще для каждого поля..Не будет ли здесь страдать производительность?
    Я бы использовал mysql_fetch_assoc(), возвращающий ассоциативный массив, для расширения mysql, или, еще лучше, mysqli_fetch_assoc() для mysqli.
    И да, в метод формы - POST.