Постраничный вывод сложного запроса?

wildarp

Новичок
Постраничный вывод сложного запроса?

Привет, всем.

У меня возникла проблема с постраничным выводом со сложным запросом из базы.

Собственно не могу понять как выхватить строку запроса (из формы) +&page=1

Выбираются 10 записей на страницу, записи выбираются по запросу из формы т.е. вариации могут быть разные

допустим строка при запросе http://localhost/search.php?home=1&room=5&city_id=2&price=20

получаем 100 вариантов т.е. 10 страниц.

теперь мне необходимо к этому запросу до,авить скажем &page=3

т.е. мне всегда необходимо чтобы строка запроса формы сохраняла вид search.php?home=1&room=5&city_id=2&price=20
я поставил это дело через QUERY_STRING и &page=$i
но увидел что таким образом строка запроса будет увеличиваться в процессе перехода и получим нечто вроде

search.php?home=1&room=5&city_id=2&price=20&page=3&page=5&page=7 и т.д.

Вот собственно и вопрос раз для ЭТИХ дел не подходит QUERY_STRING, значит необходимо преобразовать массив $_GET в строку запроса . Как это сделать?

Извиняюсь если написал не в ту тему.

спасибо.
 

wildarp

Новичок
да искал, не нашел поэтому и написал, хоть подскажите в какую сторону копать
 

wildarp

Новичок
все оказалось проще

<?php

if (!function_exists('http_build_query')) {

function http_build_query($data, $prefix='', $sep='', $key='') {

$ret = array();

foreach ((array)$data as $k => $v) {

if (is_int($k) && $prefix != null) $k = urlencode($prefix . $k);

if (!empty($key)) $k = $key.'['.urlencode($k).']';

if (is_array($v) || is_object($v))

array_push($ret, http_build_query($v, '', $sep, $k));

else array_push($ret, $k.'='.urlencode($v));

}



if (empty($sep)) $sep = ini_get('arg_separator.output');

return implode($sep, $ret);

}}

$querystr = http_build_query($_GET);

....

$perpage.='<span id="pager"><a href="?'.$querystr.'&page='.$i.'">'.($i+1).'</a></span>';


?>
....

-~{}~ 29.05.08 18:21:

в php5 правда эта функция уже есть

http_build_query()

-~{}~ 29.05.08 23:10:

в продолжении темы вопрос возник

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

Спасибо.
 

Beavis

Banned
пройдись по массиву и удали пустые элементы перед тем как http_build_query делать
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
как избавиться от пустых значений если поле формы было не заполнено, чтобы не выводить в адресную строку.
Нужна лицензионная виндовс.
 

NightFlash

Новичок
А у меня написана функция, которая принимает 3 аргумента:

modifyUrl(varName, varValue, url)

соотв, если url не передан, то берется текущий, старое значение перменной varName заменяется на varValue, если varValue равен false то она убирается, соотв. там еще тонкость с тем в каком месте переменная, сразу после ? или нет, но додумать Елементарно.

Mr. Max
неправильно, еще лиц. оффис :)
 

wildarp

Новичок
NightFlash

я сделал так

function clearArray_elem($data_array) // очищаем пустые элементы массива
{
$clean_array = array();
foreach($data_array as $key => $v) {
if (!empty($val)) {
$clean_array[$key] = trim($v);
}
}
return $clean_array;
}

...
clearArray_elem($_GET);
...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
wildarp
Скажи, пожалуйста, а смысл есть, хоть какой-то, в твоей ф-ции?
 

zerkms

TDD infected
Команда форума
люди уже не в состоянии написать функцию из трёх строк, всё им нужны готовые сниппеты...
ппц...
 
Сверху