Jump to content
  • 0

Обработка формы не зная заранее сколько там элементов


pix_l
 Share

Question

т.е. я получаю выборку из БД и напротив каждой строки размещаю input. при нажатии на кнопку, если в поле введено значение, значит оно записывается в БД, а если нет, то пропускается. Но вот как мне цикл постоить, если я не знаю 2 там записи или 20?

Link to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 0

<input name="mass[1]">
<input name="mass[2]">
<input name="mass[3]">
<input name="mass[4]">
****
<input name="mass[11]">

И на выходе получаешь массив кол-во элементов которого можно сосчитать или обработать пока не кончится

Link to comment
Share on other sites

  • 0
<input name="mass[1]">
<input name="mass[2]">
<input name="mass[3]">
<input name="mass[4]">
****
<input name="mass[11]">

И на выходе получаешь массив кол-во элементов которого можно сосчитать или обработать пока не кончится

а этот массив нужно както первоначально объявлять или нет? и можно ли использовать многомерный массив? опять же как мне этот массив передать на другую страницу? ведь я не смогу отправить эти данные в БД прямо на той же странице где их заводят.

Link to comment
Share on other sites

  • 0
ведь я не смогу отправить эти данные в БД прямо на той же странице где их заводят.

Ну вообщето можете. Отправляете куда хотите, точнее куда укажет параметр action в <form action="?">

и можно ли использовать многомерный массив?

Можно

опять же как мне этот массив передать на другую страницу?

Если методом POST, то соответственно ваш массив будет $_POST[mass], Если GET то аналогично

Link to comment
Share on other sites

  • 0
Аргументируйте! Тыкните меня невежду в документ!

З.Ы. Я не нашёл такого, но не исключаю вашу правоту.

Не там искали, значит

http://www.w3.org/TR/html401/types.html#type-cdata

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

Link to comment
Share on other sites

  • 0

Хм ... Действительно... Спасибо!

Но понять не могу почему эта конструкция проходит валидацию.

да и везде адекватно работает ...

s0rr0w, а есть способы решения? этой проблемы другим способом?

Link to comment
Share on other sites

  • 0
Хм ... Действительно... Спасибо!

Но понять не могу почему эта конструкция проходит валидацию.

да и везде адекватно работает ...

s0rr0w, а есть способы решения? этой проблемы другим способом?

Потому что валидатор не валидирует значения аттрибутов.

Есть, сериализация параметров. Проходим по всем элементам формы и, если имя одинаковое, то некому массиву присваиваем значение этого элемента. Потом ряд массивов складываем в строку и в таком виде отправляем на сервер уже.

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

Link to comment
Share on other sites

  • 0
супер, в итоге я так и не понял нужно ли мне массивы мучать или же нет?

Тебе нужно JS мучать.

У тебя есть форма

input name="mass">

<input name="mass">

<input name="mass">

<input name="mass">

Создаешь временный объект, потом идешь по всем элементам формы и смотришь, если в массиве нет поля с данным именем, добавляешь в объект новое поле. Иначе добавляешь к значению уже существующего поля значение элемента формы.

В итоге ты должен получить нечто вроде

tmpObj = { mass: "qq,,eer,ew,qwer,ww" }

Некоему хиддену присваиваешь tmpObj.toString() и получаешь на входе в свой серверный скрипт готовую json строку. Дальше разберешься :rolleyes:

Link to comment
Share on other sites

  • 0

<input name="mass[1]">

<input name="mass[2]">

<input name="mass[3]">

<input name="mass[4]">

****

<input name="mass[11]">мне похоже такой тип не подходит, т.к. мне нужно 2 параметра - mass[1] - будет содержать value этого input, а мне дополнительно нужно привязать еще и ID-строки в БД, что бы можно было сделать update по конкретному условию.

Link to comment
Share on other sites

  • 0

а как потом связывать между собой input value и hidden value? т.е. по input name я получаю значение, введенное в бокс, по hidden name я получаю идентификатор массива а по hidden value я получаю идентификатор строки в БД - как все это связать?

Позже:

есть у меня одна догадка, завтра на работе попробую

Edited by pix_l
Link to comment
Share on other sites

  • 0
а как потом связывать между собой input value и hidden value? т.е. по input name я получаю значение, введенное в бокс, по hidden name я получаю идентификатор массива а по hidden value я получаю идентификатор строки в БД - как все это связать?

Позже:

есть у меня одна догадка, завтра на работе попробую

$arr1 = [ "a", "b", "c", "d" ];

$arr2 = [ 10, 12, 334, 454 ];

Угадайте с однога раза, как их связать? :rolleyes:

Link to comment
Share on other sites

  • 0
array_combine() :rolleyes:

спасибо за ответ (но для таких вещей я еще не дорос). я сделал проще, т.к. количество значений в обоих массивах одинаково - я просто в одном цикле опрашиваю сразу значения обоих массивов. но без подсказок с форума я бы до этого не дошел. спасибо всем за ответы.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy