Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyświetlanie rekordów i ilości
Forum PHP.pl > Forum > Przedszkole
piotr485
Witam.

Mam takie tabele:

KATEGORIA
id
kategoria_pl

PODKATEGORIE
id
podkategoria
id_kategoria

KATALOG_FIRM
id
id_podkategoria
nazwa_firmy

Mam problem z zapytaniem mianowicie chcę wyświetlić wszystko na jednej stronie najprawdopodobniej w dwóch pętlach - tak myślę bo nie widzę innej opcji w taki sposób:

PIERWSZA KATEGORIA
pierwsza podkategoria
druga podkategoria
trzecia
czwarta

DRUGA KATEGORIA
pierwsza podkategoria
druga podkategoria
czwarta

itd.

dodatkowo chciałbym, aby wyświetliły się tylko te podkategorie które mają jakieś odpowiadające im rekordy w tabeli katalog_firm

Udało mi się zrobić cos takiego

PIERWSZA KATEGORIA
pierwsza podkategoria (5)
druga podkategoria (3)
trzecia (3)
czwarta (1)

DRUGA KATEGORIA
pierwsza podkategoria (0)
druga podkategoria (0)
czwarta (3)

,ale nie mogę połączyć tego żeby tak gdzie jest zero aby się niewyświetlało, proszę o wskazówki rady i uwagi co do poprawności kodu i zapytań

[MYSQL] pobierz, plaintext
  1. $zapytanie = "
  2. SELECT kategoria.kategoria_pl AS kategoria,
  3. kategoria.id AS id
  4.  
  5. FROM kategoria
  6.  
  7. ORDER BY kategoria_pl
  8. ";
  9.  
  10. $wynik = @mysql_query ($zapytanie) 5.1/en/non-typed-operators.html">or die (mysql_error());
  11.  
  12.  
  13. while($row = mysql_fetch_array($wynik)) {
  14.  
  15. $kategoria = $row['kategoria'];
  16. $id = $row['id'];
  17.  
  18. echo '<b>'.$kategoria.'</b><br />';
  19.  
  20.  
  21. $zapytanie2 = "
  22. SELECT podkategorie.podkategoria AS podkategoria,
  23. podkategorie.id AS id_pod
  24.  
  25. FROM podkategorie
  26.  
  27. WHERE podkategorie.id_kategoria = $id
  28.  
  29. ORDER BY podkategorie.podkategoria
  30.  
  31.  
  32. ";
  33.  
  34. $wynik2 = @mysql_query ($zapytanie2) 5.1/en/non-typed-operators.html">or die (mysql_error());
  35.  
  36.  
  37.  
  38. while($row2 = mysql_fetch_array($wynik2)) {
  39.  
  40.  
  41.  
  42. $podkategoria = $row2['podkategoria'];
  43. $id_pod = $row2['id_pod'];
  44.  
  45. echo $podkategoria.' ';
  46.  
  47. $zapytanie3 = "
  48. SELECT katalog_firm.id_podkategoria AS ilosc
  49.  
  50. FROM katalog_firm
  51.  
  52. WHERE katalog_firm.id_podkategoria = $id_pod
  53.  
  54. ORDER BY katalog_firm.id_podkategoria
  55. ";
  56.  
  57. $wynik3 = @mysql_query ($zapytanie3) 5.1/en/non-typed-operators.html">or die (mysql_error());
  58. $suma = mysql_num_rows($wynik3);
  59.  
  60. echo '('.$suma.')<br /><br />';
  61.  
  62. }
  63.  
  64.  
  65.  
  66. }
[MYSQL] pobierz, plaintext


nospor
Cytat
,ale nie mogę połączyć tego żeby tak gdzie jest zero aby się niewyświetlało
No a dlaczego najpierw nie policzysz sumy, a dopiero potem jak bedzie wieksza od 0 nie wyswietlisz nazwy kategorii? W czym problem? Przeciez to tylko drobna zmiana kolejnosci i prosty IF

ps: pomijam juz fakt ze skrypt jest totalnie nie optymalny
piotr485
A nie trzeba przypadkiem połączyć zapytanie2 z zapytanie3 ? bo tak jak ty mówisz nie bardzo mi się widzi.

bo liczbę rekordów wyświetlam przy pomocy innego zapytania niż podkategorie dlatego nie mam jak się odwołać do tego. Sam już nie wiem.
nospor
Cytat
bo liczbę rekordów wyświetlam przy pomocy innego zapytania
No przeciez wiem/widze.
teraz najpierw wyswietlasz podkategorie, a nastepnie dla niej liczysz liczbe. Zrob na odwrot. Najpierw policz liczbe, a dopiero potem, gdy liczba jest wieksza od 0, wyswietl podkategorie (echo $podkategoria;)
Jest to zwykla zmiana kolejnosci paru ostatnich linijek twojego skryptu
piotr485
hehe niewiedziałem, że to tylko tyle trza było zrobić.
DZIĘKUJĘ !
nospor
ty sie tak nie ciesz. twoj skrypt nadal jest bardzo nie optymalny. Generowanie zapytan w petlach zagniezdzonych to jedno z najgorszych rozwiązan.

Moze to cie troche nakieruje
http://nospor.pl/grupowanie-wynikow-n35.html
piotr485
Nie chciałbym tutaj sypać moim kodem bo to prawie 200 linijek, ale cały czas się męczę z tymi zapytaniami i zagnieżdżeniami.

Przeczytałem ten artykuł i z tego co zrozumiałem jest tam opisane jak przy pomocy jednego zapytania stworzyć tablice i później przy pomocy pętli się odwoływać.

Nasuwa mi się kilka pytań z tego względu, że jestem dość początkujący i cały czas się uczę i dowiaduję czegoś nowego.

Mianowicie:

1. Czy stworzenie kategorii w których znajdują się podkategorie, a w tych podkategoriach znajdują się rekordy, które są stronnicowane i dodatkowo w każdy rekord można klinikąc i w nim wyświetla się jeszcze więcej informacji na temat tego rekordu - można to wykonać przy pomocy jednego zapytania ?

2. Czy wykonywać to w jednym pliku czy robić to na osobnych ? (robiąc na osobnych nie potrafiłem stworzyć pasku adresu w postaci: strona główna -> kategoria -> podkategoria -> produkt - ponieważ niepotrafiłem dodać getów)

3. A co przy każdym tworzeniu $_GET czy nie ma jakieś możliwości dopisywania do istniejącego adresu np. &podkategoria=2. W moim przypadku to męczące jest ponieważ za każdym razem gdy wchodzę "głębiej" i dopisuje GETy to robi się wielka kaszana, jak już chcę dopisać jakiś to muszę stworzyć już istniejący za pomocą np. index.php?strona=$get_strona&kategoria=$get_kategoria&podkategoria=$get_podkategoria, a jak bede mial tego jeszcze ze dwa i później zajdzie mi potrzeba coś zmodyfikować to będę to musiał wszędzie robić. Jak wy to rozwiązujecie ?
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.