Передача массива параметров методом POST
пишу php скрипт для редактирования MySQL баз. Накидал интерфейс формы отправки: данные таблицы выводятся построчно. Допустим в табице 4 столбца, форма выглядит так:
Код:
<form method="POST">
<table>
<tr>
<td><input type="checkbox" name="chbox[]" value=$primarykey></td>
<td><input type="text" name="rows[]" value="Значение столбца 1"></td>
<td><input type="text" name="rows[]" value="Значение столбца 2"></td>
<td><input type="text" name="rows[]" value="Значение столбца 3"></td>
<td><input type="text" name="rows[]" value="Значение столбца 4"></td>
</tr>
<tr>
...
</tr>
...
<input type="submit">
</form>
<table>
<tr>
<td><input type="checkbox" name="chbox[]" value=$primarykey></td>
<td><input type="text" name="rows[]" value="Значение столбца 1"></td>
<td><input type="text" name="rows[]" value="Значение столбца 2"></td>
<td><input type="text" name="rows[]" value="Значение столбца 3"></td>
<td><input type="text" name="rows[]" value="Значение столбца 4"></td>
</tr>
<tr>
...
</tr>
...
<input type="submit">
</form>
Так вот, дело в том, что мне нужно обрабатывать в скрипте только те строки, которые помечены чекбоксом. Поскольку у меня тут все инпуты имеют имя rows[], соответственно при приеме данных, я получаю тупо массив всех инпутов на форме (т.е. огромное множ-во выведенных строк).
Прошу вас, подкиньте идейку, как реализовать прием и обработку данных. Тут еще проблема в том, что мне необходимо передавать значения $primarykey, поскольку в mysql запросе они будут использоваться после WHERE. Т.е. фактически для идентификации строки
ну так ещебы у тебя у всех 1 и тоже имя =)
Товарищ набивает посты)))). Вопрос не решен, продолжаем обсуждение
Цитата: polaroid
Товарищ набивает посты)))). Вопрос не решен, продолжаем обсуждение
У тебя изначально кривая реализация. Поэтому вопрос и не решен. Советую на опыте понять, что браузер посылает в PHP интерпретатор при включенных/выключеных чекбоксах. Когда ты это осознаешь станет понятно, как нужно было поступить.
1) Даешь идентификатор этим полям в виде числа и поля таблицы, т.е. что-то типа:
Код:
<tr>
<td><input type="checkbox" name="chbox[1]" value=$primarykey></td>
<td><input type="text" name="row1_name[1]" value="Значение столбца 1"></td>
<td><input type="text" name="row2_name[1]" value="Значение столбца 2"></td>
<td><input type="text" name="row3_name[1]" value="Значение столбца 3"></td>
<td><input type="text" name="row4_name[1]" value="Значение столбца 4"></td>
</tr>
<tr>
<td><input type="checkbox" name="chbox[2]" value=$primarykey></td>
<td><input type="text" name="row1_name[2]" value="Значение столбца 1"></td>
<td><input type="text" name="row2_name[2]" value="Значение столбца 2"></td>
<td><input type="text" name="row3_name[2]" value="Значение столбца 3"></td>
<td><input type="text" name="row4_name[2]" value="Значение столбца 4"></td>
</tr>
...
<td><input type="checkbox" name="chbox[1]" value=$primarykey></td>
<td><input type="text" name="row1_name[1]" value="Значение столбца 1"></td>
<td><input type="text" name="row2_name[1]" value="Значение столбца 2"></td>
<td><input type="text" name="row3_name[1]" value="Значение столбца 3"></td>
<td><input type="text" name="row4_name[1]" value="Значение столбца 4"></td>
</tr>
<tr>
<td><input type="checkbox" name="chbox[2]" value=$primarykey></td>
<td><input type="text" name="row1_name[2]" value="Значение столбца 1"></td>
<td><input type="text" name="row2_name[2]" value="Значение столбца 2"></td>
<td><input type="text" name="row3_name[2]" value="Значение столбца 3"></td>
<td><input type="text" name="row4_name[2]" value="Значение столбца 4"></td>
</tr>
...
2) Не хранить значение primarykey в чекбоксе. Не для того он предназначен. Т.е. обычно их в hidden поля кидают, хотя, вообще, разницы в данном примере нет куда его пихать.
3) В скрипте идет проверка, примерно такая:
Код:
$i = 1;
while( isset($_POST["row1_name"][$i]) ) {
if( isset($_POST["chbox"][$i]) ) {
// галочка поставлена => обрабатываем как там вам надо
}
$i++;
}
while( isset($_POST["row1_name"][$i]) ) {
if( isset($_POST["chbox"][$i]) ) {
// галочка поставлена => обрабатываем как там вам надо
}
$i++;
}
4) Учим xHTML (для общего развития, так как писать надо правильно))
ЗЫ: не скажу, что это прекрасный код, но вполне подойдет для разъяснения
Огромное спасибо за помощь! Правда, я уже сам реализовал, но предложенный вами вариант мне кажется более логичным, чем мой. Еще раз спасибо и с Рождеством))