Newsgroup: it.comp.www.php
Titolo: Organigramma

Salve a tutti,
qlc ha idea di come si possa implementare un organigramma basato su un
database?
Una sorta di albero (o più alberi) da "disegnare" dinamicamente, in
base a dei valori contenuti nel database (quali ad esempio l'id
genitore e l'id dell'albero).
Il problema è anche il codice HTML (o DHTML) necessario per disegnare
l'organigramma.
Se qlc ha un link per qualche script già fatto è pregato di
indicarlo:))
Mille Grazie!
--
Ambrogio disse, riguardo a certe idee di software pirata ed al mio invito ad usare altri os:
"Quale sarebbe? Il linux? Quel coso dove 3000 programmi non funzionano?"

 database?
Mettiamo che l'albero o organigramma sia tipo questo:
             nonno
               |
        +------+-------+
        |              |
      padre           zio
        |              |
    +---+----+         |
    |        |         |
figlio   figlia     cugino
Allora: le istruzioni SQL sono queste, che descrivono come è fatto 
l'albero, dove parentid contiene l'id del nodo padre:
------------------------------------------------------------------------
CREATE TABLE albero (
     id int(11) NOT NULL default '0',
     description varchar(20) NOT NULL default '',
     parentid int(11) NOT NULL default '0',
     PRIMARY KEY (id)
);
INSERT INTO albero (id, description, parentid) VALUES (1, 'nonno', 0);
INSERT INTO albero (id, description, parentid) VALUES (2, 'padre', 1);
INSERT INTO albero (id, description, parentid) VALUES (3, 'zio', 1);
INSERT INTO albero (id, description, parentid) VALUES (4, 'figlio', 2);
INSERT INTO albero (id, description, parentid) VALUES (5, 'figlia', 2);
INSERT INTO albero (id, description, parentid) VALUES (6, 'cugino', 3);
------------------------------------------------------------------------
La parte di Javascript:
------------------------------------------------------------------------
<script language="JavaScript">
<!--
function toggle(nome) {
   obj = document.getElementById(nome);
 
   if (obj.style.display == 'block')
     obj.style.display = 'none';
   else if (obj.style.display == 'none')
     obj.style.display = 'block';
}
//-->
</script>
------------------------------------------------------------------------
Lo script PHP:
------------------------------------------------------------------------
<?
   function findChildren($idnodo) {
     $query = "SELECT id, description, parentid FROM albero
       WHERE parentid = $idnodo";
     $result = mysql_query($query);
     if (mysql_num_rows($result) > 0) {
       while (list($id, $description, $parentid) =
                 mysql_fetch_row($result)) {
?>
           <td align="center">
           <table border="1">
             <tr><td align="center">
               <a href="javascript:void(0);"
                 onclick="toggle('nodo<?= $id?>')"><?= $description ?></a>
             </td></tr>
             <tr><td align="center"><table id="nodo<?= $id?>"
                   style="display:none;" border="1"><tr>
<?
         findChildren($id);
?>
             </tr></table></td></tr>
           </table>
           </td>
<?
       }
     }
     else {
?>
       <td align="center">-</td>
<?
     }
   }
?>
     <table border="1"><tr>
       <td align="center"><a href="javascript:void(0);"
              onclick="toggle('nodo1')">nonno</a>
       </td></tr>
       <tr><td align="center"><table id="nodo1" style="display:none;" 
          border="1"><tr>
<?
   findChildren(1);
?>
     </tr></table></td></tr>
   </table>
------------------------------------------------------------------------
Dovrebbe funzionare!
Buon divertimento!!
CIAO!
-- 
matteodg



Grazie infinite! Proverò, anche se devo documentarmi meglio sul codice
javascript che hai indicato!
Se ho problemi posto di nuovo;)
--
Oggi ho fatto una scoperta, ho trovato un computer...
The MentoR