Newsgroup: it.comp.www.php
Titolo: Creare navigazione assistita

Ciao a tutti,
sto ultimando la creazione di un calalogo on line, questi si nuove sulla
possibilitŕ di inseririre infinite categorie annidate ( la tabella ha due
colonne padre, figlio per intenderci dove si muovono le categorie).
Quindi io posso inserire all' interno di una categoria un' altra categoria
cosě all' infinito.
Per ora, ho l' esigenza di creare anche un menu di navigazione assistita che
ricostruisca tutto l' albero di navigazione, ad esempio in questo modo.
Home>categoria1>categoria2>categoria3
Potete aiutarmi... a capire come debbo fare

 Potete aiutarmi... a capire come debbo fare
gestione di un albero.
ti posto un esempietto che avevo fatto a suo tempo
(riaggiustato al volo per PHP > 4.1.0)
tabella SQL (nell'esempio database "albero"):
CREATE TABLE nodi (
   id int(11) NOT NULL auto_increment,
   padre int(11) default NULL,
   nome varchar(50) default NULL,
   PRIMARY KEY  (id)
) TYPE=MyISAM;
--------file inc.php--------------
<?
function getfather($son,&$con,&$tree)
{
$here.=' > ';
$res=mysql_query("select nome, padre from nodi where id=$son",$con);
$riga=mysql_fetch_row($res);
$here.="<a href='$PHP_SELF?curnode=".$son."'>".$riga[0]."</a>";
if($riga[1]!=0) {
         $tree=getfather($riga[1],$con,$tree);
} else { //non mi ricordo perché ho lasciato un else vuoto...
         }
$tree.=$here;
return($tree);
}
function delete($delete,&$con)
{
$sql="select id from nodi where padre=$delete";
$res1=mysql_query($sql,$con);
if(mysql_num_rows($res1)>0)
	while($riga=mysql_fetch_row($res1))
		delete($riga[0],$con);
mysql_query("delete from nodi where id=$delete",$con);
}
?>
-----------------------------------
--------file albero.php--------------
<?
include 'inc.php';
$con = mysql_connect (localhost,"","") or die(mysql_error());
mysql_select_db("albero" , $con) or die(mysql_error());
if(isset($_GET['delete'])) {
	delete($_GET['delete'],$con);
}
if(isset($_GET['inserisci'])) {
	$tree="";
	$tree=getfather($_GET['inserisci'],$con,$tree);
	print "Stai inserendo in: $tree<br><hr>";
 
	print "<form action='".$_SERVER['PHP_SELF']."' method='GET'>";
	print "nome:<input type='text' name='nome' size=30 maxsize=30>";
	print "<input type='hidden' name='curnode' 
value='".$_GET['inserisci']."'>";
	print "<input type='submit' name='insert' value='Inserisci'>";
	exit;
}
if(isset($_GET['insert'])) {
	if(!empty($_GET['nome'])) {
		$sql="insert into nodi (padre, nome) values 
(".$_GET['curnode'].",'".$_GET['nome']."')";
		mysql_query($sql,$con);
	} else {
		print "nessun valore specificato";
	}
}
if(isset($_GET['curnode'])) {
	$tree='';
	$curnode=$_GET['curnode'];
	$tree=getfather($curnode,$con,$tree);
} else {
	$tree=' > ';
	$curnode=0;
}
print "<b>OPERAZIONI</b><br>";
print "<a href='".$_SERVER['PHP_SELF']."?inserisci=$curnode'>Inserisci 
nuovo nodo<br></a>";
if ($curnode!=0)
	{
	print "<a href='".$_SERVER['PHP_SELF']."?delete=$curnode'>Elimina 
questo nodo (ATTENZIONE: verranno rimossi anche TUTTI i sottonodi)<br></a>";
	}
print "<hr>";
print "<b>POSIZIONE</b><br><a 
href='".$_SERVER['PHP_SELF']."?curdir=0'>Inizio</a>$tree<br><hr>";
print "<b>CONTENUTO</b><br>";
$res=mysql_query("select nome, id from nodi where padre=$curnode order 
by nome",$con);
while($riga=mysql_fetch_row($res))
	print "<a 
href='".$_SERVER['PHP_SELF']."?curnode=".$riga[1]."'>".$riga[0]."</a><br>";
?>
-----------------------------
il codice va pesantemente rivisto e irrobustito.
l'ho fatto tra i miei primissimi esperimenti in PHP (4.0.3 o giů di lě)
quindi non avevo le conoscenze di adesso...
ah, cerca di capire BENE il meccanismo di costruzione del path.
la ricordo come la parte piů interessante (nella parte di esempio che ho 
postato).
spero di aver tolto tutte le parti che non servivano allo scopo...
ciao
-- 
punkarruso


Grazie per il codice, se ho qualche problema posso disturbarti ancora sull'
argomento