E-mail formulier error onthoud ingevulde velden
Ik heb met behulp van een tutorial hier, en andere tips via google een prachtig werkende scriptje gemaakt voor een email formuliertje..
Nu weet ik alleen 1 ding nog niet echt te vinden ( weet niet goed hoe ik het moet zoeken )
Ik heb laten we zeggen een formulier met 10 in te vullen velden..
3 velden zijn verplicht, als je een van die velden vergeet krijg je een foutmelding te zien.. enige probleem is dat gebeurd bij de submit, en als het fout gaat dan zijn alle velden die je wel ingevuld hebt leeg.. en dat is irritant natuurlijk..
Hoe los ik dit probleem op ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$error = '';
// Controleren of de velden goed zijn ingevuld ========
if(empty($_POST['Naam']))
$error .= "U heeft geen <strong>Naam</strong> ingevuld.<br />\n";
if(empty($_POST['Telefoon']))
$error .= "U heeft geen <strong>Telefoon</strong> ingevuld.<br />\n";
if(empty($_POST['Email']))
$error .= "U heeft geen <strong>E-mailadres</strong> ingevuld.<br />\n";
// Variables zetten =================================
$Naam = htmlspecialchars($_POST['Naam']);
$Telefoon = htmlspecialchars($_POST['Telefoon']);
$Email = htmlspecialchars($_POST['Email']);
// ========================
// Kijken of er fouten zijn en anders versturen ============================
if( $error )
{
echo "<h3 style=\"color: #f00;\">Fout</h3>\n";
echo "<p>" . $error . "</p>";
}
else
{
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$to = "mailadres";
$subject = "HTML email";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From:'.$Email.'' . "\r\n";
$bericht = '
-----------------------------------------------------------<br />
Verstuurd op '.$datum.' via IP-adres:'.$ip.'';
// ====================================
// Mailen verzenden ================================
if (mail($to,$subject,$bericht,$headers))
{
echo "<p>Uw email is succesvol verzonden, bedankt!</p>\n";
}
else
{
echo "<h3 style=\"color: #f00;\">Fout</h3>\n";
echo "<p>De email kon niet verzonden worden, email mij direct via [email protected]</p>\n";
}
}
}
// Wanneer er niets verzonden wordt óf wanneer er een foutmelding is, formulier weergeven
if( (!empty($error)) or $_SERVER['REQUEST_METHOD'] != "POST" )
{
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$error = '';
// Controleren of de velden goed zijn ingevuld ========
if(empty($_POST['Naam']))
$error .= "U heeft geen <strong>Naam</strong> ingevuld.<br />\n";
if(empty($_POST['Telefoon']))
$error .= "U heeft geen <strong>Telefoon</strong> ingevuld.<br />\n";
if(empty($_POST['Email']))
$error .= "U heeft geen <strong>E-mailadres</strong> ingevuld.<br />\n";
// Variables zetten =================================
$Naam = htmlspecialchars($_POST['Naam']);
$Telefoon = htmlspecialchars($_POST['Telefoon']);
$Email = htmlspecialchars($_POST['Email']);
// ========================
// Kijken of er fouten zijn en anders versturen ============================
if( $error )
{
echo "<h3 style=\"color: #f00;\">Fout</h3>\n";
echo "<p>" . $error . "</p>";
}
else
{
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$to = "mailadres";
$subject = "HTML email";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From:'.$Email.'' . "\r\n";
$bericht = '
-----------------------------------------------------------<br />
Verstuurd op '.$datum.' via IP-adres:'.$ip.'';
// ====================================
// Mailen verzenden ================================
if (mail($to,$subject,$bericht,$headers))
{
echo "<p>Uw email is succesvol verzonden, bedankt!</p>\n";
}
else
{
echo "<h3 style=\"color: #f00;\">Fout</h3>\n";
echo "<p>De email kon niet verzonden worden, email mij direct via [email protected]</p>\n";
}
}
}
// Wanneer er niets verzonden wordt óf wanneer er een foutmelding is, formulier weergeven
if( (!empty($error)) or $_SERVER['REQUEST_METHOD'] != "POST" )
{
?>
<form name="contact" id="contact" action="" method="post">
<table width="500px" border="0">
<tr>
<td class="TitelTD">Naam</td>
<td ><input name="Naam" type="text" value=""></td>
</tr>
<tr>
<td class="TitelTD">Telefoon</td>
<td><input name="Telefoon" type="text" value=""></td>
</tr>
<tr>
<td class="TitelTD">E-mail</td>
<td><input name="Email" type="text" value=""></td>
</tr>
<tr>
<td class="TitelTD">Opmerking</td>
<td><textarea name="Opmerking" rows="7" cols="45"></textarea></td>
</tr>
<tr>
<td colspan="2">
<div class="button-bg">
<a>
<button type="submit" name="Submit" id="submitbutton">Verstuur</button>
</a>
</div>
</td></tr>
</table>
</form>
Code (php)
1
2
3
4
2
3
4
<?
// Hier sluiten we het af, omdat na het verzenden het e-ail formulier gehide moeten worden ==================================================================================================
}
?>
// Hier sluiten we het af, omdat na het verzenden het e-ail formulier gehide moeten worden ==================================================================================================
}
?>
Toevoeging op 25/02/2011 11:28:05:
En trouwens, 1 maand geleden had ik 0,0 verstand van php..
Ik wist niet waar ik moest beginnen, ondertussen snap ik de basis dingen heel goed, dankzij de hulp op dit forum
Mijn dank daarvoor !
of klik http://www.w3schools.com/js/js_form_validation.asp
Of je kunt door middel van value het laten onthouden dus op deze manier
Als er dan op submit wordt gedrukt en een ander veld is niet ingevuld dan blijft ie de post onthouden en is de naam ingevuld.
Gewijzigd op 25/02/2011 11:38:14 door thomas de vries
Die logica had ik zojuist in mijn hoofd gekregen en uitgewerkt, en het werkt inderdaad!
Ik wou het net postte hier maar je was me voor..
Geniaal !
Harstikke bedankt voor je reactie
Toevoeging op 25/02/2011 11:45:39:
<textarea name="Opmerking" rows="7" cols="45"></textarea>
hoe doe ik het voor deze ? :O
<textarea name="Opmerking" rows="7" cols="45">HIER TUSSEN</textarea>
Maar geniaal Santhe, thank you very much :D
Toevoeging op 25/02/2011 14:05:11:
Oke nu hopelijk het laatste probleempje:
Op een pagina heb ik een button, als je daar op klikt komt er een klein popupje met dit e-mail formulier. bij die button geef ik met een javascript onlclick een variable mee.
Emailformulier.php?produkt=fiets
Ik lees met php die variable uit.
$Produktstring = $_GET['Produkt'];
En zo gebruik ik hem als standaard value in het formulier.
Nu het probleem:
Als ik in het formulier op "verstuur" klik en een verplicht veld is niet ingevuld krijg ik een page refresh.. helaas neem hij niet de variable mee.
De refresh eindigt dus hier : Emailformulier.php
Hoe zorg ik dat ervoor dat het toch : Emailformulier.php?produkt=fiets wordt ?
Bedankt
Toevoeging op 25/02/2011 14:22:58:
Eindelijk opgelost :)