Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Как удалить запись из БД через PHP?

Страниц (1): [1]
 

1. Korsand - 24 Марта, 2013 - 05:32:50 - перейти к сообщению
Здорова всем. Столкнулся с проблемой.

Задача такая…
В БД имеется несколько таблиц. Нужно на страницу прикрутить выпадающий список, в котором можно выбрать конкретную таблицу из БД. После того, как мы выбрали таблицу, на странице должно отобразится всё её содержимое. Напротив каждой извлечённой записи, должна быть кнополька, которая позволит удалить эту запись. После того, как мы удалили какую-нибудь запись, всё содержимое таблицы должно по новому вытащиться и отобразится на странице.

Что я сделал…
Выпадающий список, выбор и отображение содержимого таблиц. Отправка запроса на удаление записи в конкретной таблице, но результата нет, т.к. запись не удаляется. Записи, повторно вытаскиваются из таблицы.

Что у меня не получается…
После выбора и отображения содержимого какой-то таблицы, я клацаю на «удалить запись», пинается PHPшка, которая удаляет и повторно вытаскивает записи – в итоге, запись не удаляется, но таблица повторно вытаскивается.
Вывод: коряво написан код на удаление записи. Если не затруднит, не могли бы кто-нибудь поправит мой код.

Это index.html
Спойлер (Отобразить)

Это show.php, к ней обращаемся, когда в первый раз отображаем записи.
Спойлер (Отобразить)

Это delete.php, пинаем её, чтобы удалить и повторно отобразить записи. Косяк, я думаю, именно тут.
Спойлер (Отобразить)

Заранее благодарен.
2. sKaa - 24 Марта, 2013 - 05:37:58 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM  `$tablica` WHERE `id`='$id_msg'
3. Korsand - 24 Марта, 2013 - 17:08:38 - перейти к сообщению
sKaa, спасибо, удаляет.
Но теперь выяснилось, что id на удаление в delete.php, отправляется не то, которое нужно, а всегда отправляется id самой первой записи что выведено на страницу (побоку через что выводить и сортировать). И получается, что какую бы запись я не хотел удалить, удаляется самая первая запись на странице. При разборке уже полностью сформированной страницы с записями, я вижу, что каждой записи правильно присвоено своё id из базы и имя таблицы. Значит, js скрипт, который отвечает за отправку значений с id и именем таблицы в delete.php, шлёт чего-то не то в него. Через firebug в мазиле, я вижу содержание этого запроса, и имя таблицы он правильно шлёт, а вот id - неправильно. Корявый какой-то этот js скрипт, только вот что мне с ним сделать...?
4. LIME - 24 Марта, 2013 - 18:17:15 - перейти к сообщению
Korsand пишет:
только вот что мне с ним сделать...?
вопрос ООООчень странный
непонятно как на него отвечать
вернее понятно
ответ-исправлять
непонятно для чего он задан
5. Korsand - 24 Марта, 2013 - 20:45:06 - перейти к сообщению
LIME пишет:

ответ-исправлять

Но как?
Щас сделал отдельно страничку, без выпадающего списка с выбором таблицы. Просто, открываем страницу и загружаются записи из указанной таблицы. Результат тот же, удаляется самая первая запись, хотя удалял пятую или десятую. Вот код:
index.html
Спойлер (Отобразить)

delete.php
Спойлер (Отобразить)

Может кто поправит, а? Буду признателен! Закатив глазки
6. Panoptik - 24 Марта, 2013 - 23:35:25 - перейти к сообщению
вы не обратили внимание что у вас в цикле выводятся элементы с одинаковым id
CODE (htmlphp):
скопировать код в буфер обмена
  1. <input id="id_msg" name="id_msg" type="hidden" value="<?php echo $id_msg; ?>">

вобщем убирайте оттуда атрибут id используйте класс и по соседним элементам DOM'а находите этот инпут и доставайте из него данные, а вообще раз у вас и так функция вызывается, просто в коде задавайте параметр в эту функцию
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.         function send(id_msg) {
  3.                   $.post('delete.php', {id_msg: id_msg}, function(html) {
  4.                         $("#ajax").empty();
  5.                         $("#ajax").append(html);
  6.                   });                            
  7.         }
  8.        

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form class="del" method="post">
  3.     <input type="button" onclick="send(<?php echo $id_msg; ?>);" value=""/>
  4.  </form>
  5.  

вот так всё просто получается
7. Korsand - 25 Марта, 2013 - 03:07:27 - перейти к сообщению
Ооо, с одной переменной работает, спасибо Panoptik!
Ну это если с учётом того, что имя таблицы заранее вбито в delete.php. Поэтому, достаточно передать только одну переменную с id. А как мне передать две переменные? У меня ж изначально можно было выбрать, содержание какой таблицы посмотреть (подгрузить) и в дальнейшем удалить в ней чего-нибудь. Т.е. в delete.php мне нужно отправить имя таблицы и id.

Сделал какую-то фиготень, и она естественно не работает. Хм Но на большее у меня ума не хватило.
CODE (javascript):
скопировать код в буфер обмена
  1. $(function() {
  2.         $(".del").click(function(){
  3.                 var ID = $(this).attr("#id");
  4.                 var tablica = $(this).attr(".class");
  5.                 var dataString = 'id='+ ID, 'tablica='+ tablica;
  6.                
  7.                 $.ajax({
  8.                         type: "POST",
  9.                         url: "delete.php",
  10.                         data: dataString,
  11.                         success: function(html) {
  12.                                 $("#ajax").empty();
  13.                                 $("#ajax").append(html);
  14.                         }      
  15.                 });
  16.         });
  17. });
  18.  

CODE (html):
скопировать код в буфер обмена
  1.    <form class="del" method="post">
  2.    <input id="<?php echo $id_msg; ?>" type="hidden" value="">
  3.    <input class="<?php echo $tablica; ?>" type="hidden" value="">
  4.    </form>
  5.  

Так как все же передать две переменные?

 

Powered by ExBB FM 1.0 RC1