datensaetze tabellarisch ausgeben, darunter navigation vor/zurueck
am 29.09.2004 00:48:59 von Michael RittwegerHallo, allerseits!
Ich hab mir hier was gebastelt, was zwar auch funktioniert, bei dem ich aber
irgendwie das Gefühl habe, daß es eleganter gehen könnte.
Ablauf:
a) "suche_schnell.php" (Ja, es wird auch noch ein "suche_detail.php" geben)
besteht aus einem Formular mit 6 Feldern (1 ComboBox, 4 Checkboxen und 1
Textfeld). Mit "Abschicken" wird "suche_ergebnis.php" aufgerufen.
b) "suche_ergebnis.php" nimmt die 6 Parameter entgegen, bastelt einen
SQL-String mit WHERE-Klausel draus und stellt $count Datensätze ab $index
dar. $count wird, wenn 0, auf 5 gesetzt und $index ist beim ersten Aufruf
eben 0, also Anfang der Datensätze, und wird dann mit +/- $count bearbeitet
in der Navigation.
c) Unter den $count Datensätzen ist jetzt noch eine Navigation mit "Anfang",
"Zurück", "Vorwärts" und "Ende". Die Links auf diesen Texten zeigen
ebenfalls wieder auf "suche_ergebnis.php", nur daß eben neue Parameter für
$index und $count mit übergeben werden.
Nun ist es so, daß ich in "suche_ergebnis.php" ja der Reihe nach alle
_möglichen_ Parameter (bg, sg1, sg2, sg3, sg4 und sp) überprüfen muß, um
daraus ein WHERE basteln zu können. Das WHERE könnte z.Z. max. aussehen:
"((bg='m') AND (sg1='1' OR sg2='1' OR sg3='1' OR sg4='1') AND (sp LIKE
'24*'))
Bei der Gelegenheit werden die _gesetzten_ Parameter "gemerkt" und in
$argumente gespeichert. Dort könnte also z.B. "bg=m&sg2=1&sp=24" stehen.
$argumente ist danach also eigentlich das, was hinter ? in der URL mit
übergeben wurde, allerdings _ohne_ die Werte für $index und $count.
Klickt man jetzt auf z.B. "Weiter", dann wird erneut "suche_ergebnis.php"
aufgerufen. Hinter ? wird dann $argumente übergeben und zusätzlich z.B.
"ix=15&ds=5".
Und dann beginnt der ganze Spaß wieder von vorne. Also wieder alle Parameter
scannen, WHERE basteln, Navigation berechnen usw.
Bei den 6 Feldern der Schnell-Suche geht das irgendwie ja auch noch. Die
Parameter hinter der URL werden nicht allzu lang/viele und die Berechnung
des WHERE anhand der Parameter geht auch recht flott. Aber: Die Detail-Suche
wird eine ganze Menge an ComboBoxen und Checkboxen mehr haben. Die Tabelle
besteht aus knapp 100 Spalten, wovon die meisten CHAR(1)-Felder sind, die
für ja/nein-Speicherung diverser Attribute sind, nach denen eben später
wieder gesucht werden soll.
Nun frage ich mich, ob man das Scannen der Parameter und Basteln des WHERE
nicht irgendwie (ab der 2. Seite) überspringen und auf ein vorgefertigtes
Ergebnis zurückgreifen kann. Dabei würde ich nur höchst ungern den
SQL-String als GET-Parameter übergeben. Wenn es eine andere Möglichkeit
gibt, wäre das schon prima.
Könnte ich z.B. ein POST abschicken und den SQL-String in einem versteckten
Formularfeld übergeben? Aber ich bräuchte dann ja 4 Submit-Buttons. Oder
gibt's andere, bessere Möglichkeiten?
Gruß, Michael