Ik heb een formulier. Als ik deze submit en controleer of alles wel is ingevuld, en als dit niet het geval is, en terug ga, moet ik alles weer geheel opnieuw invullen. Ik ben erachter gekomen hoe dit komt. Het formulier wordt naar hetzelfde bestand gesubmit en als ik dan terug ga is alles verdwenen. Als ik het controleer gedeelte in een andere bestand zet dan blijven deze gegevens wel behouden. Weet iemand hoe ik dit kan oplossen zonder dat ik een extra bestand moet aanmaken?
Verwijderd
Controles doe ik het liefst met javascript. Dan heb je dat probleem niet. Je kan ook gewoon een history.back() linkje maken. Dan staat meestal al het ingevulde (behalve password input velden) er nog.
Verwijderd
PHP:
1
2
3
4
5
6
7
8
| <? if(!$HTTP_SUBMIT_VARS["optie1"] OR !$HTTP_SUBMIT_VARS["optie2"]) { echo "Sorry, niet goed"; } else { echo "Goed zo!"; } ?> |
Ik gebruik ook history.back() en toch wordt alles gewist.Op zondag 17 februari 2002 14:43 schreef cyberjoy het volgende:
Controles doe ik het liefst met javascript. Dan heb je dat probleem niet. Je kan ook gewoon een history.back() linkje maken. Dan staat meestal al het ingevulde (behalve password input velden) er nog.
Alle variablen worden wel weer 'teruggevoerd' aan je script.
Je zou dus (bijv.)
<INPUT TYPE='Text' Name='EMail' VALUE='$EMail'>
kunnen gebruiken, waarbij (als EMail al ingevuld is) en je terugtuurd omdat iets anders fout is de waarde van $EMail alvast ingevuld....
[edit - verduidelijking (hoop ik
)]
Als iets anders dan $E_Mail niet goed is ingevuld en een gebruiker wordt naar het form teruggestuurd 'onthoudt' het form dat $E_Mail al ingevuld is...
Je zou dus (bijv.)
<INPUT TYPE='Text' Name='EMail' VALUE='$EMail'>
kunnen gebruiken, waarbij (als EMail al ingevuld is) en je terugtuurd omdat iets anders fout is de waarde van $EMail alvast ingevuld....
[edit - verduidelijking (hoop ik
PHP:
1
2
3
4
5
6
| <? print("<TR>"); print("<TD>$MGS[1]</TD>"); print("<TD><INPUT Type='Text' Name='EMail' Value='$EMail' Size='20'></TD>"); print("</TR>\n"); ?> |
Als iets anders dan $E_Mail niet goed is ingevuld en een gebruiker wordt naar het form teruggestuurd 'onthoudt' het form dat $E_Mail al ingevuld is...
Verwijderd
Je kan alle variabelen weer echo'en in de input veldjes, als je de eerste keer erop komt zijn de variableen niet geset, als je iets niet heb ingevuld en je maakt een knopje "terug" (zorg wel dat je je variabelen in hidden fields zet) en dan staan de variabelen in de veldjes.
<input type="text" name="voornaam" value="$voornaam">
zoiets dus....
edit: haha tegelijk TheRookie
<input type="text" name="voornaam" value="$voornaam">
zoiets dus....
edit: haha tegelijk TheRookie
Verwijderd
Anders pak je daar je form elementen weer op en submit je die weer naar het formulier (met een bepaalde check of zo). Daar zou je ze ook weer in de value kunnen terugzetten.
- Edit: anchorman en therookie waren me net voor
-
- Edit: anchorman en therookie waren me net voor
Als je op "back" [ = history.go(-1) ] vorige drukt wordt soms inderdaad alles gewist, ik ken het probleem. Ik weet helaas niet waar dat nou aan ligt.
Een javascript-check zal dit in de meeste gevallen ondervangen. Is het echt van belang dat het foolproof wordt, zou ik no-cache-headers meegeeven en de gesubmitte waarden bij een submit in sessie-variabelen zetten, en die ophalen als reeds ingevulde waarden als je het formulier toont. Dan worden ze ook bij een back-actie opgehaald en ingevuld. Bestaan die sessie-variabelen niet, dan wordt niks ingevuld. Wel belangrijk is dat je de sessie-variabelen aan een timeframe vindt (timestamp opslaan) en dat je ze tevens wist wanneer de submit succesvol is om de voorkomen dat iemand anders op dezelfde computer die informatie kan zien.
Een javascript-check zal dit in de meeste gevallen ondervangen. Is het echt van belang dat het foolproof wordt, zou ik no-cache-headers meegeeven en de gesubmitte waarden bij een submit in sessie-variabelen zetten, en die ophalen als reeds ingevulde waarden als je het formulier toont. Dan worden ze ook bij een back-actie opgehaald en ingevuld. Bestaan die sessie-variabelen niet, dan wordt niks ingevuld. Wel belangrijk is dat je de sessie-variabelen aan een timeframe vindt (timestamp opslaan) en dat je ze tevens wist wanneer de submit succesvol is om de voorkomen dat iemand anders op dezelfde computer die informatie kan zien.
Ik spoor veilig of ik spoor niet.
Ik heb dat probleem ook gehad, toen ik werkte met sessions. Het heeft waarschijnlijk met caching te maken. Bij mij stond standaard de session_cache_limiter op nocache. Hierdoor slaat de browser de ingevulde gegevens dus niet op en herlaad de pagina gewoon, na een history.go(-1).
De mooiste manier om het op te lossen is idd je formulier gewoon opnieuw afdrukken met de ingevulde waarden.
De mooiste manier om het op te lossen is idd je formulier gewoon opnieuw afdrukken met de ingevulde waarden.
Pagina: 1