Показать полную графическую версию : работа с записями в БД
vagner_HATE
20-10-2005, 23:51
Здравствуйте..у меня вопрос в следующем - вот допустим есть у меня какая то таблица в БД, ее структура например такая (kod;naimenovanie;price) и в этой таблице есть какие то записи..
Мне хочется узнать - как сделать так чтобы при выводе таблицы в браузер рядом с каждой строкой стояло поле ввода(флажок) и была общая кнопка ....
Смысл в следующем - есть 10 записей например и с помощью этих флажков я хочу отметить 5 записей и потом нажатием кнопки чтобы они удалились...или наоборот добавились в другую таблицу....
Вопрос такой - как привязать соответствие каждого флажка конкретной строке рядом с которой он находиться?...ведь формально связь есть только на экране...а на самом деле флажок то уже при выводе проставляется.. и никак не связан с записями в базе
vadimiron
21-10-2005, 10:41
<input type="checkbox" name="var_name">
В аттрибуте name всегда указывается имя переменной, которая будет передана скрипту для обработки. В данном случае var_name. Если я не ошибаюсь, то если checkbox будет отмечен, то значение переменной будет "on".
Теперь вопрос как же, если у нас много записей и много чекбоксов. Ответ: в атрибуте name можно использовать также и массивы, например в вашем случае массив delete[]. В качестве индекса массива используйте такой столбец из базы, который не повторяется, например наверняка это код. Тогда для каждой записи в базе данных пишем вот так:
<input type="checkbox" name="delete[".$kod."]">
А ниже с помощью foreach проходим по массиву delete и удаляем все $kod, у которых значение равно "on"
Я обычно привязываюсь по первому полю (обычно id который INT и autoincrement и primary_key).
А что бы так сделать можно передать скрипту целый массив номеров (или имен, цен) тех полей, которые хотим удалить.
А в скрипте написать разбор массива и удаление всех перечисленных номеров полей. Вот и все!
vagner_HATE
31-10-2005, 15:08
$mass = array();
Если пишу так :
echo"<td align=center><input type=checkbox name='mass[.$sc.]'></td>";
print_r($mass[$sc]);
то выдается следущее - Undefined index: и значение $sc
Если пишу так:
$mass[$sc] = 42;
print_r($mass[$sc]);
то выводит 42, все нормально...
Почему он не хочет заносить значение флажка в массив...или он заносит но я потом неправильно пытаюсь его вывести?
vadimiron
31-10-2005, 15:34
mass[.$sc.]
А зачем тут точки, либо без них, либо вот так: mass[".$sc."]
vagner_HATE
31-10-2005, 16:00
echo"<td align=center><input type=checkbox name='mass[$sc]'></td>";
echo"Значение $sc ".$mass (.@$mass)[$sc];
Почему в этом случае опять таки не выводится значение флажка, или если ничего не выводится то это значит что флажок в значении off?
vadimiron
31-10-2005, 17:24
vagner_HATE
а вы пишете тег <form> и в нём скрипт, который обрабатывает значения из формы?? иначе mass[$sc] просто не будет существовать
vagner_HATE
Пишите код с подсветкой синтаксиса?
$mass = array(); Если пишу так : echo"<td align=center><input type=checkbox name='mass[.$sc.]'></td>"; print_r($mass[$sc]);
Это о-о-очень маленький кусок. Надо бы побольше. Но не больше 20-30 строк. Лучше весь цикл.
vagner_HATE
01-11-2005, 15:35
Спасибо всем, проблема решена..помог понять что у меня не так совет vadimiron'а:
а вы пишете тег <form> и в нём скрипт, который обрабатывает значения из формы?? иначе mass[$sc] просто не будет существовать
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.