Массивы в GET запросах

12
demko73
На сайте с 14.01.2009
Offline
52
3004

Доброго времени.

Появилась небольшая трудность, работать то можно, но вот выглядит строка браузера только паршиво.

<? 

$a='';
$a=$_GET['a'];
?>
<form action="olo.php" method="GET">
<select name="a[]">
<option value="1">One1</option>
<option value="2">One2</option>
<option value="">null</option>
</select>
<select name="a[]">
<option value="88">One8</option>
<option value="99">One9</option>
<option value="">null</option>
</select>
<select name="a[]">
<option value="">null</option>
</select>

<input type="submit" />
</form>
<?

print_r ($a);

Вот смотрите, так называемых СЕЛЕКТОВ у меня мб бесконечное множество, из-за этого я не передаю попеременно из каждого селекта, а передаю просто в массив, получаю в браузере строку вида:

*.php?a[]=1&a[]=88&a[]=

как мне выйти из такой ситуации, приемлем метод даже чтобы в запросе было чтото вида

*.php?var=1,88,

это его изменит немного.

Конечно можно POST метод использовать, но в моём варианте незя((( хелп советом

Лучше не бывает (http://porno-engine.ru)
S
На сайте с 11.03.2010
Offline
29
#1

Я считаю, что всетаки разумнее былобы сделать методом POST, но как вариант, данный селект можно обработать яваскриптом, прямо на странице, а затем сформировать переход по удобному URL, например ты выбрал какието параметры, скриптом сделал преобразование типа ?a=1_2_33_15 и делаешь переход, а в php уже разбиваешь в массив полученный GET

P.S. Тока в твоей форме у тебя несколько селектов с одним именем, кажется так нельзя, получается что в первом селекте присвоил перемоенной одно значение, а в последнем тойже переменной другое. Но опятьже темже яваскриптом, ты бы мог объеденить разные селекты в одну переменную, кстати можно и через запятую как в твоем варианте

maldivec
На сайте с 04.11.2008
Offline
160
#2
secach:
P.S. Тока в твоей форме у тебя несколько селектов с одним именем,

Где?

10 где

demko73
На сайте с 14.01.2009
Offline
52
#3

secach Я думаю что можно конечно поиграться с сессиями, но мне тож вариант этот не нравится, всё хочется решить банальным гетом, сейчас думаю как. просто суть в том что я организую поиск, т.е. это чтото полей соответствия что я привёл, потом на основе этиих параметров будет делаться выборка из бд, а ввиду того что там много данных будет, для этого постраничный вывод хочется. Я если сделаю пост запрос, то хз как сделать постраничный вывод затем((((

P.S. Тока в твоей форме у тебя несколько селектов с одним именем, кажется так нельзя, получается что в первом селекте присвоил перемоенной одно значение, а в последнем тойже переменной другое.

Это не переменная, это массив

a[] 
, вобщем если запустите мой скрипт на денвере к примеру, увидите, что всё работает
print_r ($a);
- выведет 3и элеманта массива
S
На сайте с 11.03.2010
Offline
29
#4
demko73:
Д
<select name="a[]">
<option value="1">One1</option>
<option value="2">One2</option>
<option value="">null</option>
</select>
<select name="a[]">
<option value="88">One8</option>
<option value="99">One9</option>
<option value="">null</option>
</select>
<select name="a[]">
<option value="">null</option>
</select>

<input type="submit" />

три селекта с именем a[], у тебя вообще сколько полей выбора?

Можно сделать

напрмер <select name="a">

<select name="b">

<select name="с">

<input type="submit" />

<input type="button" value="Искать" OnClick="val(form);"/>

<script language= "JavaScript">

function val(obj)

{

var s =\'tools.php?code=\'+ obj.a.value+'_'+obj.b.value+'_'+obj.c.value;

window.location.replace(s);

Но за правильность кода не ручаюсь }

demko73
На сайте с 14.01.2009
Offline
52
#5

secach вот, вот суть в том, что пользователь может задать любое кол-во!, поэтому не зря я в первом посте написал, что

Вот смотрите, так называемых СЕЛЕКТОВ у меня мб бесконечное множество, из-за этого я не передаю попеременно из каждого селекта, а передаю просто в массив, получаю в браузере строку вида:

тут то и возникает трудность_)))

S
На сайте с 11.03.2010
Offline
29
#6

если не заморачиваться, можно и методом POST, затем в PHP проверяешь пост, из него формируешь GET и header уже на удобный GET. А вообще такие вещи лучше реализовать на ajax, но я там пока не силен

secach добавил 21.09.2010 в 09:26

пользователь может задать 100 селектов и потом выберать их все на одной странице?!

можно и массивом, кто запрещает в скрипте организовать массив?

А какого вида база если не секрет, что-то я немогу представить стока параметров для выборки,

особенно, чтобы их задавал пользователь

Наверное можно так

function val(obj)

{

var s =\'tools.php?code=\'+ obj.a[1].value+'_'+obj.a[2].value+'_'+obj.a[3].value;

window.location.replace(s);

только там где идет сложение нужно поставить цикл, по перебору массива a[]

demko73
На сайте с 14.01.2009
Offline
52
#7

secach Массив там есть, эти селекты, это номера из бд.

ВОбщем наверное суть такая получается: отправляю пост, он извлекает массив и другие переменные, затем скрипт формирует на основе поста гет запрос, при условии что я строку массива превращаю в нечто =1,2,3 , затем, скрипт обрабатывает гет запрос, а уже с ним постраничная навигация не составит проблем, думаю только так, а пост запрос как раз будет годен для формирования, и будет срабатывать только один раз, ну если конечно условия поиска не менять.

=====================================

secach - спасибо

S
На сайте с 11.03.2010
Offline
29
#8

Тут просто есть два вариант, где ты формируешь GET запрос, на странице яваскриптом или передавать POST в PHP и формировать GET уже там, где увереннее себя чувствуешь там и делай.

T.R.O.N
На сайте с 18.05.2004
Offline
314
#9
demko73:
<select*name="a[]">

откуда появилась мысль о возможности такой комбинации? и главное, зачем там воще массив. Селект отдает значение

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
dvaes
На сайте с 03.09.2007
Offline
65
#10
secach:
А вообще такие вещи лучше реализовать на ajax

например где?

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

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий