Breadcrumbs

Ahoi,

beim Großprojekt Kerbi21 gibt es mal wieder ein Problem, welches sich sicherlich lösen lässt, wenn mich jemand hier in die richtige Richtung dreht. Und zwar dreht es sich um folgendes:

Ich habe eine recht große Bahn-Bildergalerie nach dem Pfadschema: Bundesland > Stadt > Linie > Bildermatrix > Detailansicht
Man klickt sich also bspw durch Baden-Württemberg > Stuttgart > U4 > (hier erscheinen die ganzen Bilder als Thumbnails) > Einzelbild in groß

Generell ist das alles kein Problem und funktioniert auch momentan ganz gut. Die Breadcrumbs erstelle ich derzeit aus GET-Parametern. So ist es zwar möglich sich anhand derer durch die letzten Schritte zu navigieren, allerdings kann man natürlich die URL dahingehend manipulieren, dass blödsinnige Konstellation das Ergebnis wären (Bayern > Flensburg > U9). Da ich allerdings nicht alle Links in Formulare umwandeln möchte, um mit POST zu arbeiten. Nun habe ich mir überlegt ob ich die Pfade per Session erstelle. Gibt es ggf. dazu eine sinnvolle Alternative?

Schonmal vielen Dank vorab für jegliche Hinweise.

Gruß,
Kerbi

generiere die breadcrumbs doch aus der datenbank oder ist das für dein projekt nicht möglich??

Hi,

ich kann derzeit nicht differenzieren wo der Nutzer herkommt. Wenn ich bspw. ein Bild einer Linie habe, die 2 Städte verbindet ist nicht reproduzierbar ob der User von Stadt A oder Staadt B kommt… das würde ich aber gerne haben…

Du könntest ja für jeden unteresten Menüpunkt eine Liste vorhalten und überprüfen, wo
drinsteht, welche übergeordneten Menüs sinnvoll sind.

Da z.B. Stuttgart immer in Baden-Württemberg liegen wird und München in Bayern, wird da
bei den allermeisten Einträgen eine eindeutige Zuordnung vorliegen, bei der sich aus der
Stadt eindeutig das Bundesland rekonstruieren läßt. Ausnahme sind da Städte wie ‘Neustadt’,
von denen es viele geben kann. Entweder verzichtet man dann auf eine Rekonstruktion bei
fehlerhafter Angabe oder man wählt zufällig eine Möglichkeit als Ersatz.
Sofern immerhin der letzte Listenpunkt eindeutig ist, kann man ja stattdessen auch einfach
ein Fragezeichen für die mehrdeutigen Lösungen der übergeordneten Menüpunkte angeben.

Bei den Ui, wobei i eine Zahl ist, vermute ich mal, daß es da mehrere Möglichkeiten geben kann.
Auch hier, soweit das Ui eindeutig ist, übergeordnete Menüpunkte aber nicht eindeutig
rekonstruiert werden können, bietet es sich ja an, entweder zufällig ein passendes Ergebnis
zu wählen oder aber ein Fragezeichen oder sowas zu setzen.

Bei mehreren Lösungen könntest du natürlich auch alle Brotkrumen-Kaskaden angeben, die
eine Lösung repräsentieren.

Generell scheint es mir doch auch das Problem des Nutzers zu sein, wenn bei der Manipulation
von GET-Einträgen mal etwas herauskommt, was keinen Sinn ergibt. Insofern würde es ja
auch reichen, nur Fehler im Skript abzufangen und eine Hinweisseite mit Problembeschreibung
auszugeben, um den Nutzer über das Problem zu informieren. So würdest du ja auch eher
selbst eigene Fehler bei der Erstellung von Verweisen erkennen.

Hi,

Auf das Bundesland lässt sich immer schließen. Das ist eindeutig und lässt sich immer rekonstruieren. Generell funktioniert das bei großen Städten und solche, die in sich geschlossen sind ebenfalls problemlos. Nehmen wir als Beispiel allerdings Ballungsräume, so ist das Problem, dass nicht zugeordnet werden kann ob jetzt der User über bspw. Krefeld oder Düsseldorf gelangt ist. Beide Städte sind durch eine Strecke miteinander verbunden. Generell ist bei den Ui jeder Wert, zumindest innerhalb eines Netzes einzigartig - das stellt weniger das Problem dar. Ich dachte nur, dass ich vlt. eine einfache Möglichkeit übersehen habe.
Die Lösung via GET gefällt mir nicht wirklich - daher dachte ich, dass sich das ganze leicht durch was anderes lösen ließe. Ich werde ansonsten nochmal erwägen doch auf POST umzusteigen. Da die Abfrage immer via Schleife läuft wäre die Programmierung nicht das Problem - nur würde der Code halt entsprechend durch haufenweise hidden-Felder ellenlang.

Danke schonmal bis hierher.

Nunja, was macht dein Skript, wenn jemand etwa ‘Hannover’ zu ‘Hangover’ verschlimmbessert?
Es gibt ja zwangsläufig immer Manipulationsmöglichkeiten, die zu keinem Eintrag führen werden.

Mathematisch heißt das, daß einige Abbildungen eben nicht eindeutig sind, zum anderen
handelt es sich teilweise nicht einmal um eine Funktion auf dem möglichen Parameterbereich.

Eine Reduktion auf einen GET-Parameter kann die Prüfung natürlich vereinfachen,
wenn ‘Land,Stadt,Ui’ nicht als möglicher Wert in einer einfachen Liste vorkommt, ist was
schiefgelaufen. Du könntest natürlich auch einfach deine eigene Numerierung einführen
und eben nur u=117 schreiben und dem dann intern was zuordnen, da müßte eben nur
noch geprüft werden, ob u sagen wir mal zwischen 0 und 513 liegt, wenn es entsprechend
viele Möglichkeiten gibt. Intern hast du dann irgendwo eine Liste, zu welcher Zahl welche
Brotkrumenkaskade gehört.

Ähnlich würde es ja bei einer session laufen, da würde dann eben stattdessen eine
session-id als GET-Parameter auftauchen (wenn cookies abgelehnt werden oder die session
generell so eingestellt ist) - und dem wird dann vom server ein Wertesatz zugeordnet.
Nachteil dabei ist nur, daß das dann keine sinnvolle URI mehr ist, die man etwa mit einer
Suchmaschine finden könnte, weil sich die session-id immer ändert. Das ist dann eher
suboptimal.

Okay - dann werde ich wohl nochmal meine Datenbankstruktur überdenken müssen…
Generell würde bei deinem Beispiel ein leeres Ergebnis zurückgeworfen, da keine Stadt “hangover” in der Datenbank auffindbar ist. Vielleicht werde ich einfach meine Parameter vernünftig benennen und mit mod_rewrite arbeiten :slight_smile:

Danke für die Untersütztung.

also mal auf den ersten post bezogen…

ich würde das bei GET lassen. hat folgende gründe: traditionell werden get-parameter für die navigation durch die seite verwendet, nicht post. 2. kannst du verlinken.

  1. lassen sich post-parameter genauso leicht (gut, nicht für otto-normal, aber für so ziemlich jeden anderen :stuck_out_tongue:) manipulierbar.

ob der angegebene zielort sinn macht, darfst du nicht von den get- bzw post-parametern abhängig machen, sondern das is wie bei formularen - sowas muss serverseitig geprüft werden.

gruß