Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] drzewo kategorii
fantaff
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.11.2010

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


witam

przejde do rzeczy odrazu.

mam tabele o nazwie category w bazie która wygląda nast. :

id_category || parent_id || name

i wiadomo odpowiednio
1 || 0 || cos
2 || 0 || cos2
3 || 1 || cos3
4 || 2 || cos4

znalazlem 2 sposoby aby wyswietlic drzewo na stronie.

sposob 1:
  1. <?php
  2.  
  3. mysql_connect('localhost','test','test');
  4. mysql_select_db('anonsedb');
  5.  
  6. function show($res)
  7. {
  8.  
  9. $q="SELECT * FROM category WHERE parent_id = $res";
  10.  
  11. $result = mysql_query($q) or die(mysql_error());
  12. echo '<ul>';
  13. while($row = mysql_fetch_array($result))
  14. if($row['parent_id'] > 0)
  15. {
  16.  
  17. echo '<li><a href="index.php?name='.$row['name'].'">'.$row['name'].'</a></li>';
  18. show($row['id_category']);
  19. }
  20.  
  21. else
  22. echo '<li>'.$row['name'].'</li>';
  23.  
  24.  
  25. echo '</ul>';
  26. }
  27.  
  28. $q="SELECT * FROM category WHERE parent_id = 0";
  29. $result = mysql_query($q);
  30. echo '<ul>';
  31. while($row = mysql_fetch_array($result))
  32. {
  33. echo '<li><b><a href="index.php?name='.$row['name'].'">'.$row['name'].'</a></b></li>';
  34. echo show($row['id_category']);
  35. }
  36. echo '</ul>';
  37.  
  38.  
  39. ?>


sposob 2:
  1. <?php
  2.  
  3. mysql_connect('localhost','test','test');
  4. mysql_select_db('anonsedb');
  5.  
  6. function getAll ($query) {
  7. $res = mysql_query($query);
  8. $ret = array();
  9. if (!$res)
  10. return $ret;
  11. while ($r = mysql_fetch_assoc($res))
  12. $ret[] = $r;
  13. return $ret;
  14. }
  15.  
  16. function drzewoKategorii ($kategorie = null, $rodzicId = 0, $zaglebienie = 0, $wynik = null)
  17. {
  18. if ($wynik == null)
  19. $wynik = array();
  20. if ($kategorie == null) {
  21. $query = "select * from category order by parent_id, name";
  22. $kategorie = getAll($query);
  23. }
  24. foreach ($kategorie as $kat) {
  25. if ($r["parent_id"] == $rodzicId) {
  26. $r["zaglebienie"] = $zaglebienie;
  27. $wynik[] = $kat;
  28. $wynik = drzewoKategorii ($kategorie, $kat["id_category"], ($zaglebienie+1), $wynik);
  29. }
  30. }
  31. return $wynik;
  32. }
  33.  
  34. $drzewo = drzewoKategorii();
  35. foreach ($drzewo as $galaz) {
  36. for ($i=0; $i<=$galaz["zaglebienie"]; $i++) {
  37. echo '-';
  38. }
  39. echo $galaz["name"].'<br/>';
  40. }
  41.  
  42.  
  43. ?>


kody obu przykładów rozumiem w około 90%.

w sposobie 1 wyświetla mi drzewo bardzo ladnie ale nietety po wyswietleniu wszystkiego wywala mi blad i reszta strony nie laduje sie.

sposob 2 nie wyswietla mi drzewa (nie wiem czemu...) jednak jesli w index-ie dam include cat.php <-- plik z 1 sposobem, a do innej stronki powiedzmy ogloszenia.php wrzuce skrypt 2 dzieje sie bardzo dziwna rzecz. po zaladowaniu index.php wyswietla mi kategorie z bledem a po klikniecu odnosnika do ogloszenia.php wyswietla mi kategorie z 2 skryptu bardzo ladnie i bez bledu.

moje pytanie, ktory skrypt jest lepszy, i dlaczego 2 skrypt samodzielnie nie dziala a z 1 skryptem "z-includowanym" do indexu dziala?
Go to the top of the page
+Quote Post

Posty w temacie


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: 19.08.2025 - 20:19