01.04.2007
Was Kapitelnummern mit Array_slice() zu tun haben
Bei manchen Problemstellungen ist es recht nervend, wenn man nicht dran bleiben kann. Das Menüsystem ist ein solches. Aber Endlich kommt Teil III zum fehlenden Puzzle, damit aus einer Liste mit vorangestellten Leerschritten ein in Ebenen unterteilte geordnete oder ungeordnete Liste wird. Letzter Stand dieser offenen Baustelle war eine Kapitelnummer:
2.3.1.1
Dass hier ein Array im Spiel ist, ist mehr als offensichtlich. Doch wie wird man die Array-Elemente los, wenn einer neuen Seite auf einem bestehenden Kapitel weiter geht? Wenn es nur um ein weiteres Unterkapitel eine Ebene tiefer geht, gäbe es hier die Funktion array_pop(), doch wenn man 2, 3 oder 4 Ebenen zurückspringt, dann braucht es etwas gezielteres als ein array_pop() oder man sehr schnell eine gordischen Knoten im Hirn und keinen Alexander nirgendwo. Die Funktion, die hier weiter hilft, ist array_slice()
In Teil I wurde definiert, ob eine Seite im Menü angezeigt werden soll oder nicht. Wenn Sie angezeigt wird, dann weiß man über die Zahl der Leerschritte, auf welcher Ebene sich diese Seite befindet. Jede Ebene hat seine bestimmte Position im Array. Kommt ein Array-Element dazu, beginnt dieses Element grundsätzlich bei 1. Bleibt die Zahl der Elemente also die Zahl der Leerschritte gleich oder hat sie sich verringer wird der aktuellen Ebene also dem letzten Wert des Array Eins addiert.
Ein Kapitel zu zählen beginnt also mit diesem Befehl: array_push($actuellLevelKapArr, $KapPageCount) und das Kapitel eine oder mehrere ebenen zurückliegend wird wie folgt verkürzt: array_slice($actuellLevelKapArr, 0, $nbspCountactLevel). Nachdem das Array auf die korrekte Zahl reduziert wurde, wird dem letzten Element des Arrays noch eine Eins addiert. Die Variable, die Ebene und Referenz in einem Array abspeichert sähe, wenn jemand auf der zweÃten Ebene man auf die nächste Seite klickt, dann z.B so aus:
2.4
Nach all den Überlegungen, kommt nun der große Moment. Nun muss das Skript geschrieben und getestet werden. Toitoitoi
Wie baut man eine Navigation?
Welche Teile bisher existieren:
- 16.3.2007 — Programmplanung Editland-Menü
- 17.3.2007 — Der Linkbaum der Navigation in Editland
- 1.4.2007 — Was Kapitelnummern mit Array_slice() zu tun haben
- 4.4.2007 — Editland-Navigation mit doSimple Flyout verheiratet
- 8.4.2007 — PHP-Arger mit Array_slice
Filed under: Programmierung, Projektplanung
4 Comments
April 1st, 2007 at 21:59
Nicht ganz uneigennützig sage ich auch Toitoitoi
Und das dann noch mit EMI zu verheiraten, wäre perfekt. Nein, sonst habe ich keine Wünsche mehr… vorläufig wenigstens…
April 1st, 2007 at 22:15
EMI? EMI öh. Ich weiß nun nicht, wie Du das meinst, aber eine Variable ergänzt, die angibt, wo im Baum ein Unterordner abzweigt, sollte bei dieser Vorgehensweise kein soooo großes Problem sein, aber noch muss ich überhaupt erst den Teil mit dem Programm hinbekommen. Ich bin noch viele Fehlermeldungen und Try&Errors davon entfernt. Nur weil ich weiß, dass das so funktionieren muss, heißt das leider noch nicht, dass ich die Syntax und die Reihenfolge im Griff habe.
April 1st, 2007 at 22:41
Ich sag’s ja, das ist ein komplizierteres Problem, als man auf den ersten Blick denkt. Also, mir würde davor grauen, mich da durchzukämpfen, das gäbe wahrscheinlich ziemlich Kopfweh.
Ja, EMI meinte ich so ähnlich, mit mehreren parallelen (nebeneinanderliegenden und darin wieder untereinanderliegenden) Editland-Installationen. Hui, da kommt noch was auf mich zu
Naja, wenn es erst mal funktioniert, sollte zumindest die Menugeschichte dann nicht mehr wirklich ein Problem sein.
April 2nd, 2007 at 00:19
So kompliziert dann auch wieder nicht. Man lässt sich nur leicht verwirren. Ging mir gerade auch so, als ich den Anfangspunkt suchte und scheinbar in ein Henne-Ei-Problem geriet.
Doch alles Fängt mit dem ersten Link an. Hier ist stets die Ebene 0 oder auch 1. Ebene.
$actLevel = 0; // sollte NULL = 0 = ” Probleme bereiten define 1
$display = $nbspCount == 0 ? "visible" : "hidden";Danach ist es ein Sache des Mitführen der Werte und das Abfrage der Bedingungen und brav mitführen des Arrays. Ist der Array soweit durch sortiert, kann man mit deutlich einfacheren Fragen am Ende das Menü schreiben.
Es hat viel mit einfachem Algebra aus der Mittelstufe zu tun. Was weiß ich, was kann passieren, hier kann es nur ein Plus und ein Minus geben. Das macht die Sache noch einfacher, denn man muss nicht mit Multiplikation, Division in Kombination mit Addition und Subtraktion zu kämpfen, die Zahlen sind immer ganze Werte und in der Regel ist es ein +1 oder +2 und ein -x in Relation zu einem y.
Y ist das zuletzt angezeigte und registrierte Level. Entsprechend der Differenz bleibt alles wie es ist, oder werden ein oder mehrere Listen geschlossen.
Piece o’ cake. *heul* :harr: