Как удалить конкретную строку в таблице базы данных

26 сент. 2017 г., 14:37:16
Просмотры: 15.1K
Голосов: 0

Я создал пользовательскую страницу профиля на основе текущего авторизованного пользователя, чтобы отображать только его данные, добавленные в пользовательскую базу данных.

Вы можете видеть, что в каждой строке я добавил кнопку "Удалить", но без соответствующего кода.

Всё работает хорошо, кроме части, где я хочу добавить функцию удаления записи. Возможно, $wpdb->delete() решит мою проблему.

Вот мой код:

if ( is_user_logged_in() ) {
    global $wpdb;
    $current_user = wp_get_current_user();
    $username = $current_user->user_login;
    $reservations = $wpdb->get_results($wpdb->prepare("SELECT * FROM 
    SaveContactForm7_1 WHERE user = %s", $username));


    echo "<div align='center'>";
    echo "<table class='responsive-table'>";
    echo "<caption>Список бронирований</caption>";
    echo "<thead>";
    echo "<tr>";
    echo "<th scope='col'>Имя</th>";
    echo "<th scope='col'>ID</th>";
    echo "<th scope='col'>Качество</th>";
    echo "<th scope='col'>Прибытие</th>";
    echo "<th scope='col'>№ Рейса</th>";
    echo "<th scope='col'>Время прил.</th>";
    echo "<th scope='col'>Откуда</th>";
    echo "<th scope='col'>Отправление</th>";
    echo "<th scope='col'>№ Рейса</th>";
    echo "<th scope='col'>Время выл.</th>";
    echo "<th scope='col'>Куда</th>";
    echo "<th scope='col'>Отель</th>";
    echo "<th scope='col'>Комната</th>";
    echo "<th scope='col'>Итого</th>";
    echo "<th scope='col'>Изменить</th>";
    echo "<th scope='col'>Удалить</th>";
    echo "</tr>";
    echo "</thead>";
    foreach($reservations as $reservation){
    echo "<tbody>";
    echo "<tr>";
    echo "<th  scope='row'>".$reservation->nom."</th>";
    echo "<td data-title='ID'>".$reservation->user."</td>";
    echo "<td data-title='Качество'>".$reservation->qualite."</td>";
    echo "<td data-title='Прибытие'>".$reservation->datearrivee."</td>";
    echo "<td data-title='№ Рейса'>".$reservation->num_vol_arrivee."</td>";
    echo "<td data-title='Время посадки'>".$reservation->heure_atterrissage."
    </td>";
    echo "<td data-title='Откуда'>".$reservation->provenance."</td>";
    echo "<td data-title='Отправление'>".$reservation->datedepart."</td>";
    echo "<td data-title='№ РЕЙСА'>".$reservation->num_vol_depart."</td>";
    echo "<td data-title='Время вылета'>".$reservation->heure_decollage."
    </td>";
    echo "<td data-title='Направление'>".$reservation->destination."
    </td>";
    echo "<td data-title='Выбор'>".$reservation->choix."</td>";
    echo "<td data-title='Комната'>".$reservation->typech."</td>";
    echo "<td data-title='Общая цена' data-type='currency'>".$reservation-
    >calculated_choix."</td>";

А вот часть с "Удалить":

echo "<td align='center'>

<***Мне нужен код здесь "input" или "a href" ***><img class='icon' width='16' height='16'
src='../remove-icon.png' alt='Удалить' title='Удалить'></a>
</td>";
echo "</tr>";
echo "</tbody>";
}
echo "</table>";
echo "</div>";
}
2
Комментарии

Вы спрашиваете как удалить строку с помощью MySQL?

kero kero
26 сент. 2017 г. 15:13:33

Удаление - это не конец работы, нужно заставить это работать. Вы можете сделать Ajax-запрос для уведомления сервера о действии и выполнения любого нужного вам действия. Другой подход - отправить submit-запрос для удаления и перезагрузки формы. У обоих способов есть свои плюсы и минусы.

Drupalizeme Drupalizeme
26 сент. 2017 г. 15:43:47
Все ответы на вопрос 2
1

Да, вы можете использовать wpdb для удаления записи в пользовательской таблице. Вот пример функции в WordPress:

require_once ('../../../../wp-load.php');

if (!empty($_POST['id'])) {

  global $wpdb;

  $table='table_name';
  $id = $_POST['id'];
  $wpdb->delete( $table, array( 'id' => $id ) );

}
26 сент. 2017 г. 19:42:45
Комментарии

Это работает с некоторыми изменениями

Ramy Mâaouia Ramy Mâaouia
3 окт. 2017 г. 23:03:21
0
  • клиентская сторона —> пользователь нажимает кнопку/ссылку удаления

  • AJAX —> отправляет это действие с клиентской стороны на серверную для выполнения php-функции, удаляющей соответствующую строку из базы данных

  • серверная сторона —> функция для удаления строки из базы данных $wpdb->delete()

  • успешный AJAX-запрос —> скрывает эту строку на клиентской странице и обновляет только эту часть страницы

проверьте эту ссылку

26 сент. 2017 г. 19:07:56