• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formulardaten speichern und nach neuladen der Seite benutzen

Pr1Me

Neues Mitglied
Guten Tag,

ich habe ein einfaches .PHP-Script geschrieben. Das Script ruft Daten aus einer Datenbank ab und trägt die Werte in eine Tabelle ein.
Ich möchte nun, dass der Benutzer die Möglichkeit hat die abgerufenen Daten zu filtern. Die UI sieht dabei so aus:

filter.jpg

Man soll die möglichkeit haben sich nur bestimmte Informationen anzeigen zu lassen. Aus denen die angezeigt werden soll man noch über eine Art Suche eingrenzen können.

Ich habe nun schon mehrere Methoden versucht, aber so 100% war ich nie zufrieden. Das Problem liegt darin, dass wenn man auf den "filter" Button klickt die Seite ja neu geladen wird und somit alle Einstellungen zurück gesetzt werden (Ich habe dann immer <form action="<?php echo $_SERVER['PHP_SELF']; ?>"/ method="post"/> gemacht). Ich habe auch schon versucht die Daten per GET zu übertragen (also index.php?id=4&name=hans) aber das geht nicht, weil es dann komplikationen mit Joomla gibt (das Script soll später in Joomla eingebettet werden).


Wisst ihr von einer Möglichkeit wie ich die Einstellungen von dem Filter speichern kann? Cookie´s??

Mit freundlichen Grüßen
 
Speichere die optional durch POST erhaltenen Parameter in Variablen wie $nation, $plz, ... (default leer) und dann

<input value="<?php echo $plz ?>" name="plz" ....>

Wenn du das über mehrere Seiten machen willst, dann musst die einfach in $_SESSION ablegen
 
Vielen Dank, es funktioniert jetzt fast alles.
Jedoch habe ich noch ein Problem mit der Session.

Beispiel:

one.php

HTML:
<?php
session_start();
$_SESSION['entries'] = "hallo welt";
?>

two.php

HTML:
<?php
session_start();
echo $_SESSION['entries'];
?>


Auf der two.php wird nichts ausgegeben.

Wenn ich auf one.php weiter unten echo $_SESSION['entries']; schreibe, dann wird "hallo welt" ausgegeben. Wieso nicht auf two.php? Die Session wird ja eigentlich nicht beendet....
Auf die Seite two.php komme ich durch einen Link auf der one.php. (ich benutze xampp).

Grüße
 
Zuletzt bearbeitet:
XAMPP kenn ich nicht, aber ich würde in beiden Seiten mir mit var_dump mal die gesamte $_SESSION Collection ausgeben lassen und außerdem die session_id(), nicht dass die irgendwie zerschossen wurde. Und mach Error Handling an, nicht dass der Session Start nicht geht, weil schon Daten gesendet wurden. Ich hatte das Problem, weil meine UTF-8 kodierten Textdateien einen BOM-Prefix hatten (so 3 unsichtbare Byte), musste die anders speichern
 
Die Seite one.php hat eine andere Session-ID als die two.php....

Was muss ich machen, dass beide die gleiche ID haben?

Grüße
 
Ja die Id muss natürlich gleich sein, denn unter der speichert er ja die §_SESSION Variablen ab. Nun musst suchen, wo die erste Session zerstört wird. Stell auf jeden Fall mal sicher, dass du Cookies aktiviert hast und geh zum Test mal auf meine Seite PHP Umgebung Wenn du die mehrfach aufrufst bleibt die Session Id erhalten und der zaehler in der $_SESSION (3. Tabelle) geht bei jedem Reload hoch. Nicht dass es an deinen Browsereinstellungen liegt. Außerdem kann man konfigurieren, wo PHP die Variablen in einer Datei speichert. Keine Ahnung, was passiert, wenn das Verzeichnis nicht existiert oder gesperrt ist.
 
Das Script läuft innerhalb von Joomla als Modul.
Ich habe das ganze jetzt mal extern laufen lassen und da funktioniert es.

Es sieht wohl so aus, dass Joomla die Session irgendwie zerstört.


Wird wohl sehr schwierig sein, dieses Problem zu lösen.

Edit:

Es gibt eine Methode um in die Session von Joomla einzugreifen:

Code:
[COLOR=#000088]$session[/COLOR] [COLOR=#339933]=[/COLOR] JFactory[COLOR=#339933]::[/COLOR][COLOR=#004000]getSession[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

Jedoch hilft mir das nichts, weil die Daten an eine Seite gesendet werden die sich nicht in Joomla befindet und ich somit irgendwie nicht auf die Session zugreifen kann....
 
Zuletzt bearbeitet:
Könntest auch versuchen, die erste Session-Id als Cookie zu setzen und dann immer explizit auf diese Session zuzugreifen. Meine mich zu erinnern, dass man bei SessionStart einen Parameter mitgeben kann.

Könntest auch versuchen, wenn zumindest Cookies erhalten bleiben, dein eigenes Session-Objekt zu bauen, indem du eine eigene Session-Id erzeugst (falls nicht vorhanden), diese als Cookie setzt (und abfragst) und die Daten in einer Datei oder Tabelle speicherst (mit Cleanup von Zeit zu Zeit).

Wenn es kein Original Modul ist (sondern nachgerüstet), dann könntest mal versuchen, ob es innerhalb Joomla auch so ist (also Modul ersetzen) oder eventuell stellt Joomla ein eigenes Session Objekt zur Verfügung, das du nutzen kannst. Das nehme ich eigentlich an, denn sonst könnte sich auch Joomla keine Anmeldung merken, wenn dieses Modul ins Spiel kommt.
 
Das klingt sehr aufwendig. Vielleicht gibt es ja auch eine einfachere Lösung und ich denke einfach zu kompliziert.

Auf der Hauptseite werden Daten in eine formatierte Tabelle geschrieben (der Nutzer kann die Daten auch filtern).
Der Nutzer hat dann die Möglichkeit auf einen Druckbutton zu drücken, es wird dann eine neue Seite geöffnet.
In der neuen Seite werden die Daten von der vorherigen Seite (evtl. gefiltert) in einer einfachen Tabelle (unformatiert) angezeigt
um sie zu drucken.

Ich wollte auf der ersten Seite eine Session erzeugen und in die Session ein Array mit den Id´s der angezeigten Daten.
Die zweite Seite sollte dann die Id´s auslesen, eine Datenbankabfrage machen, und nur die Daten anzeigen, die der Benutzer
auf der ersten Seite hatte.

Kompliziert zu erklären^^
 
Also ich sehe nur 2 Möglichkeiten:
1) Du speicherst in einem Session Object (eigenes oder PHP)
2) Du speicherst die Daten im HTML Dokument als Hidden Formfeld/Textarea (beispielsweise als XML-Struktur mit URLencode oder UUENODE oder ...), schickst also immer alles hin und her. Wenn es nur eine Liste von Ids sind, dann wäre sogar CSV geeignet.
 
Zurück
Oben