- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всем привет. Есть страница, где в зависимости от настроек фильтра выводятся картинки из бд, если картинок больше 40, то создается следующая страница картинок, но вот только, если я нажимаю на нее, то фильтр сбрасывается и выводятся все картинки, которые есть в бд. Вот так выглядит url в адресной строке браузера: cards?nabor%5B%5D=2&cards_name... , а вот так выглядит ссылка на следующую страницу картинок: cards?nabor=&cards_name=...?p=2 . То есть, видно, что в ссылке отсутствуют результат фильтра. Вот код:
function get2set ($key='', $val='') { // функция перевода переменных $_GET в массив, с учетом поправки
Подскажите, как сделать, чтобы в ссылке на следующую страницу, был тот же адрес, что и в адресной строке браузера, то есть с результатом фильтра. спасибо$set = array();
$set = $_GET;
if ( !empty($key) && is_array($set) ) {
if ( is_array($key) ) {
if ( count($key)>0 ) {
foreach ( $key as $k=>$v ) if ( empty($v) ) unset($set[$k]); else $set[$k] = $v;
}
} else {
if ( empty($val) ) unset($set[$key]); else $set[$key] = $val;
}
}
return $set;
}
function get2str ($key='', $val='') { // функция перевода переменных $_GET в строку, с учетом поправки
$set = get2set($key, $val);
if ( count($set)>0 ) {
foreach ($set as $k=>$v) $set[$k] = $k."=".urlencode($v);
return "?".implode("&",$set);
}
}
function pages ($total, $p, $pp=40) { // функция вывода страниц
$pages = array ();
$tpages = ceil ($total/$pp); // колличество страниц
$bpage = $p - 40; if ($bpage<1) $bpage = 1;
$epage = $p + 40; if ($epage>$tpages) $epage = $tpages;
if ( $p>1 ) $pages[] = '<a href="' . 'cards' . get2str("c", 1) . '">в начало</a>';
for ( $i=$bpage; $i<=$epage; $i++ ) $pages[] = ( $i==$p ) ? '<b>'.$i.'</b>' : '<a href="' . 'cards' . get2str("c", $i) . '">'.$i.'</a>';
if ( $p<$tpages ) $pages[] = '<a href="' . 'cards' . get2str("c", $tpages) . '">в конец</a>';
if ( count($pages)>0 ) echo '<p>'.implode (' | ',$pages).'</p>';
}
$p = (int) $_GET['c']; if ($p<1) $p=1; // текущая страница
$pp = 40; // колличество результатов на одной странице
$start = ($p-1)*$pp; // начальная позиция выборки строк результата запроса
$sql = "SELECT COUNT(*) FROM cards WHERE class_id $query_cost $query_attack $query_health $query_nabor $query_class $query_quality $query_race";
$r = mysql_query($sql,$link);
$total = mysql_result($r,0,0); // общее колличество результатов без разбиения на строки
$sql = "SELECT * FROM cards WHERE class_id $query_cost $query_attack $query_health $query_nabor $query_class $query_quality $query_race LIMIT ".$start.", ".$pp;
$r = mysql_query($sql,$link);
может потому что %5B%5D - это скобки?
а что нужно поменять в коде, чтобы отображался весь урл? Сейчас он просто убирает %5B%5D эту часть
а что нужно поменять в коде, чтобы отображался весь урл? Сейчас он просто убирает %5B%5D эту часть
а там всегда будут скобки?)
ну это как бы массив. без них тогда фильтр криво работает