![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 7.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Interesuje mnie sposób rozwiązania filtrowania, który jest np na stronie http://www.projektoskop.pl/domy.html Mamy tam do wyboru różne parametry domu a w adresie zmienia się tylko s-{NUMEREK}.html Właśnie chodzi mi o ten {NUMERE} skąd on się bierze i jak potem aplikacja wie jakie filtry w nim zastosowano, dodatkowo kwestia ilości wyników po wybraniu jakiegoś filtru - jaka jest struktura bazy? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
po prostu są to najprawdopodobniej filtry ustawiane z panelu admina, numerek po s- to identyfikator filtru, skrypt łączy się z bazą i pobiera szczegóły filtru przypisane do numer id, następnie filtruje oferty
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 7.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Czyli jak dodam nowe kryterium to dodaję w bazie wszystkie możliwe kombinacje?
Jeśli tak to trochę tego jest i trzeba znaleźć wszystkie kombinacje bez powtórzeń np 100-elementowego zbioru i chyba jest problem z usuwanie danego kryterium a na projektoskopie kazde kryterium można usunąć i wybrać inne |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
nie kombinacje, tylko filtr do zapytania sql, przykładowo masz tam typ projektu, to sobie zapisujesz, że filtr o ID 743647 , dotyczy kolumny o nazwie : "TYP" , i wartość to id 8 ( DOM) . pobierasz to i tworzy zapytanie :
czyli taki filtr to może być prosta tabelka: filter_id | filter_column | filter_value 743647 | typ | 8 432432 | zabudowa | 15 Ten post edytował tehaha 7.09.2010, 23:53:25 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 7.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Bez kombinacji tego nie widze, bo weźmy http://www.projektoskop.pl/domy,s-6985989.html
Wybrano kryteria : domy | w technologii tradycyjnej | parterowe | dach dwuspadowy Teraz usuwam "w technologii tradycyjnej" i mam "domy | parterowe | dach dwuspadowy" Więc jak na razie nie widzę tych zapytańdo bazy przy takiej prostej tabelce... (weźmy pod uwagę, że jak wybierzemy jakieś kryterium to mam inne linki bo uwzględniają te wybrane) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ale jakiej kombinacji? Załóżmy że operujesz na jednej tabeli (najprostszy przykład). Jest to tabela oferty. ma ona klucz ID i cechy(kolumny) określające ofertę. Np. typ projektu - dom, mieszkanie, apartament, szałas
powierzchnia - jakaś liczba technologia - jakaś technologia (może być zakodowana liczbą) typ dachu - jakies typy (jak powyżej) liczba pieter - jakas liczba Wybór jakiejkolwiek cechy zawęża liczbę ofert. Masz kilka/kilkanaście cech - złączasz je w zapytaniu za pomocą operatora AND. Czyli:
Gdzie tu masz jakiekolwiek kombinacje? Zauważ że stronka którą podałeś nie tylko odsyła cię pod podane ID ale też generuje dla ciebie ciasteczko - ono ma kilka zakodowanych pól dzięki czemu można cię wyróżnić z tłumu Ten post edytował everth 8.09.2010, 00:25:43 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
eh no wiadomo, że tam to jest bardziej skomplikowane, ja tylko pokazałem Ci prosty przykład, dla prezentacji jak to może być zrobione, można by też trzymać od razu przygotowaną klauzurę WHERE i tylko wklejać ją do zapytania
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 7.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie tam jest to bardziej skomplikowane i nie sądze aby kryterium to była kolumna, trzymanie where lub id filtra i jego parametrów powoduje że jak wspomniałem przy dodaniu/usunięciu czegoś nowego musimy znaleźć wszystkie kombinacje bez powtórzeń (http://pl.wikipedia.org/wiki/Kombinacja_bez_powtórzeń - o takie kombinacje mi chodziło)
Właśnie na tej stronie mogę wybrać dowolną kombinację k-elementową ze zbioru n-elementowego dodatkowo przy każdej mam od razu ilość wyników Ciasteczka raczej nie mają nic do rzeczy bo wszystkie linki są i muszą być stałe |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
ale jakie znowu wszystkie kombinacje?? Przecież tam masz zwykłe sortowanie po kolumnach: typ, powierzchnia, technologia, technologia, zabudowa itp. Bardzo proste zapytania sql, w tabeli filtrów trzymasz sobie kryteria do budowy klauzury WHERE, a jeżeli jakaś kategoria czy typ zostanie usunięty, to dla porządku usuwasz filtr, który je zawiera i tyle, żadna filozofia. Przecież jak robisz na stronie wyszukiwarkę/filtrowanie to również umożliwiasz ustalanie kryteriów wyszukiwania dla wielu kolumn i budujesz zapytanie sql, a to jest dokładnie taka sama sytuacja tylko, że te kryteria są zapisane w bazie
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
ale jakie znowu wszystkie kombinacje?? Przecież tam masz zwykłe sortowanie po kolumnach: typ, powierzchnia, technologia, technologia, zabudowa itp. Bardzo proste zapytania sql, w tabeli filtrów trzymasz sobie kryteria do budowy klauzury WHERE, a jeżeli jakaś kategoria czy typ zostanie usunięty, to dla porządku usuwasz filtr, który je zawiera i tyle, żadna filozofia
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
randomek - zrozumiałem w końcu o co ci chodzi. Rzeczywiście - z pozoru wygląda to na jakiś cache zapytań. Ale głowy za to nie dam.
@tehaha jemu chodzi o to że linki wyznaczające argumenty są stałe i nie wymagają każdorazowego przesyłania postem. Sprawdź sobie - podasz ten sam link na różnych ip z różnych przeglądarek to wyznaczy ci te same argumenty. Raczej cache - ale rozmiar czegoś takiego mi się nie podoba. EDIT: Jeszcze co mi wpadło do głowy to to, że argumenty mogą być zapisane łącznie a później przekształcone jakąś odwracalną funkcją w liczbę. Np. (tutaj argument przyjmuje postać liczby w zakresie 0-99) 240415 ->23456 0208070345->368 02->2067 Nie wiem czy jest to możliwe ale gdyby było, to jest bardzo prawdopodobne rozwiązanie stałych linków. Ten post edytował everth 8.09.2010, 03:10:28 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
no rzeczywiście, tam jest jakiś kod generowany funkcją, ponieważ ten kod się zmienia, po wyborze jakiegoś typu, ale ten sposób wydaje mi się zbytecznie przekombinowany, można by sobie ten filtr składać w sesji dodają tylko poszczególne reguły, w końcu to tylko filtrowanie po kilkunastu kolumnach
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 15:50 |