Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wyświetlanie rekordów i ilości
piotr485
post
Post #1





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


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


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
piotr485
post
Post #3





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
piotr485
post
Post #5





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


hehe niewiedziałem, że to tylko tyle trza było zrobić.
DZIĘKUJĘ !
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
piotr485
post
Post #7





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 08:56