Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
1

Доработать фильр

22.08.2016, 14:15. Показов 916. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!у меня стоит фильтр где посититель выбирает в чекбоксе нужный бренд и скрипт фильрует товары и выводит их. Я хочу чтобы выводилось и была пострничная навигация, т.е если товаров много можно было листать страница 1, 2 ит.д
код написал я, он работает, но не до конца. При клике на следующую (нарпимер 1 или 2) страницу у меня прекращается сортировка и выводятся все товары а не по брендам. скорее всего я не правильно указываю сортировку в href.
У кого есть возможность, помогите разобраться и дорабоать скрипт!

это сами чекбоксы, где посититель выбирает
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<form method="get" action="search_filter.php">
<ul>
<li><a>Поиск по разделам</a>
<ul class="checkbox-brand">
 
<?php 
$result = mysql_query("SELECT * FROM category WHERE type='стикеры'",$link);
 
if (mysql_num_rows($result) > 0)
{
    
    $row = mysql_fetch_array ($result);
    
    do 
    {
        $checked_brand = "";
        if($_GET["brand1"])
        {
            if(in_array($row["id"], $_GET["brand1"]))
            {
                $checked_brand = "checked";
            }
        }
        echo '
        <li><input '.$checked_brand.'  type="checkbox" name="brand1[]" value="'.$row["id"].'" id="checkboxbrand'.$row["id"].'"><label for="checkboxbrand'.$row["id"].'">'.$row["brand1"].'</label></li>
        ';
    }
    while ($row = mysql_fetch_array ($result));
    
}
 
?>
</ul>
</li>
</ul>
 
<center><input type="submit" name="submit" id="button-param-search" value="Найти"></center>
 
</form>
это обработчик (отрывок)
PHP
1
2
3
4
5
6
7
8
9
10
11
if ($_GET["brand1"])
{
    $check_brand = implode(',',$_GET["brand1"]);
}
 
if (!empty($check_brand))
{
    if (!empty($check_brand)) $query_brand = "AND brand_id IN($check_brand)";
    
}
$result = mysql_query("SELECT * FROM table_produkts WHERE visible='1' $query_brand  ORDER BY  products_id  DESC $query_start_num", $link);
$query_start_num отвечает за навигацию по станичную
PHP
1
2
3
$start = $page * $num - $num;
    
$query_start_num = "LIMIT $start, $num";

тут вывод идет по страницам и я не правильно указываю сортировку в href (отрывок)
PHP
1
2
3
4
if($page !=1) 
{
$pstr_prev = '<li><a class="pstr_prev" href="search_filter.php?brand1='.$check_brand.'&page='.($page -1).'">&lt;</a></li>';
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2016, 14:15
Ответы с готовыми решениями:

Сетевой фильр
Добрые люди, подскажите, пожалуйста, какой бесплатный сетевой фильтр можно использовать в сети?...

Фильр на данные в форме
Добрый день! Хочу избавиться от лишних запросов и выводить в форме отфильтрованные данные из 1...

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

Фильр в подчиненном перекрестном запросе по нескольким значениям списка
Ребята помогите, замучилась уже, ничего в ВБА особо не понимаю. --Есть форма навигации, в ней...

7
Заблокирован
22.08.2016, 16:24 2
Вам нужно наследовать фильтры при пагинации. Т.е. добавляйте соотв. параметры ко всем ссылкам на страницы списка, используя их тек. значения.
0
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
22.08.2016, 18:25  [ТС] 3
как это сделать? поясните пожалуйста
0
Заблокирован
22.08.2016, 18:39 4
Лучший ответ Сообщение было отмечено Евгений 86 как решение

Решение

Уже:
Цитата Сообщение от miketomlin Посмотреть сообщение
Т.е. добавляйте соотв. параметры ко всем ссылкам на страницы списка, используя их тек. значения.
Например, если адреса страниц списка имеют формат
/category/filter?p=page
вы в ссылках на другие страницы списка меняете только page, а путь подставляете к ним текущий.

Добавлено через 2 минуты
Либо же меняете только ?p=page, если к примеру первая страница списка вообще не имеет этого довеска.
0
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
22.08.2016, 19:43  [ТС] 5
извини, я тут случайно ткнул на кнопку "это не ответ"

Добавлено через 2 минуты
спасибо за подсказку,
но вот в чем у меня проблема
путь я прописываю правильно и меняю page
PHP
1
page='.($page -1).
но в ссылку мне нужно добавить и сортировку, но я не понимаю как
перед page мне нужно воткунь ее, но как правльно ее написать тут и проблема у меня
PHP
1
$pstr_prev = '<li><a class="pstr_prev" href="search_filter.php?page='.($page -1).'">&lt;</a></li>';
0
Заблокирован
22.08.2016, 21:16 6
Если у вас page – обязательный параметр, лучше добавляйте фильтр в конец ссылки. И т.к. brand1 – у вас типа массив, тут обычным перечислением значений через запятую не обойдешься, нужно для каждого значения добавлять к ссылке &brand1[]=значение

Добавлено через 3 минуты
Если номер страницы запихнете в путь, можно просто в ссылках на страницы списка наследовать всю строку параметров (если она есть).

Добавлено через 2 минуты
Лично я обычно делаю наоборот, т.е. фильтры размещаю в путях, а номер страницы в параметре, например:
/category/filter?p=page
или наоборот
/filter/category?p=page

Но в таком виде вы напрямую из формы фильтр не получите, поэтому лучше делайте по-своему.
1
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
22.08.2016, 21:43  [ТС] 7
Спасибо! помогло! правда не в конец строки добавил а перед page и работает!
0
Заблокирован
22.08.2016, 21:53 8
Если перед page, вам нужно перед первым значением добавлять ?, а перед др. &, причем в зависимости от наличия/отсутствия фильтра перед page тоже либо ?, либо &.
1
22.08.2016, 21:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2016, 21:53
Помогаю со студенческими работами здесь

доработать
вот программа #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; typedef double...

доработать
доброго времени суток) оч срочно.. на форме 3 матрицы. в третей нужна сумма ячеек 1 и 2. unit...

Доработать
Вот &quot;программа&quot;, играет роль &quot;Базы данных(как например Справочник города ФИО-Адрес)&quot;, т.е. создает...

доработать бд
помогите пожалуйста доработать базу данных, надо добавить в столбец &quot;успеваемость&quot; и прописать код


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru