è una domanda scema ma proprio non riesco a venirne a capo :master:
ho un array costruito in modo simile a questo:
(livello) (nome elemento)
quindi
1 paolo
2 nicola
2 alessia
3 francesco
2 gianfranco
3 carmelo
4 ermenegilda
dovrei riuscire a rappresentare una struttura tipo
codice:
paolo
nicola
alessia
francesco
gianfranco
carmelo
ermenegilda
il tutto con degli ul, naturalmente...
io ho fatto questo:
Codice PHP:
<?php
$id = 1;
$rows = $this->requestAction('/items/getmenuitems_ns/'. $id);
$livello = -1;
$visible_path = null;
$livello_vis = null;
foreach ($rows as $row) {
$livello_str = null;
if ($livello < $row['livello']) {
$livello_str = "\n<ul>[*]";
$livello_vis .= $row['visible'];
}
elseif ($livello > $row['livello']) {
while ($livello >= $row['livello']) // scendo i livelli della lista fino a chiuderla
{
$livello_str .= "\n[/list]";
$livello = $livello - 1;
$livello_vis = substr($livello_vis, 0, -2);
}
$livello_str .= "[*]";
$livello_vis .= $row['visible'];
}
elseif ($livello == $row['livello'] and $livello != 0) {
$livello_str = "\n[*]";
$livello_vis = substr($livello_vis, 0, -1);
$livello_vis .= $row['visible'];
}
if (!preg_match("/0/", $livello_vis)) {
echo $livello_str;
echo $livello;
echo $html->link($row['nome'], "/items/view/".$row['id']);
}
$livello = $row['livello']; // imposto il vecchio livello per sapere come devo salire o scendere nell'albero
}
echo "";
while ($livello > -1) { // scendo i livelli della lista fino a chiuderla
echo "[/list]\n";
$livello = $livello - 1;
}
echo "[/list]";
?>
in parte funziona, ma non mi restituisce un codice html valido... dove sbaglio? :master:
edit: dimenticavo...
alcuni nodi possono essere invisibili, quindi non devono essere visualizzati e anche il ramo che parte da loro deve essere nascosto
per fare questo ho costruito una semplice variabile $livello_vis, a cui aggiungo 1 se il livello è visibile e 0 se non lo è