Hallo zusammen,
Einige kennen vielleicht schon mein [URL=http://www.homepage-forum.de/showthread.php?t=33489]Navigationsscript[URL].
Dieses Script liest alle Seiten aus einer Datenbank aus und gibt sie dann aus. Es gibt eine oberste ebene, eine zweite ebene usw. Name ist logischerweise der Name der Seite, id die id der seite, top id ist die id der übergeordneten seite und history ist die ebene auf der sich die Seite befindet (1 = zuoberst, 2 = zweitoberst usw.).
Die Datenbankstruktur sieht in etwa so aus:
Mein Script sieht so aus(die Kommentare dürften alles erklären):
(Das Script steht unter folgender Lizenz: http://creativecommons.org/licenses/...eiz%20Lizenz/)
Nun habe ich aber ein Problem. Dieses liegt bei den if abfragen die checken ob die Seite denn auch eine unterseite der aktuellen Seite ist. Ich möchte gerne alle vorherigen Seiten ausgeben + eine ebene vorwärts(also so etwas wie eine "Du bist hier: " anzeige). Darum überpfüe ich ob der Wert kleiner oder gleich die aktuelle ID der aktuellen seite ist. Da es aber auch Seiten gibt die eine höhere ID als die aktuelle haben, aber in der ebene weiter oben wären, werden diese nicht angezeigt(bei meiner beispieldatenbank das Item "Top").
Ich bin sehr ratlos. Hat jemand eine Idee wie man das lösen könnte?
Ich währe ab jeder Antwort extrem Dankbar!!!
MFG
[ASTERIX]
Einige kennen vielleicht schon mein [URL=http://www.homepage-forum.de/showthread.php?t=33489]Navigationsscript[URL].
Dieses Script liest alle Seiten aus einer Datenbank aus und gibt sie dann aus. Es gibt eine oberste ebene, eine zweite ebene usw. Name ist logischerweise der Name der Seite, id die id der seite, top id ist die id der übergeordneten seite und history ist die ebene auf der sich die Seite befindet (1 = zuoberst, 2 = zweitoberst usw.).
Die Datenbankstruktur sieht in etwa so aus:
Code:
Name || ID || top_id || history(ebene) ================================= Startseite || 1 || -1 || 1 Sub1 || 2 || 1 || 2 Sub1A || 3 || 2 || 3 Sub1A 2 || 4 || 2 || 3 Top || 5 || -1 || 1
(Das Script steht unter folgender Lizenz: http://creativecommons.org/licenses/...eiz%20Lizenz/)
PHP-Code:
<div class="navigation">
<ul class="navigationitems">
<?php
$naviqd = 'SELECT * FROM `blophoweso_navi` ORDER BY `history`'; /* Verbindung */
$naviquery = mysql_query($naviqd); /* Query */
$tago = 0; /* Wiviele Tags sind geöffnet(...und müssen anschliessend wieder geschlossen werden). */
while($navi = mysql_fetch_object($naviquery)) {
if($navi->history == 1) { /* Erste ebene ganz normal ausgeben. */
echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>';
} else {
if(isset($oldhis)) { /* Wenn eine Variable mit der angabe über die Ebene des vorherigen durchlaufs existiert. */
if(($navi->history <= $oldhis)) { /* Wenn die Ebene immer noch die selbe ist. */
if(($navi->top_id <= $api) OR ($navi->id == $api)) { /* PROBLEMSTELLE: Wenn die top id/die id der Seite kleiner oder gleich die aktuelle Seite ist. */
echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>'; /* Ja: ausgabe auf der selben ebene. */
}
} else { /* Das ganze entspricht nicht mehr der aktuellen ebene. */
if(($navi->top_id <= $api) OR ($navi->top_id == $api)) {
$tago++; /* Ein Tag mehr muss geöffnet werden(neue ebene). */
$oldhis++; /* Der Ebenenwert wird hochgeschraubt.
echo '<li><ul>'; /* Tags ausgeben. */
echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>';
}
}
} else {
if(($navi->top_id <= $api) OR ($navi->id == $api)) {
$tago++; /* Die Variable oldhis existiert nicht(= erster durchlauf). */
$oldhis = $navi->history; /* Variable definieren. */
echo '<li><ul>'; /* Tags ausgeben. */
echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>';
}
}
}
$ownid++;
}
if(isset($oldhis)) {
$i = 1;
while($i <= $tago) { /* Tags wieder schliessen. */
echo '</ul></li>';
$i++;
}
}
?>
</ul>
</div>
Ich bin sehr ratlos. Hat jemand eine Idee wie man das lösen könnte?
Ich währe ab jeder Antwort extrem Dankbar!!!
MFG
[ASTERIX]
Kommentar