Devo aver combinato qualche casino! Credevo di aver postato il metodo che serviva a te ma evidentemente mi sbagliavo. Cmq eccolo: lo devi adattare alla classe di andr3a però! Ciao!
Codice PHP:
function getUnformattedTree($node = 0 , $deep = false)
{
// Esegue il casting di node
$node = (int)$node;
// Definizione della clausola where
$where = "";
// Se viene passato l'id di un nodo
// imposto $where per mostrare solo
// quel nodo
if ($node != 0)
{
// Ottengo i flag dx e sx del nodo
$flags = $this->_getProperties($node);
// Costruisco la clausola WHERE
$where = "WHERE " . $this->_prefix . "tree.sx >= {$flags['sx']}
AND " . $this->_prefix . "tree.dx <= {$flags['dx']}";
} // END if $node != 0
$query = "SELECT " . $this->_prefix . "details.id AS id,
" . $this->_prefix . "tree.sx AS sx,
" . $this->_prefix . "tree.dx AS dx,
" . $this->_prefix . "details.name AS name
FROM " . $this->_prefix . "tree
LEFT JOIN " . $this->_prefix . "details ON " . $this->_prefix . "details.node = " . $this->_prefix . "tree.id
$where
ORDER BY " . $this->_prefix . "tree.sx ASC";
// Esecuzione della query
// e restituzione del risultato
$result = mysql_query($query) or die (mysql_error());
// Costruisco l'array da esportare
$i = 0; // Contatore dell'indice dell'array
$lastSx = 1; // Ultimo valore del flag sx
$tab = 0; // numero di ripetizioni del carattere di indentazione
while ($row = mysql_fetch_array($result))
{
/* Inizio procedimento di indentazione */
// Assegnazione più casting della variabile $sx
$sx = (int)$row['sx'];
if ( $sx === ( $lastSx + 1 ) )
{
$tab++;
}
else if ( $sx > ( $lastSx + 2 ) && $tab >= ( $sx - ( $lastSx + 2 ) ) )
{
$tab -= $sx - ( $lastSx + 2 );
}
/* Fine procedimento di indentazione */
// Controllo se si deve limitare la profondità
if ($deep !== false)
{
// Casting di $deep
$deep = (int)$deep;
// Sottraggo 1 a deep
//$deep = $deep -1;
// Bisogna limitare la profondità
if ($tab > '0' && $tab <= $deep)
{
$export[$i]['id'] = $row['id'];
$export[$i]['name'] = $row['name'];
$export[$i]['sx'] = $row['sx'];
$export[$i]['dx'] = $row['dx'];
$export[$i]['isLeaf'] = $this->_isLeaf( $row['sx'] , $row['dx'] );
$export[$i]['level'] = $tab;
$i++;
}
}
else
{
// Non bisogna limitare la profondità
// Assegnazione dei valori all'array da esportare
$export[$i]['id'] = $row['id'];
$export[$i]['name'] = $row['name'];
$export[$i]['sx'] = $row['sx'];
$export[$i]['dx'] = $row['dx'];
$export[$i]['isLeaf'] = $this->_isLeaf( $row['sx'] , $row['dx'] );
$export[$i]['level'] = $tab;
$i++;
}
$lastSx = $row['sx'];
}
return $export;
} // End getUnformattedTree()