Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   работа с записями в БД (http://forum.oszone.net/showthread.php?t=55451)

vagner_HATE 20-10-2005 23:51 366264

работа с записями в БД
 
Здравствуйте..у меня вопрос в следующем - вот допустим есть у меня какая то таблица в БД, ее структура например такая (kod;naimenovanie;price) и в этой таблице есть какие то записи..
Мне хочется узнать - как сделать так чтобы при выводе таблицы в браузер рядом с каждой строкой стояло поле ввода(флажок) и была общая кнопка ....
Смысл в следующем - есть 10 записей например и с помощью этих флажков я хочу отметить 5 записей и потом нажатием кнопки чтобы они удалились...или наоборот добавились в другую таблицу....
Вопрос такой - как привязать соответствие каждого флажка конкретной строке рядом с которой он находиться?...ведь формально связь есть только на экране...а на самом деле флажок то уже при выводе проставляется.. и никак не связан с записями в базе

vadimiron 21-10-2005 10:41 366346

HTML код:

<input type="checkbox" name="var_name">
В аттрибуте name всегда указывается имя переменной, которая будет передана скрипту для обработки. В данном случае var_name. Если я не ошибаюсь, то если checkbox будет отмечен, то значение переменной будет "on".
Теперь вопрос как же, если у нас много записей и много чекбоксов. Ответ: в атрибуте name можно использовать также и массивы, например в вашем случае массив delete[]. В качестве индекса массива используйте такой столбец из базы, который не повторяется, например наверняка это код. Тогда для каждой записи в базе данных пишем вот так:
HTML код:

<input type="checkbox" name="delete[".$kod."]">
А ниже с помощью foreach проходим по массиву delete и удаляем все $kod, у которых значение равно "on"

benya 21-10-2005 16:26 366500

Я обычно привязываюсь по первому полю (обычно id который INT и autoincrement и primary_key).
А что бы так сделать можно передать скрипту целый массив номеров (или имен, цен) тех полей, которые хотим удалить.
А в скрипте написать разбор массива и удаление всех перечисленных номеров полей. Вот и все!

vagner_HATE 31-10-2005 15:08 369198

$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 369215

mass[.$sc.]
А зачем тут точки, либо без них, либо вот так: mass[".$sc."]

vagner_HATE 31-10-2005 16:00 369226

echo"<td align=center><input type=checkbox name='mass[$sc]'></td>";
echo"Значение $sc ".$mass[$sc];

Почему в этом случае опять таки не выводится значение флажка, или если ничего не выводится то это значит что флажок в значении off?

vadimiron 31-10-2005 17:24 369259

vagner_HATE
а вы пишете тег <form> и в нём скрипт, который обрабатывает значения из формы?? иначе mass[$sc] просто не будет существовать

Igor_I 31-10-2005 22:08 369343

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 369529

Спасибо всем, проблема решена..помог понять что у меня не так совет vadimiron'а:

Цитата:

а вы пишете тег <form> и в нём скрипт, который обрабатывает значения из формы?? иначе mass[$sc] просто не будет существовать


Время: 23:29.

Время: 23:29.
© OSzone.net 2001-