Использование массивов в форме

  • Автор темы Nicolas Prof
  • Дата начала

Nicolas Prof

Guest
Использование массивов в форме

Всем конечно известна прелесть, использования массивов в форме. Все таки с массивом легче работать чем с набором переменных. Но...
Конечно же кириллица была всегда большим бичем. Не приятно получать что-то вроде этого %XX%XX%XX, но...
Вот пример:
Код:
<form method=get action=./lib/obrabotchik.php>
<input type=hidden name=qt[] value=1>
<input type=hidden name=qt[] value=num>
<input type=hidden name=qt[] value=notedit>
...
</form>
Я здесь и близко кириллицы не вижу но почему то в запросе символы [ и ], разбираются как кириллица, вот URL
Код:
http://primer/lib/obrabotchik.php?qt%5D%5E=1&qt%5D%5E=num&qt%5D%5E=notedit
Comment: %5D%5E - пример, точно не помню.
Инфо:(Хотя нужно ли;))
PHP 4.3.10
IIS 5.1
Windows XP(Отладка на Localhost'е просто;))
Вообщем вот такая беда. А ой как неудобно без массивов.
 

Nicolas Prof

Guest
Gas
А дело вот в чем...
Обращаясь к переменной, переданной с формы
$takipaki=$takipaki+$_GET['qt[0]']
Получаю "Соси лапу, такая переменная как qt не определена!"
 

Panchous

Павел
Nicolas Prof
так ты же массивы передавал!!!
вот и используй их))))
print_r($_GET['qt'] );
 

Nicolas Prof

Guest
Panchous
А чем тебе не нравиться эта строка,
$_GET['qt[0]'], это что неверно?
 

Panchous

Павел
Nicolas Prof
не трать свое и чужое время!
просто напиши эту строчку и посмотри:
print_r($_GET['qt'] );
 

Nicolas Prof

Guest
Panchous
Ок. Но все же почему символы [] разбираются как кириллица?
 

Nicolas Prof

Guest
Все нормально!
print_r($_GET['qt'] );
Выдает нужный результат, но это не то что мне нужно!
Как достучаться к определенному элементу массива
$_GET['qt[0]'], так нельзя
Неужели нужно написать функцию которая выдрала бы массив из $_GET, и потом уже с ним работать...
Или все же как к многомерному массиву нужно стучаться
$_GET['qt'][0]
Просто для меня ново, использовать массив в формах. Но все же нужно когда то начинать ;)
 

Nicolas Prof

Guest
Значит так. Для комрадов, которые тоже наткнутся на этот "подводный камень", а точнее не камень, а просто в любом учебнике просто это упускают, только затрагивая внимение, на том что можно использовать массивы, а как потом их обработать. Самс думай.
Значит:
<form method=get action=./lib/obrabotchik.php>
<input type=hidden name=qt[] value=1>
<input type=hidden name=qt[] value=num>
<input type=hidden name=qt[] value=notedit>
...
</form>

Тогда $_GET[] становится многомерным $_GET['qt'][0], $_GET['qt'][1], $_GET['qt'][2], в которых соответственно 1, num, notedit
Проще паренной репы. Сегодня взялся, сегодня же и разобрался, мне это нравиться ;)
А это все непросто так. Сейчас начали работать над системой тестирования (типа Moodle), только немного покруче ;), у нас в тестировании будут все существующие типы вопросов. И получается будет работа с формами,а точнее с большими формами, и без массивов не обойтись :)

-~{}~ 24.02.05 19:59:

Gas
Спасибо за наставления, просто 15 мин. назад я начал разбираться с этой проблемой, так что голова уже обработала эту чехарду ;)
 

GeT

Новичок
Nicolas Prof
молодец, я это выше написал =))) про многомерный массив. :D
 
Сверху