У меня есть HTML-форма с динамическим числом полей флажка, все из которых заключены в форму отправки. Когда форма отправлена, я хочу пропустить значения каждого поля флажка с помощью PHP-скрипта. В то же время, я должен сохранить определенный идентификатор, связанный с полем флажка, чтобы при прошивке каждого из них в моем сценарии я могу использовать идентификатор, чтобы обновить правильную строку в моей базе данных. В настоящее время у меня есть:
<input checked="checked" name="attended_<?php echo($pid); ?>"
Я просто не знаю, как идти дальше и получать доступ ко всем полученным [] значениям из моего PHP-скрипта (и одновременно сохранять идентификатор). Можно ли использовать многомерный массив следующим образом?
<input checked="checked" name="attended[<?php echo($i); ?>][<?php echo($pid); ?>]; ?>"
Я был бы признателен за любую помощь в этом. Благодаря!
Обычно, когда я создаю флажки, я помещаю индекс в имя. Таким образом, вы можете прокручивать каждый флажок в коде отправления.
<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-входами, и я думаю, что так я и хожу.
Возможно, вы могли бы сделать это со скрытым полем, которое является «ассоциированным» с флажком по имени:
<input checked="checked" name="attended_<?php echo($i); ?>" <input type="hidden" name="attended_<?php echo($i); ?>_reference" value="<?php echo($pid); ?>" />
Поэтому, обрабатывая POST-данные после отправки, вы можете связать ссылки вместе с некоторыми манипуляциями с строкой.
скажем, это данные из формы
<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]; ?>"