Problemen met Form Action / formulier
Sinds een tijdje ben ik bezig met de basics van PHP en MySQL en ik ben nu bij het onderwerp formulieren en het controleren van de gegevens hiervan.
Hiervoor heb ik een proef script gemaakt om het te testen maar om de een of andere reden doet die het niet helemaal naar wens. Wat specifieker: mijn form action POST werkt niet helemaal goed. Ten eerste krijg ik deze PHP zin steeds te zien (form action checkall) na het invullen van mij formulier. Ten tweede heb ik een probleem met me action pagina (checkAll) die de gegevens niet goed controleert.
Zo heb ik er een controle voor ingevoerde velden inzitten maar als ik geeneen veld invoer dan krijg ik alleen een foutmelding te zien van één veld dat niet is ingevuld terwijl er dan (volgens mij) alle velden getoond moeten worden die niet ingevuld zijn. Daarnaast laat het programma ook niet de goede tekst zien als alle gegevens correct zijn ingevuld.
Wat overige informatie: XAMPP is geinstallaeerd en draait tijdens het testen. Hieronder volgt de gebruikte code:
Het hoofdprogramma
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
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
<?php
$labels = array("voor_naam" => "Voornaam",
"achter_naam" => "Achternaam",
"e_mail" => "E-mail adres",
"e_bevestiging" => "Bevestiging E-mail adres",
"wachtwoord" => "Wachtwoord",
"geboortedatum" => "Geboortedatum",
"Woonplaats" => "Waar woon je?");
?>
<html>
<head>
<title>Registreren</title>
<style type ='text/css'>
<!--
form {margin: 1.5em 0 0 0; padding: 0; }
.field {padding-top: .5em; }
label { float: left; width: 20%;
margin-right: 1em; text-align: right; }
#submit { margin-left: 35%; padding-top: 1em; }
-->
</style>
</head>
<body>
<h1>Registreren</h1>
<form action='checkAll.php' method ='POST'
<?php
//lus die de formuliervelden weergeeft
foreach($labels as $field => $label)
{
echo "<div class='field'>
<label for='$field'>$label</label>
<input type='text' name='$field' id='$field'
size='65' maxlenght='65' /></div>\n";
}
echo "<input type='radio' name='geslacht'
value='Man' />Man\n";
echo "<input type='radio' name='geslacht'
value='Vrouw' />Vrouw\n";
echo "<div id='submit'><input type='submit'
value='Registreren' /></div>\n";
echo "</div>\n</form>\n</body>\n</html>";
?>
$labels = array("voor_naam" => "Voornaam",
"achter_naam" => "Achternaam",
"e_mail" => "E-mail adres",
"e_bevestiging" => "Bevestiging E-mail adres",
"wachtwoord" => "Wachtwoord",
"geboortedatum" => "Geboortedatum",
"Woonplaats" => "Waar woon je?");
?>
<html>
<head>
<title>Registreren</title>
<style type ='text/css'>
<!--
form {margin: 1.5em 0 0 0; padding: 0; }
.field {padding-top: .5em; }
label { float: left; width: 20%;
margin-right: 1em; text-align: right; }
#submit { margin-left: 35%; padding-top: 1em; }
-->
</style>
</head>
<body>
<h1>Registreren</h1>
<form action='checkAll.php' method ='POST'
<?php
//lus die de formuliervelden weergeeft
foreach($labels as $field => $label)
{
echo "<div class='field'>
<label for='$field'>$label</label>
<input type='text' name='$field' id='$field'
size='65' maxlenght='65' /></div>\n";
}
echo "<input type='radio' name='geslacht'
value='Man' />Man\n";
echo "<input type='radio' name='geslacht'
value='Vrouw' />Vrouw\n";
echo "<div id='submit'><input type='submit'
value='Registreren' /></div>\n";
echo "</div>\n</form>\n</body>\n</html>";
?>
Het controle (form action) programma
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<html>
<head>
<title>Account aanmaken</title>
<style type ='text/css'>
<!--
form {margin: 1.5em 0 0 0; padding: 0; }
.field {padding-top: .5em; }
label { float: left; width: 20%;
margin-right: 1em; text-align: right; }
#submit { margin-left: 35%; padding-top: 1em; }
-->
</style>
</head>
<body>
<?php
$labels = array("voor_naam" => "Voornaam",
"achter_naam" => "Achternaam",
"e_mail" => "E-mail adres",
"e_bevestiging" => "Bevestiging E-mail adres",
"wachtwoord" => "Wachtwoord",
"geboortedatum" => "Geboortedatum",
"Woonplaats" => "Waar woon je?");
foreach ($_POST as $field => $value)
{
//controleren van elk veld
if(empty($value))
{
$blank_array[] = $field;
}
//controleren namen op opmaak
elseif($field == "voor_naam" or $field == "achter_naam")
{
if(!preg_match("/^[A-Za-z' -]{1,50}$/",$_POST[$field]) )
{
$bad_format[] = $field;
}
}
//controleren e-mail op opmaak
elseif($field == "e_mail" or $field == "e_bevestiging")
{
if(!preg_match("/^[@A-Za-z 0-9_.%+-]{1,50}$/",$_POST[$field]) )
{
$bad_format[] = $field;
}
}
// woonplaats en geboortedatum worden drop down keuzemenus
//foutberichten en formulier weergeven als het niet klopt
if(@sizeof($blank_array) > 0)
{
echo "<p><b>U heeft de volgende vereiste velden niet ingevuld:</b><br />\n";
//toon lijst met ontbrekende gegevens
foreach($blank_array as $value)
{
echo " {$labels[$value]} <br /> \n";
}
echo "</p>\n";
}
//berichten voor foutieve gegevens
if(@sizeof($bad_format) > 0)
{
echo "<p><b>De volgende velden bevatte incorrecte gegevens</b><br />\n";
//toon lijst met foutieve gegevens
foreach($bad_format as $value)
{
echo " {$labels[$value]} <br /> \n";
}
echo "</p>\n";
}
//formulier opnieuw weergeven
echo "form action='$_SERVER[PHP_SELF]' method='POST'>";
foreach($labels as $field => $label)
{
$clean_data[$field] =
strip_tags(trim($_POST[$field]));
echo "<div class='field'>
<label for='$field'>$label</label>
<input type='text' name='$field' id='$field'
size='65' maxlenght='65'
value='$clean_data[$field]' /></div>\n";
}
echo "<div id='submit'><input type='submit'
value='Registreren' /></div>\n";
echo "</div>\n</form>\n</body>\n</html>";
exit();
}
//als de gegevens goed zijn
echo "<p>Alle gegevens zijn ingevuld</p></body></html>";
?>
<head>
<title>Account aanmaken</title>
<style type ='text/css'>
<!--
form {margin: 1.5em 0 0 0; padding: 0; }
.field {padding-top: .5em; }
label { float: left; width: 20%;
margin-right: 1em; text-align: right; }
#submit { margin-left: 35%; padding-top: 1em; }
-->
</style>
</head>
<body>
<?php
$labels = array("voor_naam" => "Voornaam",
"achter_naam" => "Achternaam",
"e_mail" => "E-mail adres",
"e_bevestiging" => "Bevestiging E-mail adres",
"wachtwoord" => "Wachtwoord",
"geboortedatum" => "Geboortedatum",
"Woonplaats" => "Waar woon je?");
foreach ($_POST as $field => $value)
{
//controleren van elk veld
if(empty($value))
{
$blank_array[] = $field;
}
//controleren namen op opmaak
elseif($field == "voor_naam" or $field == "achter_naam")
{
if(!preg_match("/^[A-Za-z' -]{1,50}$/",$_POST[$field]) )
{
$bad_format[] = $field;
}
}
//controleren e-mail op opmaak
elseif($field == "e_mail" or $field == "e_bevestiging")
{
if(!preg_match("/^[@A-Za-z 0-9_.%+-]{1,50}$/",$_POST[$field]) )
{
$bad_format[] = $field;
}
}
// woonplaats en geboortedatum worden drop down keuzemenus
//foutberichten en formulier weergeven als het niet klopt
if(@sizeof($blank_array) > 0)
{
echo "<p><b>U heeft de volgende vereiste velden niet ingevuld:</b><br />\n";
//toon lijst met ontbrekende gegevens
foreach($blank_array as $value)
{
echo " {$labels[$value]} <br /> \n";
}
echo "</p>\n";
}
//berichten voor foutieve gegevens
if(@sizeof($bad_format) > 0)
{
echo "<p><b>De volgende velden bevatte incorrecte gegevens</b><br />\n";
//toon lijst met foutieve gegevens
foreach($bad_format as $value)
{
echo " {$labels[$value]} <br /> \n";
}
echo "</p>\n";
}
//formulier opnieuw weergeven
echo "form action='$_SERVER[PHP_SELF]' method='POST'>";
foreach($labels as $field => $label)
{
$clean_data[$field] =
strip_tags(trim($_POST[$field]));
echo "<div class='field'>
<label for='$field'>$label</label>
<input type='text' name='$field' id='$field'
size='65' maxlenght='65'
value='$clean_data[$field]' /></div>\n";
}
echo "<div id='submit'><input type='submit'
value='Registreren' /></div>\n";
echo "</div>\n</form>\n</body>\n</html>";
exit();
}
//als de gegevens goed zijn
echo "<p>Alle gegevens zijn ingevuld</p></body></html>";
?>
Iemand een idee wat er misgaat want ik kom er niet uit!
Bij voorbaat dank!
Maar waar je altijd moet mee beginnen (wanneer je een formulier verwerkt), is dingen in de juiste volgorde zetten.
PHP bovenaan de code
Formulier onderaan de code.
Werk altijd volgens zo'n structuur:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Kris Peeters op 12/11/2013 15:56:05:
Ik ga niet rechtstreeks een antwoord geven.
Maar waar je altijd moet mee beginnen (wanneer je een formulier verwerkt), is dingen in de juiste volgorde zetten.
PHP bovenaan de code
Formulier onderaan de code.
Werk altijd volgens zo'n structuur:
Maar waar je altijd moet mee beginnen (wanneer je een formulier verwerkt), is dingen in de juiste volgorde zetten.
PHP bovenaan de code
Formulier onderaan de code.
Werk altijd volgens zo'n structuur:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Dankjewel voor je reactie! Ik heb de PHP en de form even geswitched en in de goede volgorde gezet. Tevens de request en de header gebruikt, hij doet het echter nog steeds niet.
@kris ik mis de validatie nog.
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
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
<?php
// deze functie controleert of het ingevulde goed is en geeft direct de fouten in de vorm van een array terug.
function validate($name, $email)
{
$errors = array();
if($name == '')
$errors[] = 'U moet een naam opgeven.';
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U dient een GELDIG emailadres op te geven.';
return $errors;
}
// dit is een hulpfunctie om snel de $_POST variabelen in een eigen variabele te zetten
// en als de $_POST variabele niet bestaat dan geven we een beginwaarde.
function getPostValue($name, $default = '')
{
if(isset($_POST[$name]))
$default = $_POST[$name];
return $default;
}
// initialisatie van de variabelen.
$name = getPostValue('name');
$email = getPostValue('email');
// eerst testen of er een POST verzoek is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$errors = validate($name, $email);
if(count($errors) == 0)
{
// Als er geen errors zijn dan gegevens opslaan of verzenden per email daarna door naar een andere pagina.
header('location: thankyou.php');
exit;
}
// als we hier nog komen dan zijn er dus fouten en kunnen we die aan de gebruiker kenbaar maken
echo '<ul>';
foreach($errors as $error)
echo '<li>' . $error . '</li>';
echo '</ul>';
}
?>
<form action="" method="post">
<input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<input type="submit" value="Verzenden" />
</form>
// deze functie controleert of het ingevulde goed is en geeft direct de fouten in de vorm van een array terug.
function validate($name, $email)
{
$errors = array();
if($name == '')
$errors[] = 'U moet een naam opgeven.';
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U dient een GELDIG emailadres op te geven.';
return $errors;
}
// dit is een hulpfunctie om snel de $_POST variabelen in een eigen variabele te zetten
// en als de $_POST variabele niet bestaat dan geven we een beginwaarde.
function getPostValue($name, $default = '')
{
if(isset($_POST[$name]))
$default = $_POST[$name];
return $default;
}
// initialisatie van de variabelen.
$name = getPostValue('name');
$email = getPostValue('email');
// eerst testen of er een POST verzoek is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$errors = validate($name, $email);
if(count($errors) == 0)
{
// Als er geen errors zijn dan gegevens opslaan of verzenden per email daarna door naar een andere pagina.
header('location: thankyou.php');
exit;
}
// als we hier nog komen dan zijn er dus fouten en kunnen we die aan de gebruiker kenbaar maken
echo '<ul>';
foreach($errors as $error)
echo '<li>' . $error . '</li>';
echo '</ul>';
}
?>
<form action="" method="post">
<input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<input type="submit" value="Verzenden" />
</form>
https://www.youtube.com/watch?v=g_r4a-DXA7c
Gewijzigd op 12/11/2013 21:58:16 door Frank Nietbelangrijk
Dankjewel! Het werkt!
@Frank Nietbelangrijk
Hoe kan ik het volgende stukje code implemeteren in jou script wat jij hierboven geschreven heb
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<select id="ddlApkmaand" name="ddlApkmaand" class="datum_maand">
<option value="niet ingevuld">maand</option>
<option value="januari">Januari</option>
<option value="februari">Februari</option>
<option value="maart">Maart</option>
<option value="april">April</option>
<option value="mei">Mei</option>
<option value="juni">Juni</option>
<option value="juli">Juli</option>
<option value="augustus">Augustus</option>
<option value="september">September</option>
<option value="oktober">Oktober</option>
<option value="november">November</option>
<option value="december">December</option>
</select>
<option value="niet ingevuld">maand</option>
<option value="januari">Januari</option>
<option value="februari">Februari</option>
<option value="maart">Maart</option>
<option value="april">April</option>
<option value="mei">Mei</option>
<option value="juni">Juni</option>
<option value="juli">Juli</option>
<option value="augustus">Augustus</option>
<option value="september">September</option>
<option value="oktober">Oktober</option>
<option value="november">November</option>
<option value="december">December</option>
</select>
Gewijzigd op 22/05/2014 17:40:46 door Marcel de Jong
Uitgaande van mijn voorbeeld:
op regel 28:
Code (php)
1
2
3
2
3
<?php
$maand = getPostValue('ddlApkmaand', 'januari'); // <-- mag ook een andere maand zijn als startwaarde..
?>
$maand = getPostValue('ddlApkmaand', 'januari'); // <-- mag ook een andere maand zijn als startwaarde..
?>
en dan vervang je regel 51 t/m 55 voor:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form action="" method="post">
<input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<select id="ddlApkmaand" name="ddlApkmaand" class="datum_maand">
<option value="niet ingevuld">maand</option>
<option value="januari">Januari</option>
<option value="februari">Februari</option>
<option value="maart">Maart</option>
<option value="april">April</option>
<option value="mei">Mei</option>
<option value="juni">Juni</option>
<option value="juli">Juli</option>
<option value="augustus">Augustus</option>
<option value="september">September</option>
<option value="oktober">Oktober</option>
<option value="november">November</option>
<option value="december">December</option>
</select>
<input type="submit" value="Verzenden" />
</form>
<input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<select id="ddlApkmaand" name="ddlApkmaand" class="datum_maand">
<option value="niet ingevuld">maand</option>
<option value="januari">Januari</option>
<option value="februari">Februari</option>
<option value="maart">Maart</option>
<option value="april">April</option>
<option value="mei">Mei</option>
<option value="juni">Juni</option>
<option value="juli">Juli</option>
<option value="augustus">Augustus</option>
<option value="september">September</option>
<option value="oktober">Oktober</option>
<option value="november">November</option>
<option value="december">December</option>
</select>
<input type="submit" value="Verzenden" />
</form>
Maar het stukje tussen de select tags is toch het zelfde? moet daar geen php waarde ingevoegd worden?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form action="" method="post">
<input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<select id="ddlApkmaand" name="ddlApkmaand" class="datum_maand">
<option value="niet ingevuld">maand</option>
<option value="januari">Januari</option>
<option value="februari">Februari</option>
<option value="maart">Maart</option>
<option value="april">April</option>
<option value="mei">Mei</option>
<option value="juni">Juni</option>
<option value="juli">Juli</option>
<option value="augustus">Augustus</option>
<option value="september">September</option>
<option value="oktober">Oktober</option>
<option value="november">November</option>
<option value="december">December</option>
</select>
<input type="submit" value="Verzenden" />
</form>
<input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<select id="ddlApkmaand" name="ddlApkmaand" class="datum_maand">
<option value="niet ingevuld">maand</option>
<option value="januari">Januari</option>
<option value="februari">Februari</option>
<option value="maart">Maart</option>
<option value="april">April</option>
<option value="mei">Mei</option>
<option value="juni">Juni</option>
<option value="juli">Juli</option>
<option value="augustus">Augustus</option>
<option value="september">September</option>
<option value="oktober">Oktober</option>
<option value="november">November</option>
<option value="december">December</option>
</select>
<input type="submit" value="Verzenden" />
</form>
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
// vanaf nu gebruiken we associatieve arrays om de <select>s te vullen!
$maanden = array(
'niet ingevuld' => 'maand',
'januari' => 'Januari',
'februari' => 'Februari',
'maart' => 'Maart',
'april' => 'April',
'mei' => 'Mei',
'juni' => 'Juni',
'juli' => 'Juli',
'augustus' => 'Augustus',
'september' => 'September',
'oktober' => 'Oktober',
'november' => 'November',
'december' => 'December',
);
// deze functie maakt met behulp van een opgegeven array en de standaard geselecteerde optie de HTML aan voor alle <options> van een <select>
function getOptions($array, $selected)
{
$html = '';
foreach($array as $key => $value)
{
$sel = '';
if($selected == $key)
$sel = ' selected="selected"';
$html .= '<option value="' . $key . '"' . $sel . '>' . $value . '</option>';
}
return $html;
}
// deze functie controleert of het ingevulde goed is en geeft direct de fouten in de vorm van een array terug.
function validate($name, $email, $maand)
{
$errors = array();
if($name == '')
$errors[] = 'U moet een naam opgeven.';
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U dient een GELDIG emailadres op te geven.';
if($maand == 'niet ingevuld')
$errors[] = 'U moet een MAAND selecteren.';
return $errors;
}
// dit is een hulpfunctie om snel de $_POST variabelen in een eigen variabele te zetten
// en als de $_POST variabele niet bestaat dan geven we een beginwaarde.
function getPostValue($name, $default = '')
{
if(isset($_POST[$name]))
$default = $_POST[$name];
return $default;
}
// initialisatie van de variabelen.
$name = getPostValue('name');
$email = getPostValue('email');
$maand = getPostValue('ddlApkmaand', 'niet ingevuld');
// eerst testen of er een POST verzoek is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$errors = validate($name, $email, $maand);
if(count($errors) == 0)
{
// Als er geen errors zijn dan gegevens opslaan of verzenden per email daarna door naar een andere pagina.
header('location: thankyou.php');
exit;
}
// als we hier nog komen dan zijn er dus fouten en kunnen we die aan de gebruiker kenbaar maken
echo '<ul>';
foreach($errors as $error)
echo '<li>' . $error . '</li>';
echo '</ul>';
}
?>
<form action="" method="post">
<input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<select id="ddlApkmaand" name="ddlApkmaand" class="datum_maand">
<?php echo getOptions($maanden, $maand); ?>
</select>
<input type="submit" value="Verzenden" />
</form>
// vanaf nu gebruiken we associatieve arrays om de <select>s te vullen!
$maanden = array(
'niet ingevuld' => 'maand',
'januari' => 'Januari',
'februari' => 'Februari',
'maart' => 'Maart',
'april' => 'April',
'mei' => 'Mei',
'juni' => 'Juni',
'juli' => 'Juli',
'augustus' => 'Augustus',
'september' => 'September',
'oktober' => 'Oktober',
'november' => 'November',
'december' => 'December',
);
// deze functie maakt met behulp van een opgegeven array en de standaard geselecteerde optie de HTML aan voor alle <options> van een <select>
function getOptions($array, $selected)
{
$html = '';
foreach($array as $key => $value)
{
$sel = '';
if($selected == $key)
$sel = ' selected="selected"';
$html .= '<option value="' . $key . '"' . $sel . '>' . $value . '</option>';
}
return $html;
}
// deze functie controleert of het ingevulde goed is en geeft direct de fouten in de vorm van een array terug.
function validate($name, $email, $maand)
{
$errors = array();
if($name == '')
$errors[] = 'U moet een naam opgeven.';
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U dient een GELDIG emailadres op te geven.';
if($maand == 'niet ingevuld')
$errors[] = 'U moet een MAAND selecteren.';
return $errors;
}
// dit is een hulpfunctie om snel de $_POST variabelen in een eigen variabele te zetten
// en als de $_POST variabele niet bestaat dan geven we een beginwaarde.
function getPostValue($name, $default = '')
{
if(isset($_POST[$name]))
$default = $_POST[$name];
return $default;
}
// initialisatie van de variabelen.
$name = getPostValue('name');
$email = getPostValue('email');
$maand = getPostValue('ddlApkmaand', 'niet ingevuld');
// eerst testen of er een POST verzoek is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$errors = validate($name, $email, $maand);
if(count($errors) == 0)
{
// Als er geen errors zijn dan gegevens opslaan of verzenden per email daarna door naar een andere pagina.
header('location: thankyou.php');
exit;
}
// als we hier nog komen dan zijn er dus fouten en kunnen we die aan de gebruiker kenbaar maken
echo '<ul>';
foreach($errors as $error)
echo '<li>' . $error . '</li>';
echo '</ul>';
}
?>
<form action="" method="post">
<input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<select id="ddlApkmaand" name="ddlApkmaand" class="datum_maand">
<?php echo getOptions($maanden, $maand); ?>
</select>
<input type="submit" value="Verzenden" />
</form>
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
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
<?php
// Mail opstellen
$to = '[email protected]';
$onderwerp = 'onderhoudsverzoek';
$bericht = "<html><body>";
$bericht .= "<table rules='all' class='ff2 fs10 fc2' cellpadding='10'>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td>Verzoek tot onderhoud: </td></tr>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td>$nbsp;</td></tr>";
$bericht .= "<tr class='ff2 fs12 fc2' ><td>Afspraakgegevens:</td></tr>";
$bericht .= "<tr><td>Type afspraak: </td><td>".($_POST['ddlSoortOnderhoud']). "</td></tr>";
$bericht .= "<tr><td>Type afspraak: </td><td>".($_POST['ddlAfspraakdag'])." / ".($_POST['dllAfspraakmaand']). "</td></tr>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td> </td></tr>";
$bericht .= "<tr class='ff2 fs12 fc2' ><td>Voertuiggegevens: </td></tr>";
$bericht .= "<tr><td>Merk voertuig: </td><td>".($_POST['txtMerk']). "</td></tr>";
$bericht .= "<tr><td>Model/type: </td><td>".($_POST['txtModel'])."</td></tr>";
$bericht .= "<tr><td>Vervaldatum APK: </td><td>".($_POST['ddlApkmaand'])." / ".($_POST['dllApkjaar'])."</td></tr>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td> </td></tr>";
$bericht .= "<tr class='ff2 fs12 fc2' ><td>contactgegevens: </td></tr>";
$bericht .= "<tr><td>Naam: </td><td>".($_POST['txtNaam'])."</td></tr>";
$bericht .= "<tr><td>Adres: </td><td>".($_POST['txtAdres'])."</td></tr>";
$bericht .= "<tr><td>Postcode: </td><td>".($_POST['txtPostcode'])."</td></tr>";
$bericht .= "<tr><td>Woonplaats: </td><td>".($_POST['txtWoonplats'])."</td></tr>";
$bericht .= "<tr><td>Telefoonnummer: </td><td>".($_POST['txtTelefoon'])."</td></tr>";
$bericht .= "<tr><td>Emailadres: </td><td>".($_POST['txtEmail'])."</td></tr>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td> </td></tr>";
$bericht .= "<tr class='ff2 fs12 fc2' ><td>Opmerkingen: </td></tr>";
$bericht .= "<tr><td>eventuele opmerkingen: </td><td>".($_POST['txtExtra'])."</td></tr>";
$bericht .= "</table>";
$bericht .= "</body></html>";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: ".htmlspecialchars($_POST['txtNaam'])."\r\n";
$headers .= "CC: ".htmlspecialchars($_POST['txtEmail'])."\r\n";
mail($to, $onderwerp, $bericht, $headers);
?>
// Mail opstellen
$to = '[email protected]';
$onderwerp = 'onderhoudsverzoek';
$bericht = "<html><body>";
$bericht .= "<table rules='all' class='ff2 fs10 fc2' cellpadding='10'>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td>Verzoek tot onderhoud: </td></tr>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td>$nbsp;</td></tr>";
$bericht .= "<tr class='ff2 fs12 fc2' ><td>Afspraakgegevens:</td></tr>";
$bericht .= "<tr><td>Type afspraak: </td><td>".($_POST['ddlSoortOnderhoud']). "</td></tr>";
$bericht .= "<tr><td>Type afspraak: </td><td>".($_POST['ddlAfspraakdag'])." / ".($_POST['dllAfspraakmaand']). "</td></tr>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td> </td></tr>";
$bericht .= "<tr class='ff2 fs12 fc2' ><td>Voertuiggegevens: </td></tr>";
$bericht .= "<tr><td>Merk voertuig: </td><td>".($_POST['txtMerk']). "</td></tr>";
$bericht .= "<tr><td>Model/type: </td><td>".($_POST['txtModel'])."</td></tr>";
$bericht .= "<tr><td>Vervaldatum APK: </td><td>".($_POST['ddlApkmaand'])." / ".($_POST['dllApkjaar'])."</td></tr>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td> </td></tr>";
$bericht .= "<tr class='ff2 fs12 fc2' ><td>contactgegevens: </td></tr>";
$bericht .= "<tr><td>Naam: </td><td>".($_POST['txtNaam'])."</td></tr>";
$bericht .= "<tr><td>Adres: </td><td>".($_POST['txtAdres'])."</td></tr>";
$bericht .= "<tr><td>Postcode: </td><td>".($_POST['txtPostcode'])."</td></tr>";
$bericht .= "<tr><td>Woonplaats: </td><td>".($_POST['txtWoonplats'])."</td></tr>";
$bericht .= "<tr><td>Telefoonnummer: </td><td>".($_POST['txtTelefoon'])."</td></tr>";
$bericht .= "<tr><td>Emailadres: </td><td>".($_POST['txtEmail'])."</td></tr>";
$bericht .= "<tr class='ff2 fs14 fc2' ><td> </td></tr>";
$bericht .= "<tr class='ff2 fs12 fc2' ><td>Opmerkingen: </td></tr>";
$bericht .= "<tr><td>eventuele opmerkingen: </td><td>".($_POST['txtExtra'])."</td></tr>";
$bericht .= "</table>";
$bericht .= "</body></html>";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: ".htmlspecialchars($_POST['txtNaam'])."\r\n";
$headers .= "CC: ".htmlspecialchars($_POST['txtEmail'])."\r\n";
mail($to, $onderwerp, $bericht, $headers);
?>
Gewijzigd op 23/05/2014 13:48:15 door Marcel de Jong
Aangezien dit een heel ander onderwerp is zou ik je willen vragen hiervoor een nieuw topic aan te maken.