Abend.
Ich habe versucht, eine flexible Navigation zu entwickeln. Ich nenne dieses Mini-Projekt "NaviFlex".
Ich versuche einmal, das Prinzip zu erklären:
1. Die Datei naviflex.nav sieht so aus:
0|Programmieren|prog.html|1
0|GNU/Linux|linux/index.html|2
1|Entstehungsgeschichte|linux/gesch.html|2
1|Linus Torvalds|linux/linus.html|2
1|Tux|linux/tux.html|2
1|Linux und Ich|linux/self.html|2
0|Sport|sport.html|3
0|Musik|musik.html|4
0|Schüleraustausch|sat/index.html|5
1|SAT 2004|sat/2004DTL.html|5
1|SAT 2004|sat/2004FRA.html|5
1|Frankreichbesuch 2005|sat/2005FRA.html|5
0|Studienfahrt Paris|paris.html|6
0|Meine Lieblingsseiten|links.html|7
0|Projekte|projekte.html|8
0|Beruf|beruf.html|9
0|Meine Schulzeit|schulzeit.html|10
0|Bilder|bilder/index.html|11
1|GNU/Linux|bilder/linux.html|11
1|Sport|bilder/sporthtml|11
1|Musik|bilder/musik.html|11
1|Frankreich|bilder/sat.html|11
1|Projekte|bilder/proj.html|11
1|I, me and myself|bilder/ich.html|11
Alles, was eine 0 vorne stehen hat, ist ein Überpunkt. Die Unterpunkte haben eine 1 vorne. Man kann diese Zahlen also als Ebenen sehen. Die Zahlen ganz hinten dienen dem Nummerieren.
==============================================================
2. Die Datei naviflex.php sieht so aus:
[code lang=php]
<?php
//Naviflex_Sys v1
//Datei öffnen
$dh=fopen("naviflex.nav","r");
//Inhalt der Datei in Array lesen
$inhalt=file("naviflex.nav");
//Erste zwei Zeilen löschen
array_shift($inhalt);
array_shift($inhalt);
// Array aufteilen in mehrdimensionales Array
for($x=0;$x<count($inhalt);$x++){
$inhalt[$x]=explode("|",$inhalt[$x]);
}
// Kompliziertester Teil: Strings formulieren
$x=0;
echo "<ul>\n";
// Anzahl der Überpunkte holen
$faktor1=file_get_contents("naviflex.nav");
$faktor2=(strlen(file_get_contents("naviflex.nav")))-2;
$lasttwo=substr($faktor1, $faktor2);
for($x;$x<=$lasttwo;$x++){
if($inhalt[$x][0]==0){
$sup_menu="<li><a href="?h=".$inhalt[$x][2]."&ak=".$inhalt[$x][3]."">".$inhalt[$x][1]."</a></li>\n";
echo $sup_menu;
}
if($inhalt[$x][0]==1 && $inhalt[$x][3]==$ak){
$sub_menu="<li style="margin-left:5%;"><a href="?h=".$inhalt[$x][2]."">".$inhalt[$x][1]."</a></li>\n";
echo $sub_menu;
}
}
echo "</ul>";
fclose($dh);
?>
Wie ihr seht, werden nur die Punkte bis "Schüleraustausch" widergegeben. Was ich aber vorhabe (und was ihr sicherlich schon bemerkt habt) ist, eine Navigation aufzubauen, bei dem beim Klick auf den Überpunkt die Unterpunkte ohne JS, aber mit PHP, eingeblendet werden.
Was für einen Fehler habe ich übersehen? Ist bestimmt etwas ganz banales, nur ich komme nicht drauf.
Und kann ich das mit der Nummerierung in der Datei naviflex.nav irgendwie umgehen? Weil ich müsste ja dann alle Nummern neu schreiben, wenn ich einen neuen Punkt in der Mitte dazunehmen möchte.
Danke
euer Bundesinnenminister chilly