2012-04-15 3 views
1

Хорошо, у меня есть index.html с формой следующим образом:обработка PHP несколько флажков

<form action="process.php" method="post"> 
    <table> 
    <tr> 
     <td><input name="Field[]" type="checkbox" value="Accounting" />Accounting</td> 
     <td><input name="Field[]" type="checkbox" value="Finance" />Finance</td> 
     <td><input name="Field[]" type="checkbox" value="Marketing" />Marketing</td> 
    </tr> 
    </table> 
</form> 

И я process.php следующим образом:

<table> 
    <tr> 
    <th>Field(s):</th> 
    <td> 
     <?php 
     if(isset($_POST['Field'])) 
     { 
      for($i = 0; $i < count($_POST['Field']); $i++) 
      { echo $_POST['Field'][$i] . ' '; } 
     } 
     ?> 
    </td> 
    </tr> 
</table> 

Но по какой-то причине, я только получите первую букву последнего флажка, который был распечатан. Помоги пожалуйста!

+0

Этот сценарий работает на моем сервере, для некоторых быстрой сортировки, попробуйте 'var_dump ($ _ POST);' и убедитесь, что индексы '$ _POST [«поля»] ', что вы думаете, что они , Также, какую серверную платформу/версию вы используете? – Foran

+0

Я запускаю XAMPP на Windows 7 Professional, поэтому Apache/Windows 7 Pro. Кроме того, будет ли я эхо var_dump ($ _ POST)? Я все еще изучаю PHP, поэтому не знаю. –

+0

Учитывая, что ответ Мухаммеда ниже работает, я бы сказал, что ваша серверная среда генерировала разные индексы. 'var_dump ($ _ POST)' является хорошим инструментом отладки/выводом, когда все работает не так, как ожидалось, и ему не нужно 'echo' – Foran

ответ

5
Try this one in process.php to get the values from $_POST['Field'] 

    <table> 
    <tr> 
    <th>Field(s):</th> 
    <td> 
     <?php 
     if(isset($_POST['Field'])) 
     { 
      foreach ($_POST['Field'] as $value) { 
      echo $value; 
      } 
     } 
     ?> 
    </td> 
    </tr> 
    </table> 
+1

. Он работает, как вы теперь предоставили, но теперь моя проверка ошибок JavaScript на индексе. html больше не проверяет данные формы перед отправкой. Я не изменял страницу index.html, поэтому я полностью смущен в этой точке. –

+2

Это не повлияет на код javascript, так как process.php работает на стороне сервера. Пожалуйста, дважды проверьте код javascript в index.html или разместите здесь свой код index.html. Поэтому кто-то может проверить это и предоставить вам четкое объяснение. –

+1

Nevermind, я обнаружил ошибку, используя firebug. Когда мне нужно было переименовать флажки с помощью [], добавленного в конец их имени, он нарушил проверку JavaScript для этого поля. Поэтому вместо проверки имени поля мне пришлось изменить на массив элементов, т. Е. Вместо: for (var i = 0; i

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