Infatti... sto effettivamente cominciando a rincretinirmi... e non poco!
Direi di andare per gradi...
Innanzitutto vorrei rendere l'albero abbastanza gestibile, perciò ho pensato di usare uno scriptino molto carino che ho
trovato su www.destroydrop.com/javascripts/tree/
Il problema è che devo riuscire a conoscere l'id del padre nel quale ogni nodo figlio è contenuto...
Ho un albero del tipo:
Categoria Principale
- Abbigliamento
-- Giacche
- Calzature
-- Scarpe
+++ Nike 707
ed una tabella cosi composta:
codice:
--------------------------------------------
id | nome | sx | dx | tipo |
--------------------------------------------
1 | Categoria Principale | 1 | 12 | 0 |
2 | Abbigliamento | 2 | 5 | 0 |
3 | Calzature | 6 | 11 | 0 |
4 | Giacche | 3 | 4 | 0 |
5 | Scarpe | 7 | 10 | 0 |
6 | Nike 707 | 8 | 9 | 5 |
--------------------------------------------
Dove ho aggiunto il campo tipo che di default è 0 ma nel caso avesse un numero diverso da 0 vuol dire che il campo non
rappresenta una categoria, bensì un prodotto ed il numero rappresenta l'id della scheda del prodotto contenuta nella tabella
schede.
Ora avendo un db del genere dovrei generare un codice del tipo:
codice:
d.add(0,-1,'Categoria Principale','insert_under.php?id=1');
d.add(1,0,'Abbigliamento','insert_under.php?id=2');
d.add(2,1,'Giacche','insert_under.php?id=4');
d.add(3,0,'Calzature','insert_under.php?id=3');
d.add(4,3,'Scarpe','insert_under.php?id=5');
d.add(5,4,' Nike 707','scheda.php?id=5','','','img/page.gif');
che nel dettaglio sarebbe: add(id,id_padre,'nome','link'); che solo per la Categoria Principale id e id_padre devono essere 0
e -1
Ma come si fa?
Il massimo che sono riuscito a fare è di differenziare le categorie dai prodotti... il codice della funzione che ho è
attualmente questo:
Codice PHP:
<?php
$tabella = "personale";
function display_tree($root) {
global $tabella;
$sql = "SELECT sx, dx FROM $tabella WHERE id={$root}";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($result);
$right = array();
$sql = "SELECT id, nome, sx, dx, tipo FROM $tabella WHERE sx BETWEEN {$row['sx']} AND {$row['dx']} ORDER BY sx ASC";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
if (count($right)>0) {
while ($right[count($right)-1]<$row['dx']) {
array_pop($right);
}
}
if($row['tipo'] == 0){
echo str_repeat('-',count($right)).$row['id']." ".$row['nome']."
";
}else{
echo str_repeat('+',count($right)).$row['id']." ".$row['nome']."
";
}
$right[] = $row['dx'];
}
}
?>
Mi dai una mano perfavore?
Ti ringrazio!