Отправляет email-рассылки с помощью сервиса Sendsay

Вебстроительство. Форум !!!

Обработка форм на РНР...

Здравствуйте.

Помогите разобраться с формой.
У меня есть форма. На ней присутствуют элементы: строка текста,
многострочный текст, чекбоксы для выбора нескольких опций.
Значение всех этих элементов необходимо хранить в БД MySQL.
Отсюда и возникли у меня вопросы.

1. Какие должный быть поля для хранения чекбоксов ? Например, на форме
есть раздел "Языки программирования" и Юзер должен указать, какие
именно он знает языки, т.е. поставить галочки в этих чекбоксах.
Как на РНР проверить, какие именно он поставил галочки и как их
потом записать в БД. Как работать с БД я знаю. Меня интересует сама
логика обработки этих чекбоксов и какой тип поля лучше для этого
подходит ?

2. Как сделать обратное: прочитав данные из БД программно
установить нужные чекбоксы при просмотре этой формы ?

Как работать на форму с простыми строка, числами я знаю.

Буду очень рад и признателен, если кто-нибудь подкинет готовые
примеры по работе с формами на РНР.

Ответить   Feniks Thu, 4 Nov 2004 10:33:08 +0200 (#256851)

 

Ответы:

Ну прежде всего про названия чекбоксов. Лучше их сделать массивом.
<input type=checkbox name=primer[0]>
<input type=checkbox name=primer[1] checked>
<input type=checkbox name=primer[2]>
ну и т.д.
Дело в том, что в php значения checkbox передаются в практически в
логическом виде (если checkbox пуст, то передаётся false, если отмечен, то
передаётся значение On)
Тогда если у тебя есть три вышеназванных чекбокса, то в сценарий php
передастся такой массив: $primer=array{false,On,false}
тогда в цикле обрабатываешь данные:
for($i=0;$i<count($primer);$i++) {
if(isset($primer[$i])) { /*Блок необходимых операторов*/ }
}

А вот про поля, ну тут уже от структуры базы зависит. Можно сделать в
таблице количество полей равный количеству чекбоксов и записывать в них
чё-нибудь (да хоть цифры 1-0, хоть строки On-false, хоть логическими поля
сделать, хоть любые другие предложения)
А можно отдельную таблицу для чекбоксов:
idrec - номер записи
iduser - код пользователя
idform - код формы из которой записываются чекбоксы (в принципе на сайте
может быть несколько таких форм)
idcheck - код чекбокса (такой же, каким номером он обозначен в форме)
value - значение (тут уже я говорил, можно написать что угодно)

ну а обратная ситуация надеюсь понятна, что надо выбрать SELECT-ом
информацию о чекбоксах для требуемой формы и если значения имеют
определённое заранее значение, то вставить в форму у чекбокса слово checked

C уважением, Бурляев Вячеслав


Номер выпуска : 245
Возраст листа : 297 (дней)
Количество подписчиков : 184
Адрес в архиве : http://subscribe.ru/archive/inet.webbuild.build/msg/256914
Получить правила : mailto:inet.webbuild.build-rules@subscribe.ru
Формат "дайджест" : mailto:inet.webbuild.build-digest@subscribe.ru
Формат "каждое письмо" : mailto:inet.webbuild.build-normal@subscribe.ru
Формат "читать с веба" : mailto:inet.webbuild.build-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: inet.webbuild.build
Написать в лист: mailto:inet.webbuild.build-list@subscribe.ru
Отписаться: mailto:inet.webbuild.build--unsub@subscribe.ru?subject=inet.webbuild.build

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Thu, 4 Nov 2004 15:30:23 +0500 (#256914)

 

Здравствуйте, Бурляев.

Вы писали 4 ноября 2004 г. в 12:30:23 [GMT +2:00]:

Тут мне пока понятно. Спасибо.
А если ComboBox ? Он передаст в скрипт только то, что выбрано ?
Например, в КомбоБоксе есть значения "Украина","Россия","СНГ"... и
выбрано было "Украина", тогда в РНР будет $Primer="Украина";
Так что ли ?

Нет, такой вариант мне не подходит. У меня одна таблица, где и должны
храниться все данные формы.
Если использовать поля типа Enum для ComboBox и Set для CheckBox ?
С такими типами полей я никогда не сталкивался и не знаю как они
работают. Можно ли их к этому делу приобщить ?

А как правильней вставить данные на форму:
1. <?PHP $Primer="Чего-нибудь из БД">
<input type="Text" name="ProgramLang" value=$Primer>

2.
<input type="Text" name="ProgramLang" value=<?PHP
$Primer="Чего-нибудь из БД"> >

Можно ли в CheckBox-е вместо добавления слово Checked, присваивать
Value = "Yes" ?
И тогда, имея массив Arr, в котором есть (false, true, true, false),
написать следующие :
<input type="Checkbox" name=Arr value=Arr[0]>
<input type="Checkbox" name=Arr value=Arr[1]>
<input type="Checkbox" name=Arr value=Arr[2]>
<input type="Checkbox" name=Arr value=Arr[3]>

Будут ли в таком случае второй и третий чекбоксы отмечены или нет ?

Ответить   Feniks Fri, 5 Nov 2004 09:53:44 +0200 (#257516)

 

Конечно.

А почему бы для Combobox не сделать varchar? А для Checkbox - integer?
C Enum и Set не сталкивался. Всё как-то без них обходился. Так что про них
ничего не могу сказать

Естественно первый вариант более читаемый.

А это уже HTML. Галочка появляется только в том случае , когда у тега input
с типом checkbox имеется свойство checked. Другого не дано.

Ну на счёт будут-не будут можно написать форму и проверить в браузере. И уже
после этого, если не понятен результат проверки написать в дискуссионный
лист. с вопросом "Почему получилось не то, что я хотел?".

С уважением, Бурляев Вячеслав


Номер выпуска : 251
Возраст листа : 298 (дней)
Количество подписчиков : 186
Адрес в архиве : http://subscribe.ru/archive/inet.webbuild.build/msg/257542
Получить правила : mailto:inet.webbuild.build-rules@subscribe.ru
Формат "дайджест" : mailto:inet.webbuild.build-digest@subscribe.ru
Формат "каждое письмо" : mailto:inet.webbuild.build-normal@subscribe.ru
Формат "читать с веба" : mailto:inet.webbuild.build-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: inet.webbuild.build
Написать в лист: mailto:inet.webbuild.build-list@subscribe.ru
Отписаться: mailto:inet.webbuild.build--unsub@subscribe.ru?subject=inet.webbuild.build

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Fri, 5 Nov 2004 14:12:47 +0500 (#257542)

 

Привет, Feniks!

4 ноября 2004 г., 11:33:08, Feniks <csn@b*****.ua> wrote:

Насчет полей - это все зависит от того, как тебе нравится и что тебе
нужно в дальнейшем. Логика обработки такая: допустим у тебя на
странице есть такой чекбокс:

<input type="checkbox" name="galka" value="1">

Тогда вставляешь в PHP такую строку:

$galka = isset($_REQUEST["galka"]) && $_REQUEST["galka"] == 1;

И тогда у тебя в переменной $galka будет логическое значение,
показывающее установлен чекбокс или нет. Дальше делай с ним все, что
хочешь и пиши в любом виде в БД.

Аналогично вставляешь в html такой код:

<input type="checkbox" name="galka" value="1" <?php echo $galka? "checked": ""

Соответственно вместо условия $galka можешь вставить любое условие, в
зависимотси от того, как хранятся значения в базе.

Пашка


Номер выпуска : 246
Возраст листа : 297 (дней)
Количество подписчиков : 184
Адрес в архиве : http://subscribe.ru/archive/inet.webbuild.build/msg/257149
Получить правила : mailto:inet.webbuild.build-rules@subscribe.ru
Формат "дайджест" : mailto:inet.webbuild.build-digest@subscribe.ru
Формат "каждое письмо" : mailto:inet.webbuild.build-normal@subscribe.ru
Формат "читать с веба" : mailto:inet.webbuild.build-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: inet.webbuild.build
Написать в лист: mailto:inet.webbuild.build-list@subscribe.ru
Отписаться: mailto:inet.webbuild.build--unsub@subscribe.ru?subject=inet.webbuild.build

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Thu, 4 Nov 2004 12:22:18 +0300 (#257149)

 

Здравствуйте, Feniks.
Это ответ на письмо mid:20041104113050.2568***@i*****.subscribe

для выбора одного варианта из нескольких надо использовать
radiobutton,
а чекбокс вернет то что указано в свойстве value если он отмечен.
<input type="radio" value="cpp" name="lang">
<input type="radio" value="vb" name="lang">

в обработчике ты получишь $_POST['lang']= "cpp" или "vb" в зависимости
от того что ты выбрал. Если у радиобатонов свойство name одно и тоже
они составляют группу и можно выбрать только один из них.

<input type="checkbox" name="amIgod" value="yes">

у обоих есть свойство checked

Ответить   Thu, 4 Nov 2004 13:23:02 +0300 (#257153)

 

Здравствуйте, Feniks.

Вы писали 4 ноября 2004 г. в 10:33:08 [GMT +2:00]:



Спасибо всем кто ответил на мой призыв.
Я учту все пожелания и советы. :))
Пойду пробовать...

Ответить   Feniks Mon, 8 Nov 2004 10:23:28 +0200 (#259085)