Mailinglisten-Archive |
Hallo Jens Jens Benecke [mailto:jens_(at)_pinguin.conetix.de]On schrieb: > Eine Datenbankabfrage (mittels PHPLIB) spuckt, sagen wir mal, 200 Zeilen > Daten aus. Diese Tabelle soll, neben jeder Zeile eine Checkbox besitzen, > und der Benutzer soll sich Zeilen auswählen dürfen, die dann beim erneuten > "Abschicken" herausgefiltert werden sollen. Dies scheint die Table-Klasse > ja zu können. Soweit, sogut. > > Jetzt kommt der Haken: Ich möchte den Benutzer entscheiden lassen, wie > viele er auf einmal angezeigt haben möchte, und dann, je nach Anzahl der > Ergebnisse, oben/unten jeweils links u/o rechts zwei Knöpfe > (first/previous) bzw. (next/last) einbauen, mit denen man > blättern kann. Da > stellen sich jetzt folgende Fragen: > > - Wie baue ich ein entsprechendes Element in das "form()" Modul ein, daß > das "LIMIT $aufeinmalanzuzeigendeergebniszeilen" mit in den SQL Code > übernommen wird? Welches form()-Modul ? sqlquery oder oohforms oder ulfforms oder ? > - Wie handhabe ich das mit den Navigationsbuttons, möglichst > natürlich auch > so daß die ausgewählten Zeilen innerhalb einer Session gespeichert > bleiben, auch wenn sie gerade nicht angezeigt bleiben? > > - Ich möchte den Benutzer "kontrolliert" aus einer Session rauswerfen > können, d.h. er soll _nicht_ versehentlich das Browserfenster schließen > können, nachdem er 20min lang aus 2000 Ergebnissen seine gewünschten 180 > rausgefiltert hat (ja, das kommt vor!). Reicht es, dem Session-Cookie > eine genügend lange Lebensdauer (sagen wir 1h) mitzugeben, damit seine > Suchergebnisse auch einen Browserneustart überleben, oder muß > ich da noch > was beachten? 1. es handelt sich um ein Multipage-Formular. Multipage-Formulare erzeugen genau das von Dir genannte Problem: ich brauche die Daten der schon ausgefüllten Seiten irgendwo . Dafuer gibt es zwei Ansätze: a) ich speicher sie in session-Variablen, wie Du es ja auch angedacht hast b) ich uebergebe sie als versteckte Variablen im Formular. 2. Die bereits ausgefuellten Felder sollen auch ausgefuellt bleiben. Damit ist Variante b) draussen - schliesslich ist das Form schlicht nicht mehr da. Variante a) funktioniert bei normalen Sessions auch nicht, da mit einem neuen Browser auch immer eine neue Session kommt - schliesslich kann der Server nicht feststellen, ob es noch immer der gleiche Nutzer am Client ist . Der Workaround sind user-Variablen als Formularspeicher. Das setzt allerdings folgendes vorraus: - funktionierende Authentifizierung mittels auth - diese kann man auch mit dem mode "reg" unsichtbar für den Nutzer durchführen, dann sollte man nur ein cookie mit Nutzername/Passwort setzen, damit dieser wieder eingeloggt werden kann . - darauf aufsetzend die User-Funktionalität der PHPLib Damit impliziert man allerdings, das ein Benutzer nur ein Formular zur gleichen Zeit ausfüllen kann . 3. Das ganze gibt es leider in der Form noch nicht in der PHPLib. Eine Lösung für Multipage-Formulare ist in den Ulfforms, sprich: der neuen Form-Klasse im CVS der PHPLib vorhanden - als Speicher werden aber imho Sessions verwendet, Ulf müßte mal sagen, ob man dem auch ein User-Objekt untermogeln kann . Ulf wird ebenfalls sagen, dass die Forms eigentlich noch nicht fuer Production gedacht sind. 4. 2 Wege: selberbauen auf oohforms, mit mehreren Form-Objekten, und einem Mechanismus, der die ausgefüllten Daten abspeichert und das richtige Form anzeigt. Sich in die steile Lernkurve von ulfforms (gibt glaub ich kein funktionierendes Beispiel zur Zeit ) werfen und eine schlaue Lösung verwenden. Imho ist beides aufwendig, aber das ist ja meistens so . Vielleicht sind diese Informationen ja hilfreich :-) . Grüße, johann
php::bar PHP Wiki - Listenarchive