Hallo daar..

Ik heb een irritant probleempje..

Als ik een basic email formulier maak, met field checks erin:

if ($naam == "") {
echo "<b>Fout!</b><br>Ga <a href=\"email.php\" target=\"_self\"><u>terug</u></a> en probeer het opnieuw!";
}

En de gebruiker drukt op 'terug' dan zijn alle (voorheen) ingevulde velden weer leeg.. Bij somige formulieren is dat niet het geval en blijft het formulier ingevuld met de door de gebruiker ingevulde gegeven.
Ik heb me rot gezocht naar een oplossing, maar kan het niet vinden.. Misschien weet iemand hier een oplossing?

Alvast bedankt!

Grtz
Gq.
Doe ipv.

<a href=\"email.php\" target=\"_self\">

dit:

<a href=\"javascript:history.back()\">

alleen het w8woord veld is weer leeg
Ja dat had ik dus ook geprobeerd, maar toch blijven alle velden leeg :S
Precies :)
Pas was er ongeveer eenzelfde vraag. Op de verwerkingpagina alles wat goed ingevuld is opslaan in sessievariabelen. Bij het formulier kijken of de sessievariabele bestaat en zo ja value=".." toevoegen:

Formulier:
<?
session_start();
$naam = !empty($_SESSION['naam']) ? ' value="'.$_SESSION['naam'].'"' : '';
...
echo '<input type="text" name="naam"'.$naam.'>';
?>

Verwerking:
<?
session_start();
if (!empty($_POST['naam'])) {
$_SESSION['naam'] = $_POST['naam'];
}
?>
Uhm, ik snap niet helemaal hoe dat session werkt...

Btw hier is het script:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Send e-mail</title>
</head>
<body>
<?
if (isset($_POST['verzend'])) {
$email = "[email protected]";
$naam = $HTTP_POST_VARS['txtNaam'];
$telefoon = $HTTP_POST_VARS['txtTelefoon'];
$reactie = $HTTP_POST_VARS['txtReactie'];
$emailadres = $HTTP_POST_VARS['txtEmail'];
$mailbody = "Naam: $naam\nTelefoon: $telefoon\nE-mail: $emailadres\nReactie: $reactie";
$title = "Reactie van $naam";

if ($naam == "") {
print "<b>Fout!</b>
<br><br>U moet een naam invullen!<br>
<br>Ga <a href=\"javascript:history.back()\"><u>terug</u></a> en probeer het opnieuw!";
} elseif ($reactie == "") {
print "<b>Fout!</b>
<br><br>U moet een reactie invullen!<br>
<br>Ga <a href=\"javascript:history.back()\"><u>terug</u></a> en probeer het opnieuw!";
} else {
mail( $email, $title, $mailbody);
print "Uw reactie is verstuurd!";
}
} else {
?>
<form name="email_form" method="post" action="">
<table width="530" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="150">Naam:</td>
<td width="380"><input name="txtNaam" type="text" id="txtNaam" size="25" maxlength="25"></td>
</tr>
<tr>
<td width="150">Telefoonnummer:</td>
<td width="380"><input name="txtTelefoon" type="text" id="txTelefoon" size="15" maxlength="15"></td>
</tr>
<tr>
<td width="150">E-mailadres:</td>
<td width="380"><input name="txtEmail" type="text" id="txtEmail" size="45" maxlength="45"></td>
</tr>
<tr>
<td width="150" valign="top">Reactie:</td>
<td width="380"><textarea name="txtReactie" cols="50" rows="6" id="txtReactie"></textarea></td>
</tr>
<tr>
<td width="150">&nbsp;</td>
<td width="380"><input type="submit" name="verzend" value="Verzenden"></td>
</tr>
</table></form>
<?
}
?>
</body>
</html>
Met dat session gebeuren word het een stuk ingewikkelder.. En het moet wel een beetje een basic scriptje blijven :)
@dutchchannel: dat gaat dus niet lukken als het formpje nog niet is gesubmit.. Ik denk dat GQ bedoeld dat de gegevens weer terugkomen als er nog niets gesubmit is..

In dat geval; zou ik eens gaan kijken naar de phpbb forums die dat ook hebben
@Dave

Ja precies dat bedoel ik..
Ik heb het al opgelost.. Heb het script een beetje aangepast, nu hoeft er helemaal niet op 'terug' gedrukt te worden..

Thnx voor jullie tijd iig

Reageren