Formulareingaben sollen erhalten bleiben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abschicken
absenden
bedingung
beispiel
bleiben
browser
code
datei
datum
direkt verwenden
eingabe
fehler
feld
formular
machen
nutzer
post
session
sinn
weiterleiten
-
Hallo! Ich hoffe ihr könnt mir helfen.
Also ich programmiere grade ein kleines Spiel.
Der User gibt Daten in ein formular ein, die werden dann mit $_POST ausgewertet. Dazu habe ich 2 dateien, eine html und eine php datei.
Es gibt 15 felder zum ausfüllen bzw radiobuttons sind auch dabei. mit
if ($name == "" OR $gender == "") { echo "Fülle alle felder aus <a href='formular.htm'>Zurück</a>"; } else { #Hier folgt dann der rest, den er ausführen soll, wenn alles angegeben wurde }
So, der angenommen der User füllt 14 von 15 feldern aus, kommt auf die fehler seite und klickt den zurücklink an. Dann müsste er alle felder von neu ausfüllen. Habe aber in registrierungsformularen und so schon gesehen, dass die eingaben bleiben.
Ich hab google gequält, aber ich krieg es einfach nicht hin.
Beitrag zuletzt geändert: 5.2.2009 19:00:03 von nadsche -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das Stichwort ist SESSION.
Allerdings bleiben bei mir die Formulardaten auch erhalten, wenn das Formular nur über eine Seite geht.
Allerdings müsstest du dem Textfeldern die $POST-Variable als Inhalte (value) übergeben! -
bei mir bleiben sie erhalten wenn ich im browser auf den zurückbutton gehe, bzw wenn ich im formular nur F5 drücke, wenn ich aber KOMPLETT neu lade mit STRG+F5, oder besagten link anklicke, sind die daten weg. okay.. session *doofgrins*, müsste ich mir anschaun.
Beitrag zuletzt geändert: 5.2.2009 19:02:18 von nadsche -
Wenn du mit STRG-C lädst, dann bleiben die Daten aber auch vermutlich bei der Session nicht erhalten.
Das macht der Normaluser aber auch nicht. Wenn du deinen Cache geleert hast, dann bringen dir die Sessions auch nix mehr :D Dann wird nämlich eine neue gestartet. -
ja das leuchtet ein =) . Also, meinst du, ist mein vorhaben nicht nötig? theoretisch könnte ich mit javascript einen backlink machen, der das selbe wie der Browser eigene zurückbutton macht, Müsste doch dann eigentlich so sein wie es soll.
Das geh ich mal probieren... -
Wieso einen Javascript-Link basteln, wenn es diese Option in jedem Browser gibt.? Versteh ich nun nicht wirklich. Dann hast du zweimal das Gleiche, nur auf verschiedene Wege.
Sessions sind vor allem gut, wenn das Formular über mehrere Seiten geht. -
*in ecke geh* ich weiss nicht so genau...
alsoo das formular geht ja nicht über mehrere seiten. hmm ja du hast recht.. es tut ja schon das was es soll. *verwirrtbin*
Okay... naja mal was anderes. Also... Die fehlerausgabe, die kommt, wenn man was vergessen hat auszufüllen, die steht dann ganz verlassen auf einer seite wo sonst nix ist. Wie kann ich diese fehlermeldung an den anfang des Formulars schicken? geht das überhaupt, wenn das Formular auf einer eigenen seite ist? und wenn ja sind die eingegebenen daten immer noch da?
sind bestimmt total die dummen fragen lol, aber ich bin ja totaler neuling
Beitrag zuletzt geändert: 5.2.2009 19:11:51 von nadsche -
Man kann die Daten des Formulars an sich selbst übergeben auch. Dann hat man nur eine einzige Seite.
Ich löse das meist so, dass ich das Formular eben wieder aufrufe und im Fehlerfall die Textfelder mit einer Hintergrundfarbe (z.B. ROT) fülle.
Das macht irgendwie den besseren Eindruck, als eine weitere Fehlerseite.
Wie man das Formular erneut aufruft kannst du hier sehen:
<FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
-
Das kannst du auch so machen:
<?php function formularausgeben(){ //... echo "<input type='text' name='name' value=".$_POST['name'].">"; //... } // Das gesendete Auf fehler prüfen //... if($error || !isset($_POST['gesendet'])){ formularausgeben(); } else { echo "alles hat geklappt"; } ?>
Du gibst das Formular einfach dann aus, wenn es Fehler enthält, oder wenn es noch garnicht abgeschickt wurde.
Grüße,
Prog -
<?php if(isset($_POST["senden"] == "absenden")) { if(empty($_POST["eingabe"])) { echo "musst alles ausfüllen"; } else { echo "alles ok, weiterarbeiten..."; } } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="text" name="eingabe" value="<?php echo $_POST["eingabe"]; ?>" /> <input type="submit" name="senden" value="absenden" /> </form>
Macht jetzt bei einem Feld nicht wirklich Sinn, aber so kann mans machen. Nach dem Absenden erscheint bei Eingabe "alles ok, weiterarbeiten..." und der Ausgeüllte Wert des Inputfeldes wird übernommen. -
Du könntest die Post-Variablen auch einfach direkt verwenden, ich mach dir mal ein Beispiel:
if($formulareingabe_korrekt) { // eintragund in DB echo "Anmeldung erfolgreich!"; } else { echo "Bitte Formular korrekt ausfüllen!"; // formularbeginn echo 'Name: <input type="text" name="name" value="'.$_POST['name'].'" />'; // weitere eingabefelder // sede-button und Formularende }
Natrülich musst du z.B. die Bedingung ersetzen. Aber der Struktur solltest du übernehmen.
mfg
drafed-map -
drafed-map schrieb:
Du könntest die Post-Variablen auch einfach direkt verwenden, ich mach dir mal ein Beispiel:
Klar geht das, nur das ist etwas blöd, da dem Nutzer das bereits korrekt ausgefüllte und abgeschickte Formular wieder angezeigt wird. So klickt der Nutzer schnell nochmal auf abschicken.
Grüße,
Prog -
prog schrieb:
drafed-map schrieb:
Du könntest die Post-Variablen auch einfach direkt verwenden, ich mach dir mal ein Beispiel:
Klar geht das, nur das ist etwas blöd, da dem Nutzer das bereits korrekt ausgefüllte und abgeschickte Formular wieder angezeigt wird. So klickt der Nutzer schnell nochmal auf abschicken.
Grüße,
Prog
Genau das wird damit doch verhindert. Bei Sessions würde das passieren, wenn man vergessenw ürde die Variablen zu löschen, aber auf die von mir beschriebene Methode werden die Formulareingaben nur gezeigt, wenn das Formular nicht korrekt ausgefüllt wurde.
mfg
drafed-map -
Sorry, hab den Falschen Zitiert. Ich meinte den Code von trueweb. Nur gegen das Neuladen im Browser hilft leider beides nichts. Da muss man dann auch noch weiterleiten.
Grüße,
Prog -
Wow da guggt man mal nich ins forum, gibts so viele antworten. Ich schau mir eure lösungen alle durch =) danke schön
-
prog schrieb:
Sorry, hab den Falschen Zitiert. Ich meinte den Code von trueweb. Nur gegen das Neuladen im Browser hilft leider beides nichts. Da muss man dann auch noch weiterleiten.
Grüße,
Prog
Man muss sich auch nicht um jeden DAU kümmern. Wer Formulare ausfüllt und die Seite refreshed ist selber schuld.
Ich sehe keinen Sinn daran, Sessions zu verwenden wenn man die Daten ja auch in $_POST hat, außer man will eine weitere extra Seite dazwischen schalten, dann müssen Sessions verwendet werden. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage