Wiec tak tworze sobie drzewko mysql:

  1. <?php
  2.  
  3. define('CATEGORY_TABLE','tbl_category');
  4.  
  5. try
  6. {
  7. $sql = 'SELECT * FROM '.CATEGORY_TABLE.' ORDER BY idCategory ASC';
  8. $res = $mysqli -> query($sql);
  9.  
  10. $t = array();
  11.  
  12. while ( $row = $res -> fetch_assoc() )
  13. {
  14. if ( $row['parentCategory'] == 0 )
  15. {
  16. $parent[] = $row;
  17. }
  18. else
  19. {
  20. if ( isset( $t[$row['parentCategory']] ) )
  21. {
  22. $t[$row['parentCategory']][] = $row;
  23. }
  24. else
  25. {
  26. $t[$row['parentCategory']][0] = $row;
  27. }
  28. }
  29. }
  30.  
  31. function show( $arr, $parentCategoryName, $i = 1)
  32. {
  33. global $t;
  34. foreach( $arr as $parent => $val ) 
  35. {
  36. if( $t[ $val['idCategory'] ] ) 
  37. {
  38. //echo '<li><a href="'.$parentCategoryName.'/'.pl2iso($val['nameCategory']).'/">'.$val['nameCategory'].'</a></li>';
  39. echo '<li><a href="?parentCategory='.$val['parentCategory'].'&idCategory='.$val['idCategory'] .'">'.$val['nameCategory'].'</a></li>';
  40.  
  41. $parentCategoryName = pl2iso($val['nameCategory']);
  42.  
  43. show( $t[ $val['idCategory'] ], $parentCategoryName, ++$i );
  44. }
  45. else 
  46. {
  47. //echo '<li><a href="'.$parentCategoryName.'/'.pl2iso($val['nameCategory']) .'/">'.$val['nameCategory'].'</a></li>';
  48. echo '<li><a href="?parentCategory='.$val['parentCategory'].'&idCategory='.$val['idCategory'] .'">'.$val['nameCategory'].'</a></li>';
  49. }
  50. }
  51. }
  52.  
  53. foreach( $parent as $val )
  54. {
  55. //echo '<li><a href="'.pl2iso($val['nameCategory']).'/">'.$val['nameCategory'].'</a></li>';
  56. echo '<li><a href="?idCategory='.$val['idCategory'].'">'.$val['nameCategory'].'</a></li>';
  57.  
  58. $parentCategoryName = pl2iso($val['nameCategory']);
  59.  
  60. if( $val['idCategory'] == $_GET['idCategory'] || $val['idCategory'] == $_GET['parentCategory'])
  61. {
  62. if( $t[ $val['idCategory'] ] && isset($_GET['idCategory']) ) 
  63. {
  64. echo '<ul>';
  65. show( $t[ $val['idCategory'] ], $parentCategoryName );
  66. echo '</ul>';
  67. }
  68. }
  69. }
  70. }
  71. catch ($error)
  72. {
  73. }
  74. ?>


i mam problem ze stworzeniem linka np do 3 poziomu i dalszego. jak tego dokonac? (za pomoca id, za pomoca nazw dla mode_rewrite)

pl2iso to funkcja zamieniajaca litery poslkie,

dla linku dla 2-go poziomu nazwe przekazuje tak: $parentCategoryName = pl2iso($val['nameCategory']);

baza wyglada tak:


idCategory int(10)
parentCategory int(10)
nameCategory varchar(128)