Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как брать данные из форм
Форумы портала PHP.SU » PHP » Программирование на PHP » Как брать данные из форм

Страниц (1): [1]
 

1. obi-wan - 11 Октября, 2007 - 08:06:22 - перейти к сообщению
Добрый день!
Есть таблица записей, которые можно отмечать галочками и потом с отмеченными производить всякие действия.
Нет проблем - создал форму, обрамляющую таблицу, и всё.

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

Вопрос:
В ХТМЛ вложенные формы допускаются или нет?
Или я совсем дурак, и для тех полей для ввода нужно использовать ту же самую форму, получая автоматом имена для <input>?
2. evgenijj - 11 Октября, 2007 - 09:29:56 - перейти к сообщению
obi-wan пишет:
Добрый день!
Есть таблица записей, которые можно отмечать галочками и потом с отмеченными производить всякие действия.
Нет проблем - создал форму, обрамляющую таблицу, и всё.

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

Вопрос:
В ХТМЛ вложенные формы допускаются или нет?
Или я совсем дурак, и для тех полей для ввода нужно использовать ту же самую форму, получая автоматом имена для < input ...>?


Ничего не понял. Куда пойти, кого позвать? Опиши подробно - с чувством, с толком, с расстановкой - какая задача стоит, что делал. Неплохо и исходники приложить.
3. obi-wan - 11 Октября, 2007 - 09:45:31 - перейти к сообщению
Щас расскажу.
phpMyAdmin юзали же - видели, как там работа с таблицами происходит.
Ставишь галочку на нужных строках таблицы, выбираешь действие - и оно выполняется.
Мне нужно сделать то же самое.
Можно сделать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <form ....>
  3. <table .... >
  4. ...
  5. <input type="checkbutton" name="blabla1" ...> ...
  6. ...
  7. <input type="checkbutton" name="blabla2" ...> ...
  8. ...
  9. ...
  10. </table>
  11. </form>
  12.  


И вроде никаких проблем.

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

Вижу 2 варианта:
1. Использовать вложенные формы. Но можно ли это?
2. Использовать под те поля для ввода ту же самую форму. Только это не совсем удобно. Будет слишком много данных передаваться за раз из формы.

Непонятно?
4. EuGen - 11 Октября, 2007 - 09:47:41 - перейти к сообщению
1.Вложенные формы в html не допускаются
2.Можно использовать JavaScript для формирования нужного запроса скрипту, если я правильно задачу понял.
5. evgenijj - 11 Октября, 2007 - 09:58:07 - перейти к сообщению
Такой вариант подойдет?

http://forum.php.su/topic.php?fo...=28&topic=34
6. obi-wan - 11 Октября, 2007 - 10:10:31 - перейти к сообщению
Такой вариант не хочется использовать. Я поэтому этот вопрос здесь и задал.

Хочется, чтобы было вот так:

checkbox | имя 1 | характеристика 1 | характеристика 2 | ...
checkbox | имя 2 | характеристика 1 | характеристика 2 | ...
checkbox | имя 3 | характеристика 1 | характеристика 2 | ...
checkbox | имя 4 | поле для ввода 1 | поле для ввода 2 | ...
7. evgenijj - 11 Октября, 2007 - 10:19:47 - перейти к сообщению
obi-wan пишет:
Такой вариант не хочется использовать. Я поэтому этот вопрос здесь и задал.

Хочется, чтобы было вот так:

checkbox | имя 1 | характеристика 1 | характеристика 2 | ...
checkbox | имя 2 | характеристика 1 | характеристика 2 | ...
checkbox | имя 3 | характеристика 1 | характеристика 2 | ...
checkbox | имя 4 | поле для ввода 1 | поле для ввода 2 | ...


Так можно. В обработчике формы пробегаешь по массиву $_POST['id'] и для каждого элемента выполняешь запрос к БД "UPDATE ..."
PHP:
скопировать код в буфер обмена
  1.  
  2. < input type="checkbox" name="id[]" value="12" />
  3. < input type="text" name="name[]" value="name12" />
  4. < input type="text" name="description[]" value="description12" />
  5. < hr>
  6. < input type="checkbox" name="id[]" value="27" />
  7. < input type="text" name="name[]" value="name27" />
  8. < input type="text" name="description[]" value="description27" />
  9. < hr>
  10. .....................................................................
  11.  
8. obi-wan - 11 Октября, 2007 - 10:23:25 - перейти к сообщению
Короче, я решил ограничиться таким способом решения:
PHP:
скопировать код в буфер обмена
  1.  
  2.  <form ....>
  3.  <table .... >
  4.  ...
  5.  <input type="checkbutton" name="blabla1" ...> ...
  6.  ...
  7.  <input type="checkbutton" name="blabla2" ...> ...
  8.  ...
  9.  <input type="checkbutton" name="blabla3" ...> ... <input type="text" name="blabla3_text"> <input type="hidden" name="blabla_id" value="4"> ...
  10.  ...
  11.  ...
  12.  </table>
  13.  </form>
  14.  


Если ограничиться редактированием одной строки за раз, то проблема отпадает. Данные из checkbox передаются только если галочка стоит, а редактируется в один момент только одна строка.

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

Я просто хотел их в отдельные формы выделить для каждой строки, но этому мешает обрамляющая форма для checkbox'ов.\n\n(Добавление)
Спасибо
9. valenok - 11 Октября, 2007 - 13:52:12 - перейти к сообщению
А я делаю вот так

checkbox | имя 1 | характеристика 1 | характеристика 2 | ...
checkbox | имя 2 | характеристика 1 | характеристика 2 | ...
checkbox | имя 3 | характеристика 1 | характеристика 2 | ...

где характеристика 1 это input value='характеристика1'

И где для каждого поля стоит onchange
который проверяет - изменилось ли значение поля от начального
Если изменилось, то записываем название поля и новое значение в hidden input или hidden textareaи только его отсылаем.

Вообще лучше использовать не onchange а onfocus и onblur записывать старое значение а потом сравнивать старое с новым.
Можно стразу передавать JS'у значениея всех полей или при загрузке страницы читать текущие значения а потом onchange сверять их, тогда если пользователь решит поменять на чтото а потом поменять обратно то это поле не отошлётся.

Это в том счлучае если вы боитесь что данных окажется слишком много.

 

Powered by ExBB FM 1.0 RC1