Как правильно обработь одну из нескольких переменных, переданную через форму в php скрипт?

01K

Мой дом здесь!
Регистрация
27 Июн 2013
Сообщения
689
Реакции
313
Всем привет!
На странице есть множество input'ов, вида:
Код:
<input type="tel" class="phone_flag" name="phone_tab1[main]" required="">
...
<input type="tel" class="phone_flag" name="phone_tab20[main]" required="">
<input type="tel" class="phone_flag" name="phone_tabXX[main]" required="">
Далее это всё передаётся AJAX'ом в php mailer.

Когда поле телефона было одно, то всё просто обрабатывалось:
Код:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (isset($_POST['name'])) {$name = $_POST['name'];}
  if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
  if (isset($_POST['email'])) {$email = $_POST['email'];}
   ...
}

Сейчас же инпутов более 20.
Вот такой массив приходит в скрипт мэйлера:
Код:
["phone_tab1"]=> array(2) { ["main"]=> string(11) "+7123456789" ["full"]=> string(11) "+7123456789" }
Здесь ["phone_tab1"] - меняется индекс, вплоть до ["phone_tabXX"]

Собственно вопрос, как мне теперь правильно выдернуть ["main"] или ["full"], если я не знаю какой из ["phone_tabXX"] будет передан? Как это правильно обработать и проверить?
 
Привет.
А разве с атрибутом required, не все поля будут обязательно заполнены?!
 
может вопрос не правильно понимаю(или что то упускаю), но что вам мешает получать через POST данные в переменную ?
PHP:
$phone_tab1= $_POST['phone_tab1']
$phone_tab2= $_POST['phone_tab2']

Возможно это рядом с вашим решением ?
Для просмотра ссылки Войди или Зарегистрируйся
 
может вопрос не правильно понимаю(или что то упускаю), но что вам мешает получать через POST данные в переменную ?
в таком случае мне надо будет проверять "N" раз "$_POST['phone_tabX']". Т.е. столько раз, сколько инпутов на странице, когда заполнен будет всего один из "N".
В принципе, проверять то и так надо будет. Вопрос в изящном и универсальном решении :)
 
Если можно менять код инпутов, то поменяй
Код:
<input type="tel" class="phone_flag" name="phone_tab[1][main]" required="">
.....
<input type="tel" class="phone_flag" name="phone_tab[20][main]" required="">
затем просто проверяй массив phone_tab на инициализацию, если да, потом потом foreach
 
я так заколхозил:
Код:
  for ($i = 1; $i <= 16; $i++) {
     if (isset($_POST["phone_tab$i"])){       
       $phone = $_POST["phone_tab$i"]["full"];
     }
   }

Или есть вариант получше?
 
Не меняя инпуты можно и так, все равно будут костылики
 
  • Нравится
Реакции: 01K
еще вот такой фокус можно, если может быть любое количество
PHP:
foreach ($_POST as $key => $value) {
    if (preg_match ('/^phone_tab\d+$/',$key)){
      $phone=$value["full"];
      break;
    }
}
 
Назад
Сверху