Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 10.08.2007 Ostrzeżenie: (0%)
|
Witam mam pewien problem. Pisze serwis z ogloszeniami. idea jest taka jak na allegro. mam juz tabele kategorii w bazie i zrobilem tak:
ID PARENT_ID NAZWA ... 1 3 nazwa Czyli id to wiadomo a parent_id to numerek kategorii do ktorej kategoria nalezy. W tabeli ogloszen mam tak: ID KATEGORIA_ID TYTUL ... 1 1 tytul Teraz mam problem taki: Chce zeby po kliknieciu w kategorie powiedzmy Samochody wyswietlic wszystkie ogloszenia ktore naleza do wszystkich podkategorii Samochody. Wiem ze trzeba skonstruowac odpowiednie zapytanie do bazy. narazie doszedlem do tego ze trzeba ustawic zmienna w zapytaniu: $zapytanie=mysql_query("select * from OGLOSZENIA where $warunki"); w $warunki powinno byc cos takiego: KATEGORIA_ID=$kategoria1 OR KATEGORIA_ID=$kategoria2 OR .... wie ktos moze jak skonstruowac zmienna $warunki? ID aktualnie wybranej kategorii mam w $kategoria Trzeba zrobic najprawdopodobniej petle i pobierac podkategorie dla aktualnej kategorii zapytaniem select * from KATEGORIE where PARENT_ID=$kategoria. ale takie zapytanie zadziala jednopoziomowo a ja chce zeby dzialalo niezaleznie od tego ile jest "glebokosci" w podkategoriach itd... chce zeby skrypt po kliknieciu na jakas kategorie wyszukal wszystkie ogloszenia ze wszystkich podkategorii i ich podkategorii itd... W sumie nie chce zeby ktos to za mnie napisal tylko zeby mi ktos podpowiedzial w jaki sposob zrobic algorytm na to. jak bede mial w glowie algorytm to juz sam to napisze. Ten post edytował lysy1033 20.08.2007, 11:52:46 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%)
|
jeżeli dobrze cię zrozumiałem to niepotrzebnie sobie komplikujesz sprawę. Ponieważ jeżeli chcesz żeby wyświetlić np. wszystko z kategorii samochody wystarczy że w linku przekażesz zmienną z nazwą kategorii a potem to już proste
Kod $kategoria = $_REQUEST['kategoria']; // dla przykłady $katetgoria = 'samochody' $sql = "SELECT * FROM tabela WHERE kategoria='$kategoria'"; a co do samego wyrzucenia danych (bo o to chyba też pytasz) to wystarczy zrobić tak: Kod $sql = "SELECT * FROM tabela WHERE kategoria = 'samochody'"; $result = mysql_query($sql); while($item = mysql_fetch_array($result)) { echo $item['nazwa_kategorii']."<br />\n"; } Jeżeli się nie zrozumieliśmy to sorry ale chyba to Ci coś pomoże (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 10 Dołączył: 16.08.2007 Ostrzeżenie: (0%)
|
o ile zrozumiałem to chcesz mieć wiele zagnieżdżonych kategorii?
Możesz iść na 'hama' i pobierać rekurencyjnie z bazy danych... i mieć dużo zapytań albo przeczytać http://www.sitepoint.com/article/hierarchi...data-database/2 chyba nawet są gotowe klasy php na to, ale osobiście to unikałem cały czas takich kategorii (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ... może też uda Ci się przystosować ten plugin Symfony do własnych potrzeb, to właśnie jedna ztakich klas: http://trac.symfony-project.com/trac/wiki/...tBehaviorPlugin |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 10.08.2007 Ostrzeżenie: (0%)
|
no w sumie zrealizowałem to za pomocą funkcji która wywołuje samą siebie... niestety jest troche zapytań ale są one proste i działa to szybko. a że kategorie mam w jednej konkretnej tabeli i to nie duzej to działa to dobrze. Bardziej postawiłem na uniwersalność i prostote obslugi pozniej niz na wydajnosc. w sumie to nie przewiduje miliona kategorii wiec mysle ze takie rozwiazanie bedzie calkiem rozsadne pod kazdym wzgledem.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 18:29 |