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.SU

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


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

> Без описания
LEONeso
Отправлено: 17 Января, 2010 - 15:12:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




Здравствуйте, я еще пока зеленый в php и mysql, но если не пытаться, что-то сделать, то ничего и не будет =)

Как с помощью php реализовать удаление из таблицы бд mysql строку с определенным id.

Я попытался это сделать, собственно получилось, но мне кажется это бред.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $result = mysql_query ("SELECT * FROM iwd ORDER BY id DESC",$db);
  3.  
  4.  
  5. echo "<b>Действие | Последние события</b>";
  6.  
  7. if ($myrow = mysql_fetch_array($result)) //выполняется, выводи:
  8.   {
  9. //кривое условие
  10. echo "<script>function ReloadButton(){location.href=\"index.php\";}</script>";
  11. if (isset ($_POST['del']))
  12.   {
  13.     $id = intval($_POST['del']);
  14.     $result_delete = mysql_query ("DELETE FROM iwd WHERE id='$id'",$db);
  15.   }
  16.  
  17. do
  18. { //из name берет del из value берет %s где %s это $myrow['id'] т.е. id строки таблицы, пропадает возможность ввода текста для кнопки.
  19. printf ("<br /><form name=\"delete_form\" method=\"POST\" action=\"\"><input title=\"Удалить строку из БД с id %s - %s\" class=\"button\" type=\"submit\" id=\"delete\" name=\"del\" value=\"%s\" ONCLICK=\"ReloadButton()\"></form> %s%s по %s]", $myrow['id'], $myrow['title'], $myrow['id'], $myrow['title'], $myrow['date'], $myrow['date_end']);
  20. }
  21. while ($myrow = mysql_fetch_array($result));
  22.  
  23.   }
  24. else
  25.   {echo "<br />в базе данных пусто...";}
  26. ?>

Я уверен, есть более разумное решение или все именно так?

Что делает данный код?
Выводит данные из БД сортируя в обратном порядке по id. Сразу же выводит кнопку удаления записи (строки таблицы) и обновляет страницу с помощью js, чтобы сразу запись пропадала. Ну про js я вообще молчу, я о нем фактически ничего не знаю.
К стати ,если в коде, за место POST вставить везде GET, то он также будет работать, но в url страницы, можно наблюдать как передаются данные.
--
Спасибо Подмигивание
Прикреплено изображение (Нажмите для увеличения)
scren.png


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
vitaliy_mad
Отправлено: 17 Января, 2010 - 17:08:29
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




в принципенормально... только цикл надо использовать с предуслевием...
 
 Top
LEONeso
Отправлено: 17 Января, 2010 - 21:36:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




Ну собственно это вопрос Закатив глазки
Кто нибудь посоветует как это реализовать правильно, чтобы в кнопках можно было писать необходимый мне текст, а не id вставлять, надеюсь вы понимаете, что опыт у меня маленький и не надо слишком коротко описывать и по русски писать функции.

Неужто так все сложно)?


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
vitaliy_mad
Отправлено: 17 Января, 2010 - 21:53:40
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




LEONeso пишет:
Неужто так все сложно
написать не сложно, сложно понять что Вы хотите сделать!
 
 Top
LEONeso
Отправлено: 17 Января, 2010 - 23:03:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




1. Как с помощью php реализовать удаление из таблицы бд mysql строку с определенным id методом нажатия на кнопку?

2. Как правильно передавать данные методом GET через кнопку?
PHP:
скопировать код в буфер обмена
  1. echo "<form name=\"form\" method=\"GET\" action=\"index.php?1\"><input class=\"button\" type=\"submit\" value=\"Добавить событие\"></from><br />";

action=index.php?1 - не передает данные
если указать кнопке name=1, то кнопка передает в адресную строку Единицу и далее присваивает ей value кнопки. В итоге, url очень кривится.
--
Теперь думаю понятнее.

(Отредактировано автором: 17 Января, 2010 - 23:10:58)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
RomAndry Администратор
Отправлено: 17 Января, 2010 - 23:11:39
Post Id



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


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


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




ну как бы не вижу ничего ошибочного.
вот некоторые замечания
1. (что написал vitaliy_mad
vitaliy_mad пишет:
цикл надо использовать с предуслевием

2. Зачем в проверке if ($myrow = mysql_fetch_array($result))
устанавливать проверку на то, что строка будет удалена?
2.1. это не имеет смысла
2.2. последнюю запись не сможешь удалить
 
My status
 Top
LEONeso
Отправлено: 17 Января, 2010 - 23:38:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




RomAndry пишет:
ну как бы не вижу ничего ошибочного.
вот некоторые замечания
1. (что написал vitaliy_mad
vitaliy_mad пишет:
цикл надо использовать с предуслевием

2. Зачем в проверке if ($myrow = mysql_fetch_array($result))
устанавливать проверку на то, что строка будет удалена?
2.1. это не имеет смысла
2.2. последнюю запись не сможешь удалить

Это проверка идет в БД, проверяет, есть ли запись в таблице БД (если нету, то он пишет ,что "бд пуста"), далее проверяется для цикла do, если есть, то выводи до упора.

А теперь фокус =) переменная result_delete, удаляет выбранную строку в таблице.
PHP:
скопировать код в буфер обмена
  1. $result_delete = mysql_query ("DELETE FROM iwd WHERE id='$id'",$db);

Перед этим, проверяется, есть ли в url данные ?del (далее присвоение id где id это id строки в таблице БД).
Это если методом GET выбран, а так и POST проверяет данные, но в url не выводит.

В чем проблема? Я не могу ввести текст для кнопки т.к. из name берет del из value берет %s где %s это $myrow['id'] т.е. id строки таблицы и таким чудесным образом пропадает возможность ввода текста для кнопки.
--
Вот попытался объяснить некоторые части первого поста.
Теперь я снял видео формата swf, с проблемой скачать (840кб) открывается с помощью MPC или браузера.

(Отредактировано автором: 17 Января, 2010 - 23:56:26)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
vitaliy_mad
Отправлено: 17 Января, 2010 - 23:43:06
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




обычно для id используется скрытое текстовое полу, а у value кнопки пишеть то, что нужно вам... потом в обработке считываем value не у кнопки, а у того скрытого поля...
 
 Top
LEONeso
Отправлено: 17 Января, 2010 - 23:54:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




vitaliy_mad пишет:
обычно для id используется скрытое текстовое полу, а у value кнопки пишеть то, что нужно вам... потом в обработке считываем value не у кнопки, а у того скрытого поля...

Я не в курсе скрытого поля, как это делается?
Так везде делают? даже в кнопках отправления топика на форуме?


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
vitaliy_mad
Отправлено: 18 Января, 2010 - 00:07:15
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




CODE (html):
скопировать код в буфер обмена
  1. <form ....... >
  2. <input type="hidden" name="delid" value="$id">
  3. <input type="submit" name="del" value="Delete">
  4. </form>

$id - id удаляемой строки

Обработка
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //.................
  3. if (isset($_POST['del'])) {
  4. $id=intval($_POST['delid']);
  5. //.........................................
  6. }
  7. //............
  8. ?>
 
 Top
LEONeso
Отправлено: 18 Января, 2010 - 01:03:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




vitaliy_mad пишет:
CODE (html):
скопировать код в буфер обмена
  1. <form ....... >
  2. <input type="hidden" name="delid" value="$id">
  3. <input type="submit" name="del" value="Delete">
  4. </form>

$id - id удаляемой строки

Обработка
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //.................
  3. if (isset($_POST['del'])) {
  4. $id=intval($_POST['delid']);
  5. //.........................................
  6. }
  7. //............
  8. ?>


Да, работает со скрытым, но появилась еще проблема =)
Когда на странице 2 кнопки, при нажатии на вторую также задействуется первая, хотя они в разных form.

Напишу исходный html код для представления:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form name="form" method="GET" action="index.php"><input type="hidden" name="add" id="add" value="1"/><input class="button" type="submit" value="Добавить событие"></from>
  3. <b>Действие | Последние события</b>
  4.   <form name="delete_form" method="GET" action="index.php"><input type="hidden" name="del" id="del" value="63"/><input title="Удалить строку из БД с id 63 - Название" class="button" type="submit" id="delete" value="удалить"  /></form> Название [с 2010-01-18 по 2010-01-18]               


В чем может быть проблема?
и главное ссылка преображается вида ?add=1&del=63
т.е. идет запрос на "добавить" и "удалить запись с id 63"
Прикреплено изображение (Нажмите для увеличения)
Безымянный.png


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
vitaliy_mad
Отправлено: 18 Января, 2010 - 01:05:23
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




LEONeso пишет:
<form name="form" method="GET" action="index.php"><input type="hidden" name="add" id="add" value="1"/><input class="button" type="submit" value="Добавить событие"></from>


</from>

Правильно </form>
 
 Top
LEONeso
Отправлено: 18 Января, 2010 - 01:47:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




vitaliy_mad пишет:
LEONeso пишет:
<form name="form" method="GET" action="index.php"><input type="hidden" name="add" id="add" value="1"/><input class="button" type="submit" value="Добавить событие"></from>


</from>

Правильно </form>

Спасибо Улыбка
К стати, результат Вашей всей и всех помощи можно глянуть тут - 2.34мб открывается в браузере. Снимал для другого вопроса Подмигивание

(Отредактировано автором: 18 Января, 2010 - 02:15:52)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
born
Отправлено: 10 Августа, 2010 - 02:00:01
Post Id


Новичок


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


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




Здравсвуйте профи!
Я извиняюсь, что ворушу старую тему, но у меня похожая проблема, я уже думал что она не решаема, а у LEONeso вроде получилась. идея в том что у меня в таком случае
vitaliy_mad пишет:
CODE (html):
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form ....... >
  2. <input type="hidden" name="delid" value="$id">
  3. <input type="submit" name="del" value="Delete">
  4. </form>

$id - id удаляемой строки

Обработка

PHP:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2. //.................
  3. if (isset($_POST['del'])) {
  4. $id=intval($_POST['delid']);
  5. //.........................................
  6. }
  7. //............
  8. ?>

в $_POST['delid'] садится айдишник последнего скрытого поля выводимого в цикле, а не того рядом с которым я щелкнул кнопку удалить. Подскажите пожалуйста почему у меня так получается? Заранее спасибо
 
 Top
JustUserR
Отправлено: 10 Августа, 2010 - 02:32:31
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




born пишет:
В $_POST['delid'] садится айдишник последнего скрытого поля выводимого в цикле, а не того рядом с которым я щелкнул кнопку удалить
Для диагностики можете попробовать посмотреть исходный HTML-код страницы на которой вы выводите набор форм для удаления требуемых объектов из БД - и проверить какие в действительности значения принимают value-аттрибуты скрытых полей при интерполяции в них значений из PHP-скрипта Вероятно имеется какая-то ошибка в генерирующием цикле - и значение $id для текущей итерации устанавливается некорректно


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB