Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wyświetlaniem
Forum PHP.pl > Forum > PHP
lysy1033
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.
Fixus
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 smile.gif
Exek
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 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
lysy1033
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.