передача чекбоксов форме

survey

Новичок
Есть html, где находятся чекбоксы.
По кнопке "Отправить" через POST отправляем всё это обработчику на PHP

------------ html ------------
HTML:
<table>
              <tr>
                <td><label>
                  <input type="checkbox" name="flag" value="флажок" id="flag_0" />
                  Баннер-1</label></td>
                <td> <a href="pix/3_3_1.png" rel="lightbox" title="Баннер-1; 82 кв.м.; 12,1*6,8 м."><img src="pix/3_3_1_small.png" /></a></td>
                <td>&nbsp;</td>
                <td><label>
                  <input type="checkbox" name="flag" value="флажок" id="flag_1" />
                  Баннер-2</label></td>
                <td> <a href="pix/3_3_2.png" rel="lightbox" title="Баннер-2; 57 кв.м.; 4,9*11,6 м."><img src="pix/3_3_2_small.png" /></a></td>
                </tr>
              <tr>
                <td><label>
                  <input type="checkbox" name="flag" value="флажок" id="flag_2" />
                  Баннер-3</label></td>
                <td> <a href="pix/3_3_3.png" rel="lightbox" title="Баннер-3; 48 кв.м.; 6,0*8,0 м."><img src="pix/3_3_3_small.png" /></a></td>
                <td>&nbsp;</td>
                <td><label>
                  <input type="checkbox" name="flag" value="флажок" id="flag_3" />
                  Баннер-4</label></td>
                <td> <a href="pix/3_3_4.png" rel="lightbox" title="Баннер-4; 48 кв.м.; 6,0*8,0 м."><img src="pix/3_3_4_small.png" /></a></td>
              </tr>
            </table>

---------------- php-------------------
PHP:
/* Проверка флагов */
if(isset($_POST['flag'][$flag_0])) {$button1 = 'Баннер-1';}
if(isset($_POST['flag'][$flag_1])) {$button2 = 'Баннер-2';}
if(isset($_POST['flag'][$flag_2])) {$button3 = 'Баннер-3';}
if(isset($_POST['flag'][$flag_3])) {$button4 = 'Баннер-4';}

В результате переменные $button1-$button4 присваивается Баннер-1 - Баннер-4, не зависимо от того отмечаем чекбокс или нет. Идея была в том что бы присваивать значение только тем переменным, которые отмечены в чекбоксе.

Подскажите плз. что не так?
 

phprus

Moderator
Команда форума
survey
Читай про базовый синтаксис PHP в области переменных, строк и массивов.
 

KorP

Новичок
Ну для начала надо сделать name уникальным или писать в массив
 

phprus

Moderator
Команда форума
Опс. Одинаковые name в html-коде я не заметил, но странную ошибку в использовании синтаксиса PHP я встречаю на этом форуме уже второй раз.
 

Vicfla

Новичок
Может, я ошибаюсь, но должно быть так (по крайней мере, я когда-то так делал и всё было ОК):
HTML:
<table>
              <tr>
                <td><label>
                  <input type="checkbox" name="flag_0" value="флажок" id="flag_0" />
                  Баннер-1</label></td>
                <td> <a href="pix/3_3_1.png" rel="lightbox" title="Баннер-1; 82 кв.м.; 12,1*6,8 м."><img src="pix/3_3_1_small.png" /></a></td>
                <td>&nbsp;</td>
                <td><label>
                  <input type="checkbox" name="flag_1" value="флажок" id="flag_1" />
                  Баннер-2</label></td>
                <td> <a href="pix/3_3_2.png" rel="lightbox" title="Баннер-2; 57 кв.м.; 4,9*11,6 м."><img src="pix/3_3_2_small.png" /></a></td>
                </tr>
              <tr>
                <td><label>
                  <input type="checkbox" name="flag_2" value="флажок" id="flag_2" />
                  Баннер-3</label></td>
                <td> <a href="pix/3_3_3.png" rel="lightbox" title="Баннер-3; 48 кв.м.; 6,0*8,0 м."><img src="pix/3_3_3_small.png" /></a></td>
                <td>&nbsp;</td>
                <td><label>
                  <input type="checkbox" name="flag_3" value="флажок" id="flag_3" />
                  Баннер-4</label></td>
                <td> <a href="pix/3_3_4.png" rel="lightbox" title="Баннер-4; 48 кв.м.; 6,0*8,0 м."><img src="pix/3_3_4_small.png" /></a></td>
              </tr>
            </table>
PHP:
/* Проверка флагов */
if(isset($_POST['flag_0'])) {$button1 = 'Баннер-1';}
if(isset($_POST['flag_1'])) {$button2 = 'Баннер-2';}
if(isset($_POST['flag_2'])) {$button3 = 'Баннер-3';}
if(isset($_POST['flag_3'])) {$button4 = 'Баннер-4';}
 

radioheaded

PHP нуб
А откуда переменные $flag_0, $flag_1 и т.д.? По идее, при таком коде переменные $button вообще не должны получать значения. Обычно для группы чекбоксов ставят имя-массив: name="flag[]", тогда в $_POST['flag'] получите все значения (value) отмеченных чекбоксов. Значения, кстати, пропишите нормальные и уникальные (хотя бы 1, 2, 3...).
 

Vicfla

Новичок
Переменных $flag_0, $flag_1 я тут не вижу. А через POST передаётся какое-либо значение, если флажок был поставлен. Если флажок не поставлен, то значение либо не передаётся, либо нулевое (точно не помню). Если всё-таки нулевое, то поставить ещё одну проверку (есть ли значение) и всё.

Вот пример работающего кода (Notice откючены, говорю на всякий случай):
HTML:
Выводить в меню: <input type=checkbox id=isMenu name='isMenu' /> 
  <br />Выключить распознавание переводов строки: <input type=checkbox name='delBr' id=delBr />
И часть обработчика PHP:
PHP:
if(!$_POST['delBr']) $br = 1; // Проверка, включен ли флажок у чекбокса с именем и id "delBr"
else $br = 0;

$isMenu = 0; // Делаем тоже самое, но для "isMenu"
if($_POST['isMenu']) $isMenu = 1;
 

KorP

Новичок
Интересно, чем эта портянка поможет автору? У него одна такая хрень уже своя есть, ну может более страшная...
 

Vicfla

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