Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z wyświetlaniem, ogłoszenia jak na allegro
lysy1033
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Fixus
post
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)
Go to the top of the page
+Quote Post
Exek
post
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
Go to the top of the page
+Quote Post
lysy1033
post
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 18:29