Witam - mam kilka pytań kwestii kodu.




Jak wy to robicie ? Przeczytałem pewien artykuł na temat zagnieżdzania zapytań poprzez zadanie jednego zapytania które prowadzi do tablic a z tablic odczytujemy ją pętlą foreach, ale kiedy to tak naprawdę należy zastosowac ?

1. Jakie macie medoty na GET czy mój sposób jest prawidłowy ?
2. Czy jest możliwe wykonanie tego kodu za pomoca jednego zapytania i zrobienie tego jak wyzej napisalem ?
3. Jak wyglada poprawnośc, wydajnośc, optymalizacja tego kodu?

Z góry dziękuję za pomoc i pozdrawiam Was ciepło czarodziej.gif

Oto mój kod:

  1. $id_get = $_GET['id'];
  2.  
  3.  
  4. include_once ("connection.php");
  5.  
  6. if (!isset($id_get)) {
  7.  
  8. $zapytanie = "
  9. SELECT kategoria_pl AS kategoria,
  10. kategoria.id AS id
  11.  
  12. FROM kategoria
  13.  
  14. ORDER BY kategoria_pl
  15. ";
  16.  
  17. $wynik = @mysql_query ($zapytanie) or die (mysql_error());
  18.  
  19. while($row = mysql_fetch_array($wynik)) {
  20.  
  21. $kategoria = $row['kategoria'];
  22. $id = $row['id'];
  23.  
  24. echo '<a href="index.php?id='.$id.'">'.$kategoria.'</a>';
  25. echo "<br />";
  26.  
  27. }
  28. }
  29.  
  30. // KATEGORIE
  31.  
  32. if (isset($id_get) && !isset($_GET['pod'])) {
  33.  
  34. $pod = (int)$id_get;
  35.  
  36. $zapytanie = "
  37. SELECT DISTINCT podkategorie.podkategoria AS podkategoria,
  38. podkategorie.id AS id,
  39. podkategorie.id AS id_pod
  40.  
  41. FROM podkategorie, katalog_firm
  42. WHERE podkategorie.id_kategoria = $pod
  43. ORDER BY podkategoria
  44. ";
  45.  
  46. $wynik = @mysql_query ($zapytanie) or die (mysql_error());
  47. while($row = mysql_fetch_array($wynik)) {
  48.  
  49. $podkategoria = $row['podkategoria'];
  50. $pod = $row['id'];
  51. $id_pod = $row['id_pod'];
  52.  
  53. //tutaj nowe
  54.  
  55. $zapytanie3 = "
  56. SELECT katalog_firm.id_podkategoria AS ilosc
  57. FROM katalog_firm
  58. WHERE katalog_firm.id_podkategoria = $id_pod
  59. ORDER BY katalog_firm.id_podkategoria
  60. ";
  61. $wynik3 = @mysql_query ($zapytanie3) or die (mysql_error());
  62. $suma = mysql_num_rows($wynik3);
  63.  
  64. if ($suma >=1) {
  65.  
  66. echo '<a href="index.php?id='.$id.'&pod='.$pod.'">'.$podkategoria."</a><br />";
  67. }
  68. }
  69.  
  70. }
  71.  
  72.  
  73. if (isset($_GET['pod']) && !isset($_GET['firma'])) {
  74. // PODKATEGORIE
  75.  
  76. $id = (int)$_GET['pod'];
  77.  
  78.  
  79. $zapytanie = "
  80. SELECT katalog_firm.id AS id_firm,
  81. katalog_firm.nazwa_firmy,
  82. katalog_firm.adres,
  83. ulica.ulica AS ulica,
  84. miasta.miasto AS miasto,
  85. podkategorie.podkategoria AS podkategoria
  86.  
  87. FROM katalog_firm
  88. JOIN podkategorie ON katalog_firm.id_podkategoria = podkategorie.id
  89. JOIN ulica ON katalog_firm.id_ulica = ulica.id
  90. JOIN miasta ON katalog_firm.id_miasto = miasta.id
  91.  
  92. WHERE podkategorie.id = $id
  93. ORDER BY katalog_firm.nazwa_firmy
  94. ";
  95.  
  96. $wynik = @mysql_query ($zapytanie) or die (mysql_error());
  97.  
  98. while($row = mysql_fetch_array($wynik)) {
  99.  
  100. $nazwa_firmy = $row['nazwa_firmy'];
  101. $adres = $row['adres'];
  102. $ulica = $row['ulica'];
  103. $miasto = $row['miasto'];
  104. $podkategoria = $row['podkategoria'];
  105. $id_firm = $row['id_firm'];
  106.  
  107. echo '<a href="index.php?firma='.$id_firm.'"><b>'.$nazwa_firmy.'</b></a><br />';
  108. echo $ulica." ".$adres."<br />";
  109. echo $miasto."<br />";
  110. echo "<b>podkategoria</b>: ".$podkategoria."<br /><br /><br />";
  111. }
  112. }
  113.  
  114. //firma
  115.  
  116. if (isset($_GET['firma'])) {
  117. // PODKATEGORIE
  118.  
  119. $id_firma = (int)$_GET['firma'];
  120.  
  121.  
  122. $zapytanie = "
  123. SELECT katalog_firm.id,
  124. katalog_firm.nazwa_firmy,
  125. katalog_firm.adres,
  126. ulica.ulica AS ulica,
  127. miasta.miasto AS miasto,
  128. podkategorie.podkategoria AS podkategoria
  129.  
  130. FROM katalog_firm
  131. JOIN podkategorie ON katalog_firm.id_podkategoria = podkategorie.id
  132. JOIN ulica ON katalog_firm.id_ulica = ulica.id
  133. JOIN miasta ON katalog_firm.id_miasto = miasta.id
  134.  
  135. WHERE katalog_firm.id = $id_firma
  136. ORDER BY katalog_firm.nazwa_firmy
  137. ";
  138.  
  139. $wynik = @mysql_query ($zapytanie) or die (mysql_error());
  140.  
  141. while($row = mysql_fetch_array($wynik)) {
  142.  
  143. $nazwa_firmy = $row['nazwa_firmy'];
  144. $adres = $row['adres'];
  145. $ulica = $row['ulica'];
  146. $miasto = $row['miasto'];
  147. $podkategoria = $row['podkategoria'];
  148.  
  149.  
  150. echo "<b>".$nazwa_firmy."</b><br />";
  151. echo $ulica." ".$adres."<br />";
  152.  
  153. echo "<b>podkategoria</b>: ".$podkategoria."<br /><br /><br />";
  154. }
  155. }