Alles Session oder was?

Hallo,

ich arbeite immer noch an meinem formular.php-Seite - ich habe hier eine Formularseite und eine send.ph-Seite

Also auf der formular.php-Seite gibt mein seine Daten an und wählt noch über Radio-Buttons diverse andere Sachen aus, diese übergibt er mit dann alle in die send.php-Seite.

Auf dieser send.php-Seite sind die ganzen Daten mitsamt der Auswertungen der Radio-Butttons aufgeführt und er kann, wenn was nicht passt auf korrigieren gehen und er springt dann back zur formular.php-Seite.

So und hier ist mein Problem.

Die Daten die alle mit $_POST[asdfsdf] in die send.php übergeben werden, sind dann ja aus der formular.php weg. Wie stelle ich es an das er mit die Daten dann wieder in die ursprünglichen Text-Felder und Radio-Buttons reintüttet?

Würde das über SESSION gehen? Habe ich schon versucht, leider ohne Fehlermdelung bleiben die Felder dann trotzdem leer.
Oder soll ich die Daten in der formular.ph „speichern“, also quasi bestehen lassen?

Habt ihr ne Idee wie ich das lösen könnte?
Vielen Dank schon mal

Gruß Rolf

Moin!

Eine Möglichkeit wäre:

formular.php

<?php session_start();<br />?\>

/>
/>
/>

send.php

<?php session_start();<br />$\_SESSION['formular'] = $\_POST;
?\>

Das sind jetzt stark gekürzte Fassungen (vor allem die FORM-Definition), aber grundsätzlich reicht das schon aus, um zu verstehen, wie das funktioniert. Du musst erstmal die Session starten und dann würde ich in einem Key die Werte von $_POST speichern (siehe send.php). Wenn du dann formular.php erneut aufrufst, werden die Werte für dein Formular automatisch aus der Session gelesen. Rufst du das Script zum ersten Mal auf, ist in der Session nichts drin, also wird es auch keine vordefinierten Werte geben. Eine kurze Anmerkung: Wenn du E_WARNINGS angezeigt bekommst, wird dir das einige „Fehler“ ausspucken beim ersten Aufruf, weil alle Elemente im Array nicht vorhanden sind. Diese können aber ignoriert werden. Wenn du E_WARNING nicht abschalten willst (im Produktiv-System später), dann müsstest du einmal prüfen, ob das Array vorhanden ist und wenn nicht, dann ein leeres Array mit allen Feldern vorher definieren.

Wenn du dann die Verarbeitung der Daten abgeschlossen hast, kannst du einfach ein unset($_SESSION[‚formular‘]); (nach vorherigem session_start(); !) die Daten wieder löschen.

Ich hoffe, dass dir das ein wenig hilft und dass das Radio-Beispiel dich nicht aus der Bahn wirft, aber da du explizit RADIO-Buttons angesprochen hast, dachte ich wäre ein Beispiel diesbezüglich sinnvoll.

MfG
Lutz

Hallo,

Auf dieser send.php-Seite sind die ganzen Daten mitsamt der
Auswertungen der Radio-Butttons aufgeführt

Aufgeführt - aber wo sind sie gespeichert? In irgendeiner Form von Datenbank, nehme ich an. Wenn Du also Datensätze wieder editieren willst, rufst Du einfach über einen Link die formular.php auf und übergibst eine Kennung, z.B. die ID des Datensatzes.
Die formular.php liest dann die zugehörigen Daten aus der Datenbank und trägt sie in das Formular ein.

Oder soll ich die Daten in der formular.ph „speichern“, also
quasi bestehen lassen?

Du markierst selbst das Wort „speichern“ mit Anführungszeichen. Daraus schließe ich, dass Du selbst nicht weißt, wie das gehen soll. Das frage ich mich auch gerade, wie Du die Daten „in einem PHP-Script“ speichern willst.

Wenn Du die Daten allerdings wirklich nur in den Seiten vorhalten und gar nicht speichern willst, kannst Du die Lösung mit den Sessions machen oder aber Du baust ein Formular - das kann ja auch eines sein, das nur Felder vom Typ „hidden“ hat - in der send.php und der Weg zurück ins formular.php geht dann über das Abschicken dieses Formulars.

Liebe Grüße,
-Efchen

Servus,

hmm so hatte ich mir das auch gedacht, leider gibt er mit hier ohne Fehlermeldung keine Daten zurück.

Kann es sein, das das daher kommt, da ich in der send.php mit Headers arbeite?
Ich würde es mit SESSION so angeben -->

<?php session_start(); $_SESSION['formular'] = $_POST;<br />if (isset ($\_POST['absenden1']) === TRUE)
{
 header ('Location: bitte.php');
 exit;
}

if (isset ($\_POST['absenden2']) === TRUE)
{
 header ('Location: danke.html'); 
 exit;
}

Gruß Rolf

Hallo,

Auf dieser send.php-Seite sind die ganzen Daten mitsamt der
Auswertungen der Radio-Butttons aufgeführt

Aufgeführt - aber wo sind sie gespeichert? In irgendeiner Form
von Datenbank, nehme ich an. Wenn Du also Datensätze wieder
editieren willst, rufst Du einfach über einen Link die
formular.php auf und übergibst eine Kennung, z.B. die ID des
Datensatzes.

Sorry, nein, nicht in der DB gezogen sondern über $_POST übertragen und ausgegeben.

Die formular.php liest dann die zugehörigen Daten aus der
Datenbank und trägt sie in das Formular ein.

Oder soll ich die Daten in der formular.ph „speichern“, also
quasi bestehen lassen?

Das frage ich mich auch gerade, wie
Du die Daten „in einem PHP-Script“ speichern willst.

Speichern ist sicherlich der falsche Ausdruck, ich dachte an „stehen lassen“ …Schwer zu beschreiben, aber wie du unten siehst werde ich es über SESSION machen.

Gruß Rolf

Ja, das sollte so funktionieren, solange session_start() VOR den anderen headern ausgeführt wird, weil NACH den headern ja ein exit kommt. Du musst aber auch daran denken die Session in den Scripten zu starten, in denen du auf die Session-Daten zugreifen willst.

1 Like

Jo, klar - >

<?php session_start();?>Checkliste
<?php echo ""; echo " "; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo " Überschrift "; echo ""; echo ""; echo ""; echo ""; echo " Angaben: "; echo ""; echo ""; echo " Name: "; echo ""; echo ""; ....nächstes Eingabefeld ....nächstes Eingabefeld ....nächstes Eingabefeld ....nächstes Eingabefeld und so weiter... Gruß Rolf

Aha, da steckt der Fehlerteufel:

echo „“;

Du gibst die Zeile doch schon als String aus, entsprechend muss diese Zeile so aussehen:

echo „“;

Dann sollte es EIGENTLICH funktionieren.

1 Like

Aha, da steckt der Fehlerteufel:

echo „“;

Du gibst die Zeile doch schon als String aus, entsprechend
muss diese Zeile so aussehen:

Scussi - hab ich vergessen zu erwähnen :wink:

Also er gibt mit bei -->

VALUE=.$\_SESSION[formular][firma].

das aus -->

.Array[name].

Sobald ich es in Hochkomma setze gibt er mir FM aus -->

Parse error: syntax error, unexpected T\_ENCAPSED\_AND\_WHITESPACE, expecting T\_STRING or T\_VARIABLE or T\_NUM\_STRING in D:\xampp\htdocs\formular.php on line 30

Ich bin echt am verzweifeln …:frowning:(((

Gruß Rolf

Achte bitte auf die " vor und hinter $_SESSION[] und auf die ’ innerhalb der []!

Achte bitte auf die " vor und hinter $_SESSION[] und auf die ’
innerhalb der []!

Sorry, das tu ich natürlich. :wink:

Das war nur der Paste einer „Version“ von mir - also so sollte es ja aussehen gell -->

echo "**".$\_SESSION['formular'][name]."** size=\"100\"\>";

Das bringt er mir in dem Textfeld --> size=100
Was ja verständlich ist eigentlich.

Nur wie stelle ich es an…

Gruß Rolf

VALUE=".$_SESSION[‚formular‘][‚name‘]."

Nur wie stelle ich es an…

Gruß Rolf

schudligung :frowning:

Sorry, nein, nicht in der DB gezogen sondern über $_POST
übertragen und ausgegeben.

Die Frage, die ich damit im Raum stehen lassen wollte ist, ob das für Deine Anwendung reicht, die Daten so „schwebend“ hin und her zu schieben, oder ob eine Speicherung nicht vielleicht einiges einfacher machen würde.

Speichern ist sicherlich der falsche Ausdruck

Wahrscheinlich, weil man nichts an einer Seite „haften“ lassen kann.
Hier würde vielleicht einiges einfacher, wenn Du die Funktionsweise der Arbeit zwischen Browser, Server und PHP-Interpreter genau kennst, also wer was wann macht und was speichert. Dass nach dem Abholen vom Server der Server den Browser wieder vergisst und nichts gespeichert wird.

aber wie du unten
siehst werde ich es über SESSION machen.

Kein Problem :smile:

Grüße,
-Efchen

Die Session scheint also leer zu sein, aber ich habe trotzdem noch etwas übersehen:

value="".$_SESSION[‚formular‘][‚name‘].""

Die maskierten " -> " sind für die „Umrandung“ des Werts da, die hatte ich vergessen mit aufzuschreiben. Ansonsten müsste das bei funktionierender Session klappen, offensichtlich scheint dies aber nicht so zu sein, kannst du vielleicht mal die Session ID sowohl in der send.php, als auch in der formular.php ausgeben und vergleichen? Die müssen immer gleich sein. Ansonsten vermute ich hier ein Cookie-Problem!?

Guten Morgen,

also die SessionIDs gibt er mir aus -->

formular.php --> 791ls7ipfjrhadp8vp68qogte7
send.ph --> gtucd3jr4dj49sqt29kplmjr12

Ich geh davon aus das die identisch sein müssen!?

Gruß Rolf

Und er gibt mir die Arrays auch schön brav über

echo nl2br(print\_r($\_SESSION,true));

aus.

Was mach ich falsch??? :frowning:(((((((((((((

Gruß Rolf

Warscheinlich funktionieren die coockies nicht.
Also manuel ein feld für die session id machen, sonst weiss der server nix vom aufruf.

und form.php
liegt auch auf selber domain wie send.php ? oder ?

Ja, müssten identisch sein, damit das funktioniert. Hast du in deinem Browser eventuell Cookies deaktiviert?

Genau ja, liegt momentan alles auf localhost - wird dann später mal wenn live aber auch beide auf einem Server liegen.

Wegen der Cookies - also ich hab eingestellt --> Mittel

Das sollte doch reichen?

Gruß Rolf