Удаление строки из MySQL по идентификатору

#php #mysql #sql-delete

#php #mysql #sql-удалить

Вопрос:

Я использую для создания таблицы содержимое таблицы MySQL. Проблема в том, что я пытаюсь создать кнопку удаления (x) для каждой строки в таблице (удалить столбец).

  <?php
$html = "<table>";
$html .= "<tr>";
$html .= "<th>id</th>";
$html .= "<th>Event type</th>";
$html .= "<th>Date</th>";
$html .= "<th>Price(€)</th>";
$html .= "<th>Description</th>";
$html .= "<th>Delete</th>";
$html .= "</tr>";

foreach($event as $e){
    $html .= "<tr>";
    $html .= "<td>$e->eventId</td>";
    $html .= "<td>$e->eventType</td>";
    $html .= "<td>$e->eventDate</td>";
    $html .= "<td>$e->eventPrice</td>";
    $html .= "<td>$e->eventDescr</td>";
    $html .= "<td><--the delete button has to be here--></td>";
    $html .= "</tr>";
}

$html .= "</table>";
echo $html;
  

Я пытался использовать кнопку onclick, но абсолютно безуспешно. Кто-нибудь может дать мне какие-нибудь советы?

Комментарии:

1. что вас подводит? Я также не вижу никакого кода базы данных.

2. В принципе, я хочу использовать УДАЛЕНИЕ ИЗ идентификатора имя_таблицы some_column = EventID

3. вам нужно использовать DELETE FROM table WHERE col = ?

4. я не уверен, как вставить кнопку и какой должна быть функция

5. У вас две проблемы: 1, вы не прочитали код «как задать вопрос». В вашем вопросе должен быть указан минимальный код, необходимый для воспроизведения проблемы. И 2, вы не определили «проблему». Как говорится, «хорошо определенная проблема уже наполовину решена»

Ответ №1:

Мое решение — лишь одно из многих возможных

1) создайте js-функцию для удаления строки и вызовите ajax-запрос на удаление элемента из базы данных

 function removeRow(item,eventId)
{
  var row = $(item).parent().parent();
  $.ajax(url: '(url_to)/remove.php?id=' eventId,
         success: function(resp)
         {
           if(resp=='OK')
           {
             row.remove();
           }
         }
  );
  

}

2) кнопка создать

 $html .= '<td><a href="javascript:removeRow(this,'.$e->eventId.');return false;">Delete</a></td>';
  

3) создайте PHP-скрипт

 <?php
//connection to DB
$dbhost = "localhost";
$dbname = "dbb";
$dbuser = " ";
$dbpswd = " ";

try
{
  $db = new PDO("mysql:host=".$dbhost.";dbname=".$dbname,$dbuser,$dbpswd);
  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  //removing event
  $count = $db->exec("DELETE FROM `someTable` WHERE id = {intval($id)}");
  //return OK if event was correctly deleted
  if($count==1)
  {
    echo 'OK';
  }
}
catch (PDOException $e)
{
  //only for development version
  echo $e->getMessage();
}
die();
  

Комментарии:

1. итак, что входит в php-скрипт? я полагаю, что-то вроде УДАЛЕНИЯ Из ТАБЛИЦЫ events_archive, ГДЕ id = EventID?

2. Я описал в своем предыдущем ответе

3. теперь моя ошибка исправлена

4. Notice: Undefined variable: id in <url> on line 77 SQLSTATE[42000]: Syntax error or access violation: 1064

5. это $count = $db->exec("DELETE FROM строка someTable` WHERE id = {intval($id)}»);`