Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как удалить запись из БД через PHP?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Какая правильная команда на удаление записи из БД?
Korsand
Отправлено: 24 Марта, 2013 - 05:32:50
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013  
Откуда: UA Donbass


Помог: 0 раз(а)




Здорова всем. Столкнулся с проблемой.

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

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

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

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

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

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

Заранее благодарен.
 
 Top
sKaa
Отправлено: 24 Марта, 2013 - 05:37:58
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM  `$tablica` WHERE `id`='$id_msg'
 
 Top
Korsand
Отправлено: 24 Марта, 2013 - 17:08:38
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013  
Откуда: UA Donbass


Помог: 0 раз(а)




sKaa, спасибо, удаляет.
Но теперь выяснилось, что id на удаление в delete.php, отправляется не то, которое нужно, а всегда отправляется id самой первой записи что выведено на страницу (побоку через что выводить и сортировать). И получается, что какую бы запись я не хотел удалить, удаляется самая первая запись на странице. При разборке уже полностью сформированной страницы с записями, я вижу, что каждой записи правильно присвоено своё id из базы и имя таблицы. Значит, js скрипт, который отвечает за отправку значений с id и именем таблицы в delete.php, шлёт чего-то не то в него. Через firebug в мазиле, я вижу содержание этого запроса, и имя таблицы он правильно шлёт, а вот id - неправильно. Корявый какой-то этот js скрипт, только вот что мне с ним сделать...?

(Отредактировано автором: 24 Марта, 2013 - 17:52:38)

 
 Top
LIME
Отправлено: 24 Марта, 2013 - 18:17:15
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Korsand пишет:
только вот что мне с ним сделать...?
вопрос ООООчень странный
непонятно как на него отвечать
вернее понятно
ответ-исправлять
непонятно для чего он задан
 
 Top
Korsand
Отправлено: 24 Марта, 2013 - 20:45:06
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013  
Откуда: UA Donbass


Помог: 0 раз(а)




LIME пишет:

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

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

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

Может кто поправит, а? Буду признателен! Закатив глазки
 
 Top
Panoptik
Отправлено: 24 Марта, 2013 - 23:35:25
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




вы не обратили внимание что у вас в цикле выводятся элементы с одинаковым 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.  

вот так всё просто получается

(Отредактировано автором: 24 Марта, 2013 - 23:36:34)



-----
Just do it
 
 Top
Korsand
Отправлено: 25 Марта, 2013 - 03:07:27
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013  
Откуда: UA Donbass


Помог: 0 раз(а)




Ооо, с одной переменной работает, спасибо 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.  

Так как все же передать две переменные?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB