Hallo,
ich baue mir gerade ein TreeMenu. Die Items kommen aus einer DB-Tabelle.
Das ergibt dann folgende Struktur:
Und so lasse ich mir das Menu ausgeben (Ausgabe der Root-Items sollte reichen, um euch mein Problem zu erklären):
Es werden alle Items als Link dargestellt. Gibt es aber für das Root-Item kein SubItem, soll $row['description'] als Text dargestellt werden und nicht als Link. Ich habe daher die Ausgabe um folgendes erweitert:
Das sollte normalerweise dieses ergeben:
Ausgegeben wird aber nur:
Wieso werden ohne die aufgerufene Funktion isLastItem() alle TopItems dargestellt und mit der Funktion nur das erste TopItem? Was muss ich verändern?
Gruß,
Arndtinho
ich baue mir gerade ein TreeMenu. Die Items kommen aus einer DB-Tabelle.
Code:
id parent_id name level
1 1 1 0
2 2 2 0
3 3 3 0
4 1 1-1 1
5 1 1-2 1
6 2 2-1 1
7 4 1-1-1 2
Code:
+ 1
| |
| + 1-1
| | |
| | + 1-1-1
| |
| + 1-2
|
+ 2
| |
| + 2-1
|
+ 3
PHP:
while( $row = $con->GetRes() ) {
$str .= "<li>";
$str .= "<a href=\"#\">".$row['description']."</a>";
$str .= "<div id=\"".$row['id']."\" />";
$str .= "</li>";
}
echo '<ul>'.$str.'</ul>';
PHP:
while( $row = $con->GetRes() ) {
$str .= "<li>";
if( isLastItem( $row['id'], $con ) ) {
$str .= "<a href=\"#\">".$row['description']."</a>";
$str .= "<div id=\"".$row['id']."\" />";
}
else {
$str .= $row['description'];
}
$str .= "</li>";
}
echo '<ul>'.$str.'</ul>';
/**************************/
function isLastItem( $id, $con ) {
$i = 0;
$sql = "SELECT * FROM `menu_new` WHERE `parent_id` = ".$id;
$con->DoSql( $sql );
while( $row = $con->GetRes() ) {
$i++;
}
if( $i > 0 )
return true;
else
return false;
}
Code:
Item 1 -> als Link
Item 2 -> als Link
Item 3 -> als Text
Code:
Item 1 -> als Link
Gruß,
Arndtinho