powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (php) сортировка и фильтрация результатов запроса
6 сообщений из 6, страница 1 из 1
(php) сортировка и фильтрация результатов запроса
    #37786031
AlexSSSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано:
таблица TOVARY:
Код: sql
1.
2.
create table TOVARY (id numeric (10),name char(20));
insert into TOVARY (id,name) values (1,"КАРБЮРАТОР"),(2, "КАБЮРАТОР"), (3,"ДВЕРЬ ЗАДНЯЯ")


таблица SVOISTVA:
Код: sql
1.
2.
create table SVOISTVA(id numeric (10),name char(20), value char(20));
insert into SVOISTVA(id,name,value) values(1,"модель","2108"),(1,"производитель","россия"),(2,"модель","2012"),(2,"производитель","хлам из европы"), (3,"производитель","суперкачество из тольятти")


То есть к каждому товару есть свойства. Их может быть от нуля до трех.
Делаю поиск по названию:
Код: sql
1.
select * from tovary where name like "%ОБРАЗЕЦ%"


Результат запроса в MyRez
Далее перебираю результаты в цикле и для каждой записи получаю свойства этого товара:
Код: 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.
    {
        //получаем модель,производителя и место хранения
        $query2='select id,name,value from svoistva where id="';
        $query2=$query2.$_POST['BLABLA'].'"';
        $MyProp=mysql_query($query2);
        while (list($art,$sv,$desc)=mysql_fetch_row($MyProp))
        {
           // echo "sv=".$sv."    "." des=".$desc."<br><br>";

            $temp_p1 = strrpos($desc,'<const>')+strlen('<const>');
            $temp_p2 = strpos($desc,'</const>');
            $temp_const = trim(substr($desc, $temp_p1, $temp_p2-$temp_p1));

        	if ($sv=='Модель') $Models=$temp_const;
        	if ($sv=='Производитель') $Proizv=$temp_const;
        	if ($sv=='Дополнительно') $MHr=$temp_const;
        };
      	//выводим инфу про товар
      	list($art,$nam,$mes,$pr,$za,$pro)=mysql_fetch_row($MyRez);
      	echo "<h1>";
      	echo "Код товара: ".$art."<br>";

      	echo "Название товара: ".$nam."<br>";
        echo "</h1> <br>";
    }


А теперь вопрос: про что читать в мануале на PHP, что-бы можно было
сортировать/фильтровать по свойству МОДЕЛЬ после вывода результатов поиска по названию товара?
...
Рейтинг: 0 / 0
(php) сортировка и фильтрация результатов запроса
    #37786038
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то,
- "для каждой записи получаю свойства этого товара" принято делать сразу в первом запросе (читайте JOIN, т.е. выборка из нескольких таблиц сразу);
- сортировка - читайте ORDER BY.

И это в мануале по MySQL, а не по PHP.


Если ж вы имеете ввиду ПЕРЕсортировку уже в браузере по столбикам клацая. То

а) когда у вас будет товаров на 100 страниц, то вы же не будете выбирать все 100 страниц и гнать их клиенту. Вы будете выбирать только N записей для текущей страницы. И когда пользователь нажмет "отсортировать как-то иначе", то придется повторить запрос, потому что с новой сортировкой на 5-ой странице уже будут совсем другие строки, а не те, которые сейчас. Так что - ORDER BY

б) если же ситуация узкая и никакого постраничного разбиения не предусматривается, тогда все-равно PHP к ней отношения не имеет. Ибо он на сервере. Вы выдали данные в верстве клиенту. У него есть все, чтобы их сортировать и фильтровать как угодно (например, помощи JS). Было бы странно, если бы клиент присылал запрос "дай мне то же самое, что только что давал, только пересортируй иначе!".

Ну а по поводу - сначала получаю товары, а потом ПО КАЖДОМУ ИЗ НИХ запускаю отдельный запрос на доп. данные - это сразу двойка.

А вот сюда
$query2=$query2.$_POST['BLABLA'].'"';
можно вам запостить вредоносный код, ограниченный только фантазией злоумышленника и ни на йоту не ограниченный вами.
...
Рейтинг: 0 / 0
(php) сортировка и фильтрация результатов запроса
    #37786191
AlexSSSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Биг сенькс за тычок носом в очевидное: зачастую замыленный глаз не видит того, что само напрашивается!
Покурил, подумал, получил то, что нуно одним запросом (ну и намучился с лефт джоином - что-то они там изменили в мускуле, по сравнению с тем, что ранее пользовал, но решил)
Теперь уточню вопрос по результатам первого шага.
Получил результаты запроса. Показал их (ну немного их - на одной странице терпимо показываются).
Как "перерисовать" страницу с результатами, не обращаясь мускулю, отфильтровав только по значению МОДЕЛЬ?
Т.е.:
Код: plaintext
1.
2.
3.
4.
1   КАБРЮРАТОР    2101
2   КАРБЮРАТОР    2109
3   ДВЕРЬ ЗАДНЯЯ
4   РЫЧАГ             2101
пользователь в вверху станицы в поле ввода вводит 2101, давит капу "Фильтр" и видит:
Код: plaintext
1.
2.
1   КАБРЮРАТОР    2101
4   РЫЧАГ             2101
Для этого какой мануал курить?
Особо хочу обратить внимание что хочу это получить БЕЗ ПОВТОРНОГО обращения к мускулю (с новым запросом - все понятно, но долго-18-35 сек. Один раз пользователь подождет, но вот второй-третий-четвертый уже не хочется).
...
Рейтинг: 0 / 0
(php) сортировка и фильтрация результатов запроса
    #37786202
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делать это надо не средствами php, а яваскриптом в браузере.

А если средствами php, то логично, что значит все результаты запросов нужно куда-то сохранять, пока не станет очевидно, что за ними повторно не обратятся. Ну сам понимаешь... Мускуль это и есть хранилище. Если уж ради того, чтобы не учить js, ты готов ради вшивой сортировки двух десятков строк снова обращаться к серверу - тогда таки через мускуль. Тем более, что если в этих таблицах за это время ничего не поменялось, а кеш запросов включен - он и сам уже сохранил этот результ и выдаст его тебе.

И что ты там так выбираешь, что по 30 сек? Неуж-то 100500 строк (пол базы одним махом)? =)))
Это не нормально, такие запросы на выборку. Это какой-то сложный отчет пару раз в сутки выполнить админу - ладно еще.
...
Рейтинг: 0 / 0
(php) сортировка и фильтрация результатов запроса
    #37786204
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а сортировать в php - курить не надо. sort ищи. Гугль выкурит мануал в первой же ссылке (если конечно к sort ты припишешь php).
...
Рейтинг: 0 / 0
(php) сортировка и фильтрация результатов запроса
    #37786208
AlexSSSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторно БИГ СЕНЬКС.
Почапал "курить" явускрипт...
Тему, наверное, лучше закрыть...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (php) сортировка и фильтрация результатов запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]