Criando Menu Tree usando jQuery com dados do BD

PHPBanco de DadosJavaScript
Enviado por Eclesiastes em Qui, 20/09/2007 - 09:13.PHP | Banco de Dados | JavaScript

Vejo muitas dúvidas a respeito, e várias soluções são apresentadas, como executando uma query várias vezes, ou limitando o nível de profundidade dos filhos. Segue um idéia que tive, usando apenas uma query e montando o array para posteriormente construir o menu. E aproveitando para embelezar a visualização, utilizei o projeto de TreeView do site http://jquery.bassistance.de/treeview/!

  1. <base href="http://jquery.bassistance.de/treeview/">
  2. <script src="../dist/jquery.js" type="text/javascript"></script>
  3. <script src="jquery.treeview.js" type="text/javascript"></script>
  4. <script type="text/javascript">
  5. $(document).ready(function(){
  6.   $("#browser").Treeview();
  7. });
  8. </script>
  9. <style type="text/css">
  10. .treeview, .treeview ul {
  11.   padding: 0;
  12.   margin: 0;
  13.   list-style: none;
  14. }   
  15. ul.dir li { padding: 2px 0 0 16px; }
  16. .treeview li { background: url(images/tv-item.gif) 0 0 no-repeat; }
  17. .treeview .collapsable { background-image: url(images/tv-collapsable.gif); }
  18. .treeview .expandable { background-image: url(images/tv-expandable.gif); }
  19. .treeview .last { background-image: url(images/tv-item-last.gif); }
  20. .treeview .lastCollapsable { background-image: url(images/tv-collapsable-last.gif); }
  21. .treeview .lastExpandable { background-image: url(images/tv-expandable-last.gif); }
  22. </style>
  23. <?php
  24.  
  25. mysql_connect('localhost', 'root');
  26. mysql_select_db('seu_db');
  27.  
  28. $menu = array();
  29.  
  30. // Filhos
  31. function show_tree($id_parent) {
  32.   global $menu;
  33.  
  34.   print "<ul>\n";
  35.   foreach ($menu[$id_parent] as $id => $label) {
  36.     if (isset($menu[$id])) {
  37.       printf("<li><img src='images/folder.gif'/> %s\n", $label);
  38.       show_tree($id);
  39.     } else {
  40.       printf("<li><img src='images/file.gif'/> %s\n", $label);
  41.     }
  42.   }
  43.   print "</li></ul>\n";
  44. }
  45.  
  46. $rs = mysql_query('SELECT * FROM menu ORDER BY id_parent, label');
  47. while ($row = mysql_fetch_assoc($rs)) {
  48.   if (is_null($row['id_parent'])) {
  49.     $menu['root'][$row['id']] = $row['label'];
  50.   } else {
  51.     $menu[$row['id_parent']][$row['id']] = $row['label'];
  52.   }
  53. }
  54.  
  55. print "<ul id='browser' class='dir'>\n";
  56. // Raiz
  57. foreach ($menu['root'] as $id => $label) {
  58.   printf("<li><img src='images/folder.gif'/>%s\n", $label);
  59.   if (isset($menu[$id])) {
  60.     show_tree($id);
  61.   }
  62.   print "</li>\n";
  63. }
  64. print "</ul>";
  65.  
  66. unset($menu);
  67.  
  68. ?>



Enviado por guest (não verificado(a)) em Seg, 30/06/2008 - 23:35.

Nao teria como disponibilizar a estrutura da tabela e alguns dados como exemplo?

Grato.

Enviado por Kamilla (não verificado(a)) em Qua, 28/04/2010 - 12:21.

Bom, onde estão as imagens usadas? Na pasta do link não estão... Achei um pouco incompleto e sem explicações detalhadas... Se pudesse detalhar mais seria ótimo, tô precisando muito fazer isso em um portal que estou trabalhando!