Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]katalog i podkatalog
Forum PHP.pl > Forum > Przedszkole
piotr485
Witam, robię katalog firm i mam następujący problem i kilka pytań. Chodzi o to, że są kategorie w których znajdują się podkategorie, a w tych podkategoriach znajdują się rekordy z wpisami.
Przykład: Zdrowie i Uroda -> Solarium -> Wpisy solarium

Na początku mam pytanie czy błędem jest rozwiązanie tego w ten sposób.
Tworzę plik wyświetlający kategorie:

  1. <?php
  2. $zapytanie = "
  3. SELECT kategoria.kategoria AS kategoria,
  4. kategoria.id AS id
  5.  
  6. FROM kategoria
  7.  
  8. ORDER BY kategoria
  9. ";
  10.  
  11. $wynik = @mysql_query ($zapytanie) or die (mysql_error());
  12.  
  13. while($row = mysql_fetch_array($wynik)) {
  14.  
  15. $kategoria = $row['kategoria'];
  16. $id = $row['id'];
  17.  
  18. echo '<a href="kategoria.php?id='.$id.'">'.$kategoria.'</a>';
  19. echo "<br />";
  20.  
  21. }
  22. ?>


następnie plik kategoria.php
  1. <?php
  2. $id = (int)$_GET['id'];
  3.  
  4. $zapytanie = "
  5. SELECT podkategorie.podkategoria AS podkategoria
  6.  
  7. FROM podkategorie
  8. WHERE podkategorie.id_kategoria = $id
  9. ORDER BY podkategoria
  10. ";
  11.  
  12. $wynik = @mysql_query ($zapytanie) or die (mysql_error());
  13. while($row = mysql_fetch_array($wynik)) {
  14.  
  15. $podkategoria = $row['podkategoria'];
  16.  
  17. echo $podkategoria."<br />";
  18.  
  19. }
  20. ?>


, a później jeszcze plik podkategoria do którego nie mogę się dostać ponieważ mam problem już z kategoria.php

1. Mianowicie czy takie odwoływanie się jest dobre czy może lepszym i zalecanym sposobem było by zrobienie tego w jednym pliku ?
2. Próbując dopisać do pliku kategoria.php przy FROM dopisując jeszcze katalog_firm, (ponieważ chciałem stworzyć linki do wyświetlania wpisów z podkategorii) wszystko się mnoży razy 4.
Tzw. mam wpisy Solarium, Sauna i wszystko jest napisane po 4 razy, raz nawet było 5 razy - dlaczego się tak dzieje ?
Ociu
  1. SELECT kategoria.kategoria AS kategoria,
  2. kategoria.id AS id
  3.  
  4. FROM kategoria ORDER BY kategoria

Skoro działasz na jednej tabeli nie musisz dawać kategoria.kategoria.

  1. SELECT * FROM kategoria ORDER BY kategoria


1. imho to nie ma znaczenia czy piszesz to w jednym pliku, czy w 10. To zależy od Ciebie. Zawsze możesz to uruchamiać w jednym pliku, np. w index.php
Jeśli nie istnieje kategoria w bazie o id = $_GET['id'] wyświetlasz listę wszystkich kategorii.

2. DISTINCT ?
piotr485
No tak masz rację. Pojawił się problem który wynika z tego, że mam wszystko z osobnym pliku mianowicie mam wtedy problem z utworzeniem pasku nawigacyjnego który wygląda tak:
Strona Główna -> Zdrowie i Uroda -> Solaria -> Pokazane wszystkie mianowicie pasek wyświetlam na podstawie adresu w pasku nawigacyjnym który posiada jakiś GET, a kiedy stosuję wszystko w różnych plikach niestety gdy dojdę do "Solaria" to już Zdrowie i Uroda mi zniknie z tego względu, że adres się zmienia i ucieka GET

Próbuję rozwiązać to, aby umieścić wszystko w jednym pliku niestety mam problem mianowicie robię tak:
  1. if (!isset($_GET['id'])) { // tutaj wyświetlam podstawowe kategorie
  2. }
  3.  
  4. if (isset($_GET['id'])) { //tutaj wyświetlam podkategorie wybranej kategorii
  5. }
  6.  


Problem w tym, że jak już jestem w podkategorii i chcę ją otworzyć to mam problem z adresem bo musi mieć postać index.php?id=1&pod=1, a nie mogę już uzyskać numerów do id bo już jestem w podkategoriach ?

dlatego zastanawiam się czy ... ?

1. Jest jakiś sposób żeby dodać do paska istniejącego np. &pod='.$id.', ale nie za pomocą
  1. $_SERVER
- bo wydaję mi się że jest jakiś lepszy sposób do rozwiązania tej sytuacji ?
2. Powinienem utworzyć wszystko w jednym zapytaniu czy ten sposób jest dobry ?
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.