2015-06-23 3 views
0

У меня есть html-форма, которая передает массив в php, а затем делает цикл for для печати значений. Это код, который я имеюphp для цикла массива

$payloads = $_POST['topay']; 
$loadNum = $_POST['loadnum']; 
$unit = $_POST['unit']; 
$driver = $_POST['driver']; 

for($i=0;$i<count($payloads);$i++) 
    { 
     echo $payloads[$i]; 
     echo "<br>"; 
     echo '<td width="50" valign="top">'.$loadNum[$i].'</td>'; 
     echo '<td width="50" valign="top">'.$unit[$i].'</td>'; 
     echo '<td width="150" valign="top">'.$driver[$i].'</td>'; 
    } 

$ _POST [ «topay»] является флажок массив, который я прохожу в котором только те элементы, которые проверяются проникнет через. Например, в форме, которую я передаю на php, есть несколько флажков, и они должны пропускать только те, которые были проверены. Когда я делаю первое эхо в цикле for, он корректно выводит значения, но эхо в этом случае нет.

Значения:

$loadNum = [5,6] 
$unit = [101,103] 
driver = ["joe", "mike"] 

Когда оба эти флажки проверяются, выход работает правильно. Когда первый флажок установлен, выход работает правильно. Однако, если бы я только проверить второй (6, 103, «Майк»), выход по-прежнему выходит на (5,101, «Джо»)

EDIT: здесь является HTML код, который я отправить это PHP страница:

echo '<form action="statement.php" target="_blank" METHOD="post">'; 
echo '<td><input type="checkbox" name="topay[]" value="'.$loadNumber.'" checked></td>'; 
echo '<td width="70"><input type="hidden" name="loadnum[]" value="'.$loadNumber.'" />'. $loadNumber.'</td>'; 
echo '<td width="70"><input type="hidden" name="unit[]" value="'.$unit.'" />' .$unit.'</td>'; 
echo '<td width="150"><input type="hidden" name="driver[]" value="'.$driver.'" />' .$driver.'</td>'; 
?> 
<p><input type="submit" name="sumbit" value="Create Statement" /></p> 
+1

Что вы подразумеваете под «, но эхо в пределах этого нет»?? Кроме того, вы можете разместить html-форму также, спасибо. – Juank

+0

, пожалуйста, разместите свой html-код .... –

+0

Вам нужно установить ключи ввода формы одинаковыми, а затем отбросить только проверенный ключ. – Sean

ответ

1

Предполагая, что вы правильно назвали входные значения, например:

<input name="topay[0]" type="checkbox"> 
<input name="loadnum[0]" value="5"> 
<input name="unit[0]" value="101"> 
<input name="driver[0]" value="joe"> 

<input name="topay[1]" type="checkbox"> 
<input name="loadnum[1]" value="6"> 
<input name="unit[1]" value="103"> 
<input name="driver[1]" value="mike"> 

принять к сведению topay[0] и topay[1] нотации, что я использую, в отличие от ваших входных значений формы что использовать topay[]: значения поля

<input type="checkbox" name="topay[]" value=" ... 
<input type="hidden" name="loadnum[]" ... 
<input type="hidden" name="unit[]" ... 

Чекбокс отправляются только в форме представления, если они проверяются, так что это будет отправлено:

  • Если только первый флажок ->[5]
  • Если оба флажка проверяются ->[5, 6]
  • Если только второй флажок ->[6]

Используя схему именования я предложил ранее, это будет отправлено:

  • Если только первый флажок ->[5]
  • Если оба флажка проверяются ->[5, 6]
  • Если только второй флажок ->[1 => 6]

с этими именами полех исправленных, вы должны итерируете $payloads массива, используя foreach так что вы можете получить ассоциативный ключ ; это важно, потому что только проверенные значения отправляются с формой.

foreach ($payloads as $key => $payload) { 
    echo $payload, '<br>'; 
    printf('<td width="50" valign="top">%s</td>', $loadNum[$key]); 
    printf('<td width="50" valign="top">%s</td>', $unit[$key]); 
    printf('<td width="50" valign="top">%s</td>', $driver[$key]); 
} 
+0

К сожалению, я все равно получаю тот же результат. Если оба флажка отмечены, я получу оба выхода. Если установлен первый флажок, я также получу правильный результат. Но если отмечен второй флажок, он выдает первые значения (5,101, «joe») –

+0

@HarisP Этого не должно произойти с кодом и HTML, которые я ввел в свой ответ; это поможет, если вы добавили в свой вопрос вывод 'var_dump ($ _ POST);' когда вы только проверили второй флажок. –

+0

@HarisP Проблема в том, что вы используете 'topay []', а не 'topay [0]' и 'topay [1]', как в моем ответе. –

Смежные вопросы