У меня есть эта форма
<tr> <td> <input type="hidden" name="po[]" value="<?php echo $ord['id'] ?>" /> <input type="hidden" name="acts[]" value="1" /> <input id="acts" value='2' type="checkbox" <?php echo $check ?> name="acts[]" /> </td> <td><img src="<?php echo $pnme['icon'] ?>" style="height: 25px; width: 25px; vertical-align: middle;" /><?php echo $pnme['name'] ?></td> <td><input id="per" style="background: #BDBDBD; width: 100px;" name="per[]" size="5" type="text" class="small" value="<?php echo $ord['fee'] ?>" /></td> <td><input id="dol" style="background: #BDBDBD; width: 100px;" name="dol[]" size="5" type="text" class="small" value="<?php echo $ord['cost'] ?>" /></td> </tr>
Я пытаюсь получить его, чтобы передать другое значение, если флажок не установлен, у меня есть hidden
ввод, но он не передает значения правильно там, где мне это нужно, когда в форме написано, что я обрабатываю информацию
$po = implode(",", $_POST['po']); $po = explode(",", $po); $fee = implode(",", $_POST['per']); $fee = explode(",", $fee); $co = implode(",", $_POST['dol']); $co = explode(",", $co); $act = implode(",", $_POST['acts']); $act = explode(",", $act); print_r($act); for ($i = 0; ; $i++) { if ($i > count($po) - 1) { break; }
например, если я проверяю каждый бокс, он устанавливает массив таким образом
Array ( [0] => 1 [1] => 2 [2] => 1 [3] => 2 [4] => 1 [5] => 2 [6] => 1 [7] => 2 [8] => 1 [9] => 2 [10] => 1 [11] => 2 [12] => 1 [13] => 2 [14] => 1 [15] => 2 [16] => 1 [17] => 2 [18] => 1 [19] => 2 [20] => 1 [21] => 2 )
хотя хотя бы один из них должен иметь значение 2
Я добавил это, пытаясь установить начальное значение 1, думая, что если флажок установлен, он будет перезаписывать значение, но это, похоже, не так
Я не уверен, как справиться с этой ситуацией и заставить ее работать с моим кодом обработки.
В соглашении массива []
динамически создается следующий индекс, поэтому, если у вас есть:
name="acts[]" name="acts[]"
Затем вы получаете:
acts[0] acts[1]
Скрытые и флажковые входы с тем же именем, которые должны содержать проверочное и непроверенное значение, должны иметь одинаковый индекс, поэтому укажите:
<input type="hidden" name="acts[0]" value="1" /> <input type="checkbox" name="acts[0]" value="2" /> <!-- more checkboxes --> <input type="hidden" name="acts[10]" value="1" /> <input type="checkbox" name="acts[10]" value="2" />
Это даст вам массив $_POST['acts']
с 11 элементами, индекс 0-10 со значением 1
или 2
зависимости от того, был ли он установлен или нет.
Кроме того, я не знаю, что вы делаете с implode()
и explode()
. Если вы просто пытаетесь перевернуть числовые ключи, используйте array_values($_POST['acts'])
.