Witam pomoże mi ktoś jak uprościć kod odpowiedzialny za wyświetlanie listy kategorii i ich zawartości (coś podobne do folderów i plików). Kategorie są poukładane w jednej tabeli, a pytania w drugiej. W obu tabelach jest pole r_id które mówi o id katalogu rodzicu. Cały skrypt przerobiłem z poprzedniego projektu gdzie były pliki lecz po przeróbce na bazodanowy system jest to trochę nie wydajne.

Kod php
  1. function testy_kategorie() {
  2. echo "<ul id='tree' class='filetree'>";
  3.  
  4. $result = mysql_query("SELECT * FROM testy_kategorie WHERE r_id = 0 ORDER BY id ASC ");
  5. $num=mysql_numrows($result);
  6. for ($i=0; $i < $num ; $i ++ )
  7. {
  8. $id=mysql_result($result,$i,"id");
  9. $name=mysql_result($result,$i,"name");
  10. echo "<li><span class=' folder'>$name</span>";
  11. $n1 =mysql_fetch_array(mysql_query("SELECT count(*) FROM testy_kategorie WHERE r_id = ".$id." ORDER BY id ASC "));
  12. $n2=mysql_fetch_array(mysql_query("SELECT count(*) FROM testy_pytania WHERE r_id = ".$id." ORDER BY id ASC "));
  13. if($n1[0] >0 or $n2[0] >0){
  14. echo "<ul>";
  15. createDir($id);
  16. printFile($id);
  17. echo "</ul>";
  18. }
  19. echo "</li>";
  20. }
  21.  
  22. printFile(0);
  23. echo "</ul>";
  24. }
  25.  
  26.  
  27. function createDir($path)
  28. {
  29.  
  30.  
  31.  
  32.  
  33. $result = mysql_query("SELECT * FROM testy_kategorie WHERE r_id = ".$path." ORDER BY id ASC ");
  34. $num=mysql_numrows($result);
  35. if($num >0){
  36. for ($i=0; $i < $num ; $i ++ )
  37. {
  38. $id=mysql_result($result,$i,"id");
  39. $name=mysql_result($result,$i,"name");
  40. echo "<li><span class=' folder'>$name</span>";
  41. $n1 =mysql_fetch_array(mysql_query("SELECT count(*) FROM testy_kategorie WHERE r_id = ".$id." ORDER BY id ASC "));
  42. $n2=mysql_fetch_array(mysql_query("SELECT count(*) FROM testy_pytania WHERE r_id = ".$id." ORDER BY id ASC "));
  43. if($n1[0] >0 or $n2[0] >0){
  44. echo "<ul>";
  45. createDir($id);
  46. printFile($id);
  47. echo "</ul>";
  48. }
  49. echo "</li>";
  50. }
  51.  
  52. }
  53. }
  54.  
  55.  
  56.  
  57.  
  58. function printFile($path)
  59. {
  60.  
  61. $result = mysql_query("SELECT * FROM testy_pytania WHERE r_id = ".$path." ORDER BY id ASC ");
  62. $num=mysql_numrows($result);
  63. if($num >0){
  64. for ($i=0; $i < $num ; $i ++ )
  65. {
  66. $id=mysql_result($result,$i,"id");
  67. $name=mysql_result($result,$i,"pytanie");
  68. echo '<li><span class="file" >'.$name.'</span></li>';
  69.  
  70. }
  71. }
  72. }


a tu link do pobrania testowej strony (skrypt php skrypt js i wycinek bazy)ogejm.c0.pl/wst.rar

był bym wdzięczny za jakieś wskazówki