Verschachtelten Query-String verarbeiten
Enrico
- php
Hallo,
Ich verarbeitete anzuzeigende Seiten über den Query_String.
Hierbei gibt es zwei Möglichkeiten:
Wurde ein Menüpunkt aus der Registerreiter-Navigation angeklickt, dann beinhaltet der Query-String nur die Nummer des anzuzeigenden Registers, die zugehörige Seite wird durch ein Array bestimmt, das die Seiten enthält, die zusammen mit dem jeweiligen Register angezeigt wird. Die dem Register zugehörige Seite wird dann über die übergebene Nummer festgelegt.
Wie stelle ich es an, dass ich eine Seitenaufruf mit Parameter innerhalb des Querystrings richtig verarbeiten kann ?
Hier zunächst mal der Code zur Auswertung des Query-Strings:
(enthalten in Datei "PHP_Layout_Seitenaufbau.php")
parse_str ($_SERVER ['QUERY_STRING'], $Query_String);
if (count ($Query_String) != "")
{
$Nr = $Query_String ['Nr'];
if ($Query_String ['Seite'] == "")
{
$Array_Seiten = array ("...", "...", ..., "...");
$Seite = $Array_Seiten [$Nr];
}
else
$Seite = $Query_String ['Seite'];
}
else
{
$Nr = 0;
$Seite = "PHP_Neuigkeiten.php";
}
Beim ersten Aufrufen der Seite ist der Query-String natürlich noch leer, deshalb wird die Variable $Nr mit 0 und die Variable $Seite mit der Startseite belegt.
Bei weiteren Aufrufen wird die Variable $Nr aus dem Register übergeben und die Seite $Array_Seiten [$Nr] als anzuzeigende Seite festgelegt.
Problem ist nun unser Gästebuch, da ich hier alle Funktionen innerhalb einer Datei abrufe und der Aufruf, beispielsweise beim Blättern, folgendermassen aussieht:
PHP_Layout_Seitenaufbau.php?Nr=3&Seite=PHP_Gaestebuch.php?Seite=2
Das heisst, dass ich zwei Aufrufe in einem Query-String zusammenfassen muss:
Wie muss ich mein Vorhaben umsetzen, damit alles richtig funktioniert ?
Danke im voraus.
Gruss, Enrico
Hi,
Wie stelle ich es an, dass ich eine Seitenaufruf mit Parameter innerhalb des Querystrings richtig verarbeiten kann ?
Genau wie jetzt auch:
Aus
PHP_Layout_Seitenaufbau.php?Nr=3&Seite=PHP_Gaestebuch.php?Seite=2
wird im erstem Schritt
Nr = 3
Seite = PHP_Gaestebuch.php?Seite=2
Entweder übergibst Du diesen String nochmal dem HTTP-Server, was allerdings etwas umständlich wäre, oder Du verarbeitest das direkt in PHP_Gaestebuch.php.
$Seite = $Query_String ['Seite'];
Ich hoffe Du überprüfst später noch, das kein Unsinn in $Seite steht?
Problem ist nun unser Gästebuch, da ich hier alle Funktionen innerhalb einer Datei abrufe und der Aufruf, beispielsweise beim Blättern, folgendermassen aussieht:
PHP_Layout_Seitenaufbau.php?Nr=3&Seite=PHP_Gaestebuch.php?Seite=2
Dritte Möglichkeit: Du änderst diesen Link und übergibst PHP_Gaestebuch.php alle nötigen Details direkt. Erfordert zwar etwas Codeduplikation, aber auch nur per include(), also nicht wirklich.
Das heisst, dass ich zwei Aufrufe in einem Query-String zusammenfassen muss:
Nein, heißt es nicht. Lasse ab von unnötigen Zwängen, hinterfrage sie zumindest, das hilft in vielen Fällen so auch hier.
Oder auf englisch:
"Keep it simple, Dude!"
so short
Christoph Zurnieden
Hallo Christoph,
Danke für Deine Tips, konnte den Fall mittlerweile auch selber lösen.
Wie Du schon geschrieben hast, habe ich ja alles in einem String und damit war die Lösung auch schon vorgegeben:
Nach allen Bestandteilen fragen und entsprechend auswerten.
Thx, Enrico