Можно ли обрабатывать отправку форм полностью с помощью PHP или мне нужны другие технологии? - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть форма, которая позволяет пользователям выбирать тип разрешения, на которое они хотят подать заявку. Существует 3 типа разрешений и 8 категорий разрешений.

Пожалуйста, посмотрите на этот скриншот для лучшего понимания: http://imgur.com/qOlv8

Для классов пользователи могут выбрать только 1., но для категорий пользователи могут применять несколько или одно.

Пользователи могут выбрать 2 категории, но 0 классов. Также пользователи могут выбрать 1 класс и 0 категорий. Но пользователь должен хотя бы выбрать что-то из 11 вариантов.

Например. Пользователь подает заявку только на класс 1 ИЛИ Пользователь подает заявку на CAT 2TT и CAT 3PG.

Кодировка моей формы:

  <div class="contents">
  <form id="applicationoptions" method="post" action="s_apply_now.php">
  <div id="optionshead">Class :</div>
      <div id="classoptions">
          <input type="radio" name="class" value="1" /> Class 1 Permit             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="radio" name="class" value="2" /> Class 2 Permit &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="radio" name="class" value="3" /> Class 3 Permit
      </div>
  <div id="optionshead2">Categories :</div>
      <div id="catoptions">
          <input type="checkbox" name="cat" value="1" /> CAT 2PG &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="2" /> CAT 1OR &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="3" /> CAT 2TT <br/><br/>
          <input type="checkbox" name="cat" value="4" /> CAT 3PG &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="5" /> CAT 2OR &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="6" /> CAT 3TT <br/><br/>
          <input type="checkbox" name="cat" value="7" /> CAT 4PG &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="8" /> CAT 3OR
      </div>
  <div class="applynext">
 <input class="applynextbutton" type="submit" name="applynextbutton" value="PROCEED" />
 </div>
  </form>
  </div>

После того, как пользователь проверил их выбор, система разделит выборки и сохранит их в базе данных.

Схема базы данных: разрешение (PID, EID, PTYPE, STATUS, MID, HRID)

Если пользователь ничего не выбрал, система оповестит его и попросит выбрать что-либо

Если пользователь выберет более 2 классов, система предупредит их о выборе только 1 класса.

Что вы, ребята, думаете? Может ли PHP позволить мне достичь этих целей?

P.S .: Скажите, пожалуйста, как я могу сделать пробелы, не используя слишком много &npsb;. Есть ли способ изменить переключатель на флажок и отключить множественный выбор?

Ребята ... У меня проблема ... как мне в php извлечь данные из флажка ?? любой пример ?? я пробовал массив [], но, похоже, он не работает ..

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Да, PHP будет работать. Вы можете получить необходимые данные, отправленные через коллекцию $ _POST, и обмениваться данными с любой базой данных, которую вы используете для их хранения.

Для пробелов я предлагаю изучение CSS и избегать добавления большого количества неразрывных пробелов.

Что касается обработки значений флажка, похоже, что вы хотите позволить пользователю выбрать несколько значений, соответствующих одному имени (класс и кошка). Если у вас есть, PHP просто получит последнее выбранное значение. Вы можете изменить имя ваших входных данных формы, чтобы PHP обрабатывал их как массив в бэкэнде. Затем, когда вы захватите $ _POST ['class'], вы получите массив.

<input type="checkbox" name="class[]" value="1" /> First class
<input type="checkbox" name="class[]" value="2" /> Second class

Если оба из них проверены пользователем, вы увидите это в PHP

$classes = $_POST['class'];
// array(1, 2)

Если бы они только отметили один, у вас был бы только один элемент в массиве.

Вы даже можете сделать его ассоциативным массивом, если наличие ключей в вашем массиве облегчает обработку данных:

<input type="checkbox" name="class[first]" value="1" /> First class
<input type="checkbox" name="class[second]" value="2" /> Second class

и в PHP

$classes = $_POST['class'];
// array('first'=>1, 'second'=>2)
1 голос
/ 02 апреля 2012

Нет проблем для PHP, он смеется, делая это, и становится ленивым. Но без шуток: абсолютно без проблем. Вы можете использовать столько операторов if и else, сколько пожелаете (в течение максимального времени выполнения, но давайте не будем усложнять его, чем оно уже есть).

Что касается вашей проблемы с флажком, как вы и предлагали, то, как вы это сделали сейчас, - правильный путь. Тем не менее, вы можете использовать функцию javascript, чтобы «взломать» стандартную функцию флажка на радио. См. http://www.velocityreviews.com/forums/t80854-how-to-allow-only-one-checkbox-to-be-checked-in-a-group-of-checkboxes.html и / или Javascript и только один флажок - неопределенный для получения информации об этом.

Вы также можете сделать радио лучше, смотрите здесь для получения дополнительной информации об этом http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/ Вы также можете добавить пустое радио с меткой «Ничего», чтобы выбрать, и позволить этому стандарту быть выбранным. Это решит вашу проблему - многие дороги ведут в Рим. :)

Что касается последней проблемы с пространством, используйте правильную косметику.

<div style="width: 250px;">a button</div>
<div style="width: 250px; float: right;">a second button</div>

за экзамен. Вы также можете использовать несколько более старую структуру таблицы:

<table><tr><td width="250">a button</td><td width="250">a second button</td></tr></table>

где таблица - таблица, строка и ячейка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...