Array speichern durch erneute Übergabe?

Hallo,

eine Datenbankabfrage in index.php liefert ein Ergebnis anhand von:
$Result = mysql_query("SELECT EMail FROM tabelle WHERE Email LIKE ‚%$Email%‘ AND Name LIKE ‚%$Name%‘…
wobei $Email u. $Name von einem HTML-Formular übergeben wurden. Bei erneutem Aufruf der gesamten Seite wird $Result neu berechnet, allerdings wurden die Variablen $Email und $Name nicht gespeichert, sodaß alle Datensätze angezeigt werden.

Eine Lösung ist sicherlich, die Variablen bei erneutem Aufruf der Seite zu übergeben (index.php?email=tzt&name=…). Nun möchte ich aber die Auswahlkriterien (WHERE) um weitere Parameter, die über ein HTML-Formular abgefragt werden, ausbauen. Daher würde ich alle Variablen gerne in einem Array speichern, das sich allerdings nicht bei erneutem Aufruf von index.php übergeben lässt (index.php?array=$array…), zumindest nach meinem Kenntnisstand.

Gibt es eine Möglichkeit, dieses Array zwischenzuspeichern, sodaß bei erneutem Aufruf der Seite der Inhalt des Array zur Verfügung steht oder gibt es eventuell doch eine Möglichkeit derart: index.php?array=array?

Danke&Gruß
Ulf

Hallo,

eine Datenbankabfrage in index.php liefert ein Ergebnis anhand
von:
$Result = mysql_query("SELECT EMail FROM tabelle WHERE Email
LIKE ‚%$Email%‘ AND Name LIKE ‚%$Name%‘…
wobei $Email u. $Name von einem HTML-Formular übergeben
wurden. Bei erneutem Aufruf der gesamten Seite wird $Result
neu berechnet, allerdings wurden die Variablen $Email und
$Name nicht gespeichert, sodaß alle Datensätze angezeigt
werden.

nimm bitte in Zukunft nur Variablen und Datenbankspalten mit kleinbuchstaben. Ich verweise mal auf Dein Query. Einmal EMail, das anderemal Email. mysql ist da vielleicht grosszügig - php aber nicht.

Eine Lösung ist sicherlich, die Variablen bei erneutem Aufruf
der Seite zu übergeben (index.php?email=tzt&name=…). Nun
möchte ich aber die Auswahlkriterien (WHERE) um weitere
Parameter, die über ein HTML-Formular abgefragt werden,
ausbauen. Daher würde ich alle Variablen gerne in einem Array
speichern, das sich allerdings nicht bei erneutem Aufruf von
index.php übergeben lässt (index.php?array=$array…),
zumindest nach meinem Kenntnisstand.

das ist auch mein Kenntnisstand. Hab das aber auch noch nie weiter recherchiert bzw gebraucht. Wenn ich die Variablen brauche stehen mir mehrere Möglichkeiten zur Verfügung…
Die erste: In Session-Variablen speichern falls der Server das zulässt (Nachteil: Abhängigkeit vom Server)
Die zweite: In Cookies speichern, falls der Client das zulässt (Nachteil: Abhängigkeit vom Client, nicht beliebige Mengen nutzbar)
Die dritte: Die Ergebnisse in eine Datei oder in einer Datenbank zwischenspeichern (Nachteil: Datenbank oder Datei muss angelegt/definiert werden und erlaubt dann evtl nicht alle möglichen Eingabeformate oder wandelt Eingaben um (zum Beispiel ))
Die vierte: Die Variablen erneut übergeben. (Nachteil: Muss an alle relevanten Links angehängt werden, erlaubt auch nicht unbegrenzte Übergaben (wenn GET verwendet wird))

Die letzte ist vom Code her vmtl die schwierigste, aber vmtl trotzdem die beste…
Ein Beispiel aus einem meiner Scripte dazu:

$sorter = "$PHP\_SELF?layout=print";
 if (count($\_POST)\>0) while (list($key,$val)=each($\_POST)) 
 {
 if ($key != "layout") $sorter .= "&$key=$val";
 }
 else while (list($key,$val)=each($\_GET)) 
 {
 if ($key != "layout") $sorter .= "&$key=$val";
 }

damit erstelle ich einen String den ich einfach an meinen Link dranhänge und an dem ich nur die Variable layout=print hinzufüge…

HTH
Munich

Hallo,

meiner Meinung nach kommst du bei zu vielen Suchparametern nicht um eine Datenbankspeicherung drumrum. Das kann so aussehen, dass du die gesamte Array in einem Datenbankfeld speicherst, das eine eindeutige ID hat und diese ID kannst du dann ständig übergeben.

Es wäre auch denkbar, die gesamte Array in ein codierten string zu schreiben, bspw.

?s=na_Hans,em_der_at_der.de…

das heisst dann: name=Hans und email=[email protected] … dann ist es relativ einfach, dies zu übergeben. Du musst dann aber unbedingt mittels post das ganze übergeben, da dir so ein string schnell über die erlaubte Maximallänge des GETs hinausläuft…

Gruss, Omar Abo-Namous