Как я могу сгруппировать элементы формы - PullRequest
24 голосов
/ 27 апреля 2011

Я получил эту форму:

<form method="post" action="" accept-charset="utf-8"> 
<p>
  <label>first_field</label><br />
  <input type="text" id="first_field" name="points[]" /><br />
  <input type="radio" value="inside" name="group_1" checked /><br />
  <input type="radio" value="outside" name="group_1"><br />
</p>
<p>
  <label>second_field</label><br />
  <input type="text" id="second_field" name="points[]" /><br />
  <input type="radio" value="inside" name="group_2" checked /><br />
  <input type="radio" value="outside" name="group_2"><br />
</p>
</form>

Что я хочу сделать, это проверить, проверяется ли внутри или снаружи, если снаружи, я проверил точки умножения для данного ввода текста на 1,5.Кстати, это нужно рассчитать в PHP.

Как я могу это сделать?

ОБНОВЛЕНИЕ

Array
(
[bonus] => Array
    (
        [points] => Array
            (
                [0] => 0
                [1] => 0
                [2] => 0
                [3] => 0
                [4] => 0
                [5] => 0
                [6] => 0
                [7] => 0
                [8] => 0
                [9] => 0
                [10] => 0
                [11] => 0
                [12] => 0
                [13] => 0
                [14] => 0
            )

        [group] => Array
            (
                [0] => inside
                [1] => outside
                [2] => outside
                [3] => inside
                [4] => inside
                [5] => inside
                [6] => inside
                [7] => inside
                [8] => outside
                [9] => inside
                [10] => inside
                [11] => inside
                [12] => outside
                [13] => inside
                [14] => inside
            )

    )

)

Выше приведен результат print_r ($ _ POST)

Теперь, как мне сравнить / урезать массив точек с массивом группы так:

points [0] «подключается» к группе [0] и т. Д .?

Ответы [ 3 ]

67 голосов
/ 27 апреля 2011

Как оказалось, вы можете группировать поля, используя формы HTML.Проверьте этот код здесь: (особенно обратите внимание на атрибуты name)

<form method="post" action="" accept-charset="utf-8">
<p>
  <label>first_field</label><br />
  <input type="text" id="first_field" name="field[1][points]" /><br />
  <input type="radio" value="inside" name="field[1][group]" checked /><br />
  <input type="radio" value="outside" name="field[1][group]"><br />
</p>
<p>
  <label>second_field</label><br />
  <input type="text" id="second_field" name="field[2][points]" /><br />
  <input type="radio" value="inside" name="field[2][group]" checked /><br />
  <input type="radio" value="outside" name="field[2][group]"><br />
</p>
</form>

Не заполняя ничего, это даст массив POST, подобный этому:ответил на ваш вопрос, это изящный маленький трюк, я не видел, чтобы многие другие обсуждали.Стоит отметить, что вам нужно вручную указать идентификационный номер в любом наборе скобок.Вы можете использовать только [] в качестве последнего набора скобок.

2 голосов
/ 18 ноября 2014

Я расширяю этот ответ , потому что мне потребовалось некоторое время, чтобы отследить код PHP, который будет анализировать данные из формы.

Использование этого метода в HTML приведет кв массиве пары ключ-значение.

  <input type="text" id="first_field" name="field[1][points]" /><br />
  <input type="radio" value="inside" name="field[1][group]" checked /><br />
  <input type="radio" value="outside" name="field[1][group]"><br />

Вот так я использовал PHP для разбора массива.

foreach ($_POST as $record => $detail) {
// The submit button from my HTML form was POSTing data
// so I used an if statement to remove it from the result set
if(empty($firstRow))
{
    $firstRow = 1;
}
else
{
    // since $detail is still an array, you have to loop through it again
    foreach ($detail as $key => $value) {
            echo $key."<br/>";
            // $key would contain the key value (1 or 2)
            echo $value['points']."<br/>";
            echo $value['group']."<br/><br/>";
    }
}

}

Надеюсь, этот ответ поможет!

0 голосов
/ 27 апреля 2011

Вам просто нужно перехватить то, что возвращается в переменной $_POST, и обработать это.Если вы выполните var_dump($_POST) после заполнения формы, у вас должно быть лучшее представление о том, что делать.

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