Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > <form>, передача параметров


Автор: Фолко 26.4.2006, 22:38
Доброго всем времени суток!
Народ помогите плиз, проде ламерский вопрос, но я что-то застопорился и ничего не могу придумать ^ ^.
У меня на одной страничке 1.php формочка и в этой формочке есть флажки
checkbox 
Код

<input type="checkbox" name="checkbox_rus_sound" value="rus_sound">Русс. звук<br>
<input type="checkbox" name="checkbox_rus_subs" value="rus_subs"
checked=checked>Русс. сабы<br>
<input type="checkbox" name="checkbox_eng_subs" value="eng_subs">Англ. сабы<br>

И когда значит нажимаем на Submit данные должны передаваться в 2.php и там обрабатываться.
Если флажки поставлены - все нормально, моя переменная на 2.php видна
$checkbox_rus_sound == "rus_sound" например, ок, 
НО если флажки НЕ поставлены то переменная уже не видна smile
"Notice: Undefined variable: checkbox_rus_sound in x:\home\folko.h16.ru\www\add.php on line 33"
Чтобы можно сделать ? ^ ^
Заранее спасиба! 

Автор: Satana 26.4.2006, 22:58
Фолко, хм а как ты обрабатываешь это во втором скрипте? 

Автор: Rock 26.4.2006, 23:01
здесь можно и без value, т.к. это checkbox
Код

if (isset($checkbox_rus_sound)) {
    echo "Вы выбрали русский звук";
}

Но если честно, я не вошебник, я только учусь, поэтому не уверен в правильности, но сделал бы так.   

Автор: Mal Hack 26.4.2006, 23:22
Цитата(Rock @  26.4.2006,  23:01 Найти цитируемый пост)
Но если честно, я не вошебник, я только учусь, поэтому не уверен в правильности, но сделал бы так. 

Алгоритм верен, реализация - нет.

Читаем тут: http://vingrad.ru/PHP-ART-002846 

Автор: Фолко 26.4.2006, 23:27
Спасиба! Вариант isset($checkbox_variable) помог ^ ^
Но это применительно только к чекбоксам.
А например Radio Buttons? Если не выбрана ни одна RadioButton?

Satana. Допустим я хочу просто вывести значение на экран.
Код

1.php
<td align=right>Рейтинг:</td>
<td align=left>
<input type="radio" name="rating" value="rating0" checked=checked>0<br>
<input type="radio" name="rating" value="rating1">1блабла<br>
<input type="radio" name="rating" value="rating2">2блабла<br>
<input type="radio" name="rating" value="rating3">3 блабла<br>
</td>

Код

2.php
if ($rating == "rating1") echo "Ура! Заработало! ^^";

Если та же радиокнопка выбрана то в мой второй файл 2.php отправится ее значение value а вот если ни одна кнопка не выбрана тогда value не отправляется и ругается что не может найти переменную $rating.

Я сейчас просто поставил значение по умолчанию - чтоб хотябы одна радиокнопка была всегда выделена.

Добавлено @ 23:33 
А, ну хотя впринципе почти также можно сделать и с Radio Buttons.... ^ ^ 

Автор: Ivushka 27.4.2006, 08:23
при нажатии на Submit у тебя либо передается value или не передается ничего.
для этого используют проверку на передачу, т.е. передоно ли значение вообще а потом какое значение передано
Код

if ((isset($rating)) and ($rating == "rating1")) echo "Ура! Заработало! ^^";
 

Автор: ZlojEzh 27.4.2006, 09:24
неприятная ситуация получается, если заранее не известно, какие именно чекбоксы и с какими именами будут в форме
в таком случае варинты с isset не проходят

боремся так:
Код

<input type='hidden' name='ch_1' value='0'>
<input type='checkbox' name='ch_1' value='1'>Ch_1

<input type='hidden' name='radio_1' value='0'>
<input type='radio' name='radio_1' value='1'>Radio_1_1
<input type='radio' name='radio_1' value='2'>Radio_1_2
 

Автор: R.M. 27.4.2006, 10:26
ZlojEzh, можно и на сервере
Код
if (!isset($radio_1)) {$radio_1 = '0';}
 

Автор: ZlojEzh 27.4.2006, 18:12
Цитата(ZlojEzh @  27.4.2006,  09:24 Найти цитируемый пост)
 если заранее не известно, какие именно чекбоксы и с какими именами будут в форме

 

Автор: Mal Hack 27.4.2006, 18:16
Цитата(ZlojEzh @  27.4.2006,  09:24 Найти цитируемый пост)
какие именно чекбоксы и с какими именами будут в форме

А тогда, пардон не правильно построена работа системы. Либо мы получаем данные которые на фиг не нужны, либо мы должны работать с лдинамическим содержимом, но это уже другой подход. 

Автор: ZlojEzh 27.4.2006, 22:26
конечно с динамическим

такая вот задача стоит:
есть некая сущность имеющая порядка тысячи характиристик
причем наборы характеристик изменяются в зависимости от типа конкретного объекта
из этой тысячи приблизительно по ста характеристикам нужно организовать поиск
наборы типов должны меняться через веб-интерфейс
управление наборами характеристик - аналогично
управление отображанием объектов каждого типа - аналогично
+ динамическое формирование форм заполнения информации об объектах
+ перевод отображения объектов на n-ное количество

такая вот, в общих чертах, система (подробнее рассказать не могу - разглашение корпоративных секретов получится )) )

Mal Hack, не спорю, можно все это организовать и через isset/empty
хранить информацию обо всех чекбоксах и радио в отдельных таблицах
обрабатывать эти списки при занесении информации в базу и заполнять недостающие поля

но, имхо, удобнее сразу получать полный список значений, уже готовый (после проверки данных, конечно) к записи в базу 

Автор: Mal Hack 27.4.2006, 22:33
Цитата(ZlojEzh @  27.4.2006,  22:26 Найти цитируемый пост)
Mal Hack, не спорю, можно все это организовать и через isset/empty
хранить информацию обо всех чекбоксах и радио в отдельных таблицах
обрабатывать эти списки при занесении информации в базу и заполнять недостающие поля

Это - статика...

Динамика, когда ты грубо говоря, получаешь чекбоксы, не зная их имен пишешь в множество, к примеру. Вообще таких задач очень мало, и для простого применения в веб-технологиях динамика передаваемых параметров (в таком виде) мало используется. 

Автор: InfMag 28.4.2006, 20:15
Вот, если нажата хоть одна радиобаттон, то выполняется определенное действие, если не нажато ни одной, то выдается ошибка:
Код

if (isset($_POST['rating']))
{
     switch ($_POST['rating'])
     {
          default:
               echo '<div align="center"><font color="#ff0000">Ошибка! Не выбран ни один вариант!</font></div>';
          break;
          case "rating0":
               echo '1 вариант';
          break;
          case "rating1":
               echo '2 вариант';
          break;
          case "rating2":
               echo '3 вариант';
          break;
          case "rating3":
               echo '4 вариант';
          break;
     }
} else echo '<div align="center"><font color="#ff0000">Ошибка! Не выбран ни один вариант!</font></div>';
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)