Variable "zwischenspeichern"

msycho

Erfahrenes Mitglied
Hallo,

ich möchte Euch kurz den Sachverhalt beschreiben. In meinem Script rufe ich Daten aus einer Datenbank ab, welche letztlich ausgegeben werden. Gleichzeitig kann man die Abfrage selektieren und die Ausgabe exportieren. Dafür sind unteranderem zwei Formulare zuständig.
Ich wollte jetzt noch ein drittes Formular anbringen. Da sich dieses Formular jedoch mit den anderen beiden verschachteln würde und das bei unteranderem<form>-tags nicht zulässig ist, versuche ich eine andere Möglichkeit, die auch funktioniert - zum Teil.

Mehr am unteren Teil des Script bzw. im zweiten Formular habe ich ein weiteres input-Feld mit einem Submit-Button angebracht. Logischerweise unterscheiden sich beide durch Namen von den anderen input-Feldern bzw. dem anderen Submit-Button.

PHP:
echo "<input class=\"eingabe\" size=\"2\" type=\"text\" name=\"rowsPerPage\" value=\"". $zeilenProSeite ."\">&nbsp;<input class=\"button1\" type=\"submit\" name=\"send_rpp\" value=\"Start\">";

Nebenbei sei gesagt, dass die Variable "$zeilenProSeite" für die Seitenaufteilung der Ausgabe von Nöten ist.

Die Variable "$zeilenProSeite" wird dann so definiert:

PHP:
if ( isset($_POST['send_rpp']) )
{
$zeilenProSeite = $_POST['rowsPerPage'];
}
else $zeilenProSeite = 5;

Also wenn der dafür verantwortliche Button gedrückt wird, wird der Wert in dem dafür verantwortlichen input-Feld übernommen und somit wird die Variable definiert. Ist dem nicht so, wird ein fest definierter Wert verwendet.

Das klappt vollkommen.

Jetzt ist es aber so, dass wenn ich auf die nächste Seite springe, der fest definierte Wert genommen wird und nicht der Wert, den ich in das input-Feld eingetragen habe, wenn ich die erste Seite verlasse.
Dazu ein Beispiel zur Verständlichkeit:
Ich bin auf Seite 1 und habe 20 Zeilen pro Seite gewählt, springe ich zur nächsten Seite, werden nur 5 Zeilen pro Seite angezeigt, also es wird der fest definierte Wert genommen.

Nun, wie ist es möglich, dass, in dem Beispiel, weiterhin 20 Zeilen pro Seiten angezeigt werden, auch wenn ich weiterblättere, bitte?
Ich dachte da an ein eventuelles Zwischenspeichern. Könnt Ihr mir weiterhelfen?
 
msycho hat gesagt.:
wenn ich auf die nächste Seite springe,
Wie machst du das? Wie übergibst du der nächsten Seite, dass du bei der vorherigen 20 statt 5 hast? Weiß das die neue Seite überhaupt? Möglich wäre, wenn du die Seiten immer über ein und dieselbe Datei anzeigen lässt, dass du eine fest definierte Variable immer gleich belegst, also als Beispiel:
- Du kriegst per $_POST['rowsPerPage'] die Zahl
- Weise sowohl deiner $zeilenProSeite Variable, wie auch eine hidden - Inputfeld mit dem Namen 'rowsPerPage' den Wert $_POST['rowsPerPage'] zu
- Rufst du jetzt die Seite "erneut" auf, aber eben mit deiner 2. Seite (dann wohl auch mit 'send_rpp' ?), dann ist der Wert 'rowsPerPage' automatisch definiert und wird gesetzt

D.h. was du jetzt prüfen solltest:
- Kommst du bei der zweiten Seite überhaupt in die if (isset($_POST['send_rpp'])) -> per echo "HALLO" oder so überprüfen
- Wenn ja, ist $_POST['rowsPerPage'] überhaupt gesetzt
- Wenn ja, auf was?

Rock on!
 
Naja, entweder du speicherst das in einem Cookie oder in einer Session, oder du sorgst dafür, das die Variable immer weitergetragen wird über die URL oder eben über ein hidden-Field und $_POST
 
Ich habe es zwischenzeitlich hinbekommen. Ich danke Euch trotzdem für Eure Hilfe!

Ich habe erst einmal die Links um &zps='. $zeilenProSeite .' erweitert:

PHP:
echo '&nbsp;<a href="bla.php?seite=' . ($seite + 1) .'&zps='. $zeilenProSeite .'">Weiter &gt;&gt;</a>';

Danach einfach mit if-Schleifen etc. gearbeitet:

PHP:
if ( !isset($_POST['send_rpp']) )
{
	$zeilenProSeite = $_GET['zps'];
}

if ( $zeilenProSeite != null || isset($_POST['send_rpp']))
{
    if ( isset($_POST['send_rpp']) )
    {
    	$zeilenProSeite = $_POST['rowsPerPage'];
    }

    if ( isset($_POST['send_rpp']) && $zeilenProSeite == NULL )
    {
   	$zeilenProSeite = 5;
    }
}
else
{
	$zeilenProSeite = 5;
}

Das war es im Groben und Ganzen.
Nun wird der Wert für die var zeilenProSeite übernommen bei einem Seitenwechsel - egal ob vor oder zurück.
 
Zurück