PHP цикл через массив текстовых полей HTML - PullRequest
0 голосов
/ 03 августа 2011

У меня есть HTML-форма с динамическим числом полей-флажков, все из которых инкапсулированы в форму отправки.Когда форма отправлена, я хочу пройтись по значениям каждого поля флажка с помощью скрипта PHP.В то же время мне нужно сохранить определенный идентификатор, связанный с полем флажка, чтобы при циклическом просмотре каждого из них в моем сценарии я мог использовать этот идентификатор для обновления правильной строки в моей базе данных.В настоящее время у меня есть:

<input checked="checked" name="attended_<?php echo($pid); ?>"

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

<input checked="checked" name="attended[<?php echo($i); ?>][<?php echo($pid); ?>]; ?>"

Буду признателен за любую помощь в этом.Спасибо!

Ответы [ 3 ]

1 голос
/ 03 августа 2011

Обычно, когда я создаю флажки, я ставлю индекс в имени. Таким образом, вы можете перебрать все флажки в вашем коде отправки.

<input type="checkbox" name="cbGroup[1]" value="y" />
<input type="checkbox" name="cbGroup[2]" value="y" />
<input type="checkbox" name="cbGroup[3]" value="y" />

и в вашем PHP

foreach($_POST['cbGroup'] as $index=>$checkbox) {}

Вы хотите убедиться, что ваш $ _POST ['cbGroup'] установлен, потому что этого не произойдет, если флажок не установлен.

Редактировать: Извините, я должен научиться читать вопрос полностью хе :) Я использую многомерные массивы в PHP с вводом HTML все время, и я думаю, что я бы так и поступил.

1 голос
/ 03 августа 2011

Допустим, это данные из формы

<input checked="checked" name="attended[1]; ?>"
<input checked="checked" name="attended[2]; ?>"

<input checked="checked" name="attended[3]; ?>"
<input checked="checked" name="attended[4]; ?>"

<input checked="checked" name="hello[1]; ?>"
<input checked="checked" name="hello[2]; ?>"

, это будет выглядеть как массив.не нужно его просто для показа

// $k        =>      $v
$attended[1]='blah blah';
$attended[2]='blah blah';
$attended[3]='blah blah';
$attended[4]='blah blah';

$hello[1]='blah blah';
$hello[2]='blah blah';

научный бит

foreach($attended as $k=>$v){

$sql = "UPDATE mytable SET attended = '$v', hello = '{$hello[$k]}' where id = '$k'";
$query = mysql_query($sql) or die("Cannot query the database.<br />" . mysql_error());

}

все связанные данные должны иметь одинаковый pid, например

<input checked="checked" name="attended[1]; ?>"
<input checked="checked" name="hello[1]; ?>"
1 голос
/ 03 августа 2011

Может быть, вы могли бы сделать это со скрытым полем, которое как бы «связано» с флажком по имени:

<input checked="checked" name="attended_<?php echo($i); ?>"
<input type="hidden" name="attended_<?php echo($i); ?>_reference" value="<?php echo($pid); ?>" />

Таким образом, обрабатывая POST-данные после отправки, вы могли бы снова соединить ссылки с некоторыми строковыми манипуляциями.

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