Inhalt eines divs abhängig von einer variable bestimmen
garlandt
- php
0 Tom1 Vinzenz Mai0 ChrisB
Hallo,
ich habe ein etwas kompliziertes Problem wie es scheint und komme einfach nicht weiter. Ich hoffe, dass ich hier einen Rat bekomme wie ich mein Problem lösen kann.
Zunächst möchte ich erklären was ich realisieren möchte.
Ich möchte, dass der Inhalt eines divs abhängig von einer Variable ermittelt wird.
Am ende soll der User die Möglichkeit haben über "vor"- und "zurück"-Links in den einzelnen "Seiten" zu blättern. Ähnlich wie bei den Suchergebnisseiten von Google. Ich möchte dazu kein JavaScript verwenden.
Die dafür eingesetzten php-Scripte sollen zudem unabhängig von der Datei, in der sie eingebunden sind, funktionieren.
Mein erster Ansatz war folgender:
In der URL wird eine Variable deklariert die page heißt. Die url würde dann so aussehen: www.example.com/index.php'?page=1
Neben numerischen werten für page sollen auch Strings möglich sein.
Nun habe ich ein script content.php erstellt und via include an die entsprechende stelle der seite eingebunden. Es ermittelt zuerst den Namen der Datei und den wert von page.
Anschließend ruft content.php eine php-datei abhängig vom ermittelten Dateinamen auf (dadurch ist es Datei-unabhängig). Hier zum Beispiel index_content.php.
index_content.php enthält ein switch-case. Jedes case ist ein möglicher wert der variable page. Mittels dieser wird nun das case ermittelt das den Inhalt der aktuellen Seite hat.
Diese Lösung funktioniert, solange wie page einen zulässigen wert hat. Hat page keinen zulässigen wert, oder ist page in der URL nicht vorhanden werden Fehler ausgegeben. Und an dieser stelle stecke ich mit meinem Lösungsansatz fest. Es ist mir nicht möglich gewesen diese Fehlerquellen in den Scripten so zu berücksichtigen, dass es zu keiner Fehlermeldung kommt.
Ich hoffe jemand von euch kann mir weiterhelfen. Wenn jemand eine bessere Idee zur Umsetzung hat wäre ich auch sehr dankbar.
Gruß
garlandt
Hello,
index_content.php enthält ein switch-case. Jedes case ist ein möglicher wert der variable page. Mittels dieser wird nun das case ermittelt das den Inhalt der aktuellen Seite hat.
Wenn Du schon so weit bist in Deinen Überlegungen, dann würde ich die Inhalte für die übermittelten Parameter von 'page' aber auch in einer Datenbank ablegen. Wenn ein Pendant gefunden wird für den Parameter, kann der Inhalt geholt und angezeigt werden, sonst gibt's eben Standardtext oder auf die Schnauze ;-))
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
index_content.php enthält ein switch-case. Jedes case ist ein möglicher wert der variable page. Mittels dieser wird nun das case ermittelt das den Inhalt der aktuellen Seite hat.
Wenn Du schon so weit bist in Deinen Überlegungen, dann würde ich die Inhalte für die übermittelten Parameter von 'page' aber auch in einer Datenbank ablegen. Wenn ein Pendant gefunden wird für den Parameter, kann der Inhalt geholt und angezeigt werden, sonst gibt's eben Standardtext oder auf die Schnauze ;-))
Ich bin leider gerade erst dabei mich in php Reinzuarbeiten. Von Datenbanken habe ich noch keine Ahnung. Kommt aber noch ^^.
es gibt isset(), empty() und switch kennt neben case auch default.
default kenn ich. Ich habe mir auch eine Lösung dafür überlegt.
Ich würde den Anwender gerne wenn page nicht gesetzt ist oder keinen zulässigen wert hat, auf das erste mögliche case weiterleiten. Das Problem das ich dabei hatte war, dass ich:
1. Nicht weiß wie ich eine Variable dahingehend prüfen soll ob sie vorhanden ist. isset wäre dafür eine Möglichkeit denke ich.
2. Weiß ich nicht wie ich den user mittels php auf eine url weiterleiten kann die dann den ersten case-wert für page hat.
Header("Location... )geht leider nicht.
- Nicht weiß wie ich eine Variable dahingehend prüfen soll ob sie vorhanden ist. isset wäre dafür eine Möglichkeit denke ich.
- Weiß ich nicht wie ich den user mittels php auf eine url weiterleiten kann die dann den ersten case-wert für page hat.
if(!isset($page)) $page = "case 1";
So setzt du bei der Nichtexistenz der Variable einen von dir gewünschten Wert und kannst ihn bei per switch dann verwerten. Hierbei wird natürlich nicht berücksichtigt, dass die Variable nicht nur nicht vorhanden sein kann, sondern einen falschen Wert enthalten kann.
Grüße Marco
if(!isset($page)) $page = "case 1";
>
> So setzt du bei der Nichtexistenz der Variable einen von dir gewünschten Wert und kannst ihn bei per switch dann verwerten. Hierbei wird natürlich nicht berücksichtigt, dass die Variable nicht nur nicht vorhanden sein kann, sondern einen falschen Wert enthalten kann.
Hierbei ist das Problem allerdings das ich herausfinden muss welcher Wert der erste zulässige von switch-case ist. Klar könnte ich alle Seiten so realisieren das 1 immer der erste zulässige Wert ist. Aber das möchte ich nicht.
Wenn es eine Möglichkeit gäbe den ersten zulässigen Wert von switch-case auszulesen könnte ich ein nicht vorhandenes page mit diesem wert erzeugen.
Kennt jemand von euch so eine Möglichkeit?
Ich habe eine Lösung mittels einer php-Datei erstellt, die ein Array mit allen zulässigen werten für page zurück gibt. Über in\_array($page, $options) kann ich nun prüfen ob page gesetzt ist, und wenn ja ob es einen zulässigen wert hat. Ich finde es allerdings sehr umständlich für jede Seite die page verwendet extra ein php-Script zu erstellen das ein Array mit den zulässigen werten enthält. Das ist ein ziemlich hoher Wartungsaufwand.
Gibt es eine Möglichkeit die zulässigen case werte als Array zurückzugeben?
Gruß
Garlandt
Hi,
Wenn es eine Möglichkeit gäbe den ersten zulässigen Wert von switch-case auszulesen könnte ich ein nicht vorhandenes page mit diesem wert erzeugen.
Kennt jemand von euch so eine Möglichkeit?
Das ist theoretisch sicher möglich, aber alles andere als schön.
Gibt es eine Möglichkeit die zulässigen case werte als Array zurückzugeben?
Das sollte gleich andersherum realisiert werden:
Die zulässigen Werte liegen in einem Array - das kann dann durchlaufen/durchsucht werden, und der übergebene Wert mit den darin enthaltenen verglichen werden. Wenn kein Treffer - dann kannst du dir den ersten Wert aus dem Array problemlos ermitteln.
switch entfällt dann komplett. Ist sowieso weniger sinnvoll, wenn an verschiedenen Stellen unterschiedliche und ggf. sogar veränderbare Daten fest in dieses Sprachkonstrukt reingehackt wären. Ein Array, welches diese Daten enthält, ist die sinnvollere Variante.
MfG ChrisB
Hallo,
index_content.php enthält ein switch-case. Jedes case ist ein möglicher wert der variable page. Mittels dieser wird nun das case ermittelt das den Inhalt der aktuellen Seite hat.
Diese Lösung funktioniert, solange wie page einen zulässigen wert hat. Hat page keinen zulässigen wert, oder ist page in der URL nicht vorhanden werden Fehler ausgegeben.
es gibt isset(), empty() und switch kennt neben case auch default.
Freundliche Grüße
Vinzenz
Hi,
Diese Lösung funktioniert, solange wie page einen zulässigen wert hat. Hat page keinen zulässigen wert, oder ist page in der URL nicht vorhanden werden Fehler ausgegeben. Und an dieser stelle stecke ich mit meinem Lösungsansatz fest. Es ist mir nicht möglich gewesen diese Fehlerquellen in den Scripten so zu berücksichtigen, dass es zu keiner Fehlermeldung kommt.
Warum nicht?
Wenn du schon eine Definition für einen „zulässigen Wert“ hast, dann kannst du den übergebenen Wert auch dagegen prüfen.
Ergibt diese Prüfung falsch, oder ist kein Wert übergeben worden - dann machst du das, was du im Erfolgsfalle machen würdest, halt einfach nicht, und gibst eine entsprechende eigene (Fehler-)Meldung aus; oder nutzt dann einen Defaultwert.
MfG ChrisB