Как объединить значения флажков со значениями текста в php?

Я новичок в PHP, и я создаю html-форму, состоящую в основном из двух вариантов: во-первых, клиент выбирает серию флажков (частей из оборудования), а затем записывает количество каждого выбранного флажка …

<td><input id="11.11.015.0002" name="pecas[]" type="checkbox" value="11.11.015.0002 - BATERIA CHUMBO ACIDO 6V/4AH" /></td> <td><input name="qntd[]" size="7" type="text" /></td> 

и в php:

 if(isset($pecas)) { $mensagem .= "Peças Selecionadas:<br /><br />"; } else { echo "<script>alert('Selecione as Peças Desejadas!'); location.href='http://www.lyuz.com.br/pecas/erro';</script>"; exit; } foreach ($pecas as $pecas_s) { } $mensagem .= " - ".$pecas_s."<br />"; 

Это дало мне все выбранные флажки (части), теперь я пытаюсь получить только input_text (суммы), связанные с этими выбранными флажками.

Я застрял. Помогите.

Related of "Как объединить значения флажков со значениями текста в php?"

Укажите ключ в имени каждого элемента. Используйте число и просто убедитесь, что pecas[1] соответствует qntd[1] . Затем, когда вы перебираете один из массивов, ключи будут одинаковыми в другом массиве. Например:

 <?php $count = 0; foreach($itemList as $item){ echo "<tr>\n"; echo " <td><input type='checkbox' id='{$item['id']}' name='pecas[{$count}]'></td>\n"; echo " <td><input type='test' id='{$item['id']}' name='qntd[{$count}]'></td>\n"; echo "</tr>\n"; $count++; } 

Если есть 3 флажка и количество ящиков, и позволяет сказать, что отмечены 1-й и 3-й боксы, но не 2-й. Ваш массив сообщений будет выглядеть так:

 array( 'pecas'=> array( 0 => 'some value', //notice, no 1 key because the second checkbox was not checked. 2 => 'some other value' ), 'qntd' => array( 0 => 'some qntd', 1 => '' //1 was not checked, so nothing should have been entered in the second textbox. 2 => 'some other qntd' ) ); 

Клавиши 0 (первый флажок) и 2 (третий) будут существовать в массиве «pecas» и будут соответствовать клавишам 0 и 2 в массиве «qntd». Затем вы можете перебрать данные, например:

 //check that at least one checkbox was checked if(!empty($_POST['pecas'])){ //loop over the checkboxes getting key ($k) and value ($v). foreach($_POST['pecas'] as $k=>$v){ //display a message echo "Pecas {$v} ({$k}) was checked with a qntd of {$_POST['qntd'][$k]}<br>"; } } 

+ Изменить

 foreach ($pecas as $pecas_s) { $mensagem .= " - ".$pecas_s."<br />"; } 

в

 for($x = 0; $x < count($pecas); ++$x) { $mensagem .= " - ".$pecas[$x]. ": " . $qntd[$x] . "<br />"; //Example } 

Поскольку кажется, что для каждого $ pecas существует $ qntd, вам просто нужно получить расположение индекса $ pecas и захватить то же самое местоположение индекса в $ qntd

Позвольте мне добавить, однако, что флажки только передаются, если они проверены, поля ввода будут ВСЕГДА пройдены. Таким образом, у вас может быть несоответствие, когда индексы не выравниваются! Возможно, вы захотите использовать некоторый javascript для отключения поля ввода, если его флажок не выбран.

Ну, мне удается решить это с помощью @Jonathan Kuhn с небольшим разным подходом.

В HTML-форме я дал индексы в каждом элементе,

 <td><input id="11.11.015.0002" name="pecas[1]" type="checkbox" value="11.11.015.0002 - BATERIA CHUMBO ACIDO 6V/4AH" /></td> <td><input name="qntd[1]" size="7" type="text" /></td> 

И в файле PHP я заменяю

 foreach ($pecas as $pecas_s) { $mensagem .= " - ".$pecas_s."<br />"; } 

в

 array('pecas'=> array(), 'qntd' => array()); if(!empty($_POST['pecas'])) { foreach($_POST['pecas'] as $k=>$v) { $mensagem .= "- {$v} - QUANT.: {$_POST['qntd'][$k]}<br>"; } } 

И, наконец, моя почта возвращает значение каждого текстового поля, когда флажок установлен! \ О /