checkinput-functie
De code van de functie:
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
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
<?php
function checkInput() {
/*
Auteur: Willem-Aart van Dorpen
Datum: 21-12-2006
Omschrijving: functie controleert of formulier-velden die met een
POST request zijn verzonden allemaal ingevuld zijn,
als dat wel zo is geeft 'ie de waarde true, en anders
stuurt 'ie de array met velden die nog niet ingevuld zijn.
Gebruik: checkInput( (namen van formulier velden <puntkomma> namen met markup) );
*/
//Vang de argumenten af die gebruikt worden tijdens het
//aanroepen van de functie
$funcArgs = func_get_args();
//Zorg dat de argumenten ge-explode worden op een puntkomma, en zet
//de uitkomst in een multi-dimensional array
foreach($funcArgs as $key => $value) {
$arrInput[] = explode(";",$funcArgs[$key]);
}
//Verwijder alle spaties en witregels vóór en ná alle items
//in de $_POST array
foreach($_POST as $key => $value) {
$_POST[$key] = trim($value);
}
//Maak een array aan waarin alle velden komen te staan die
//leeg zijn
$arrEmptyField = array();
//Loop de gehele input van de functie door, en mochten
//er velden zijn die nog niet ingevuld zijn, zet die in
//de array $arrEmptyField.
foreach($arrInput as $input) {
if(empty($_POST[$input[0]])) {
$arrEmptyField[] = $input[1];
}
}
//Als alle velden ingevuld zijn, return de waarde true,
//anders een array met veldnamen
if(count($arrEmptyField) > 0) {
return $arrEmptyField;
} else {
return true;
}
}
?>
function checkInput() {
/*
Auteur: Willem-Aart van Dorpen
Datum: 21-12-2006
Omschrijving: functie controleert of formulier-velden die met een
POST request zijn verzonden allemaal ingevuld zijn,
als dat wel zo is geeft 'ie de waarde true, en anders
stuurt 'ie de array met velden die nog niet ingevuld zijn.
Gebruik: checkInput( (namen van formulier velden <puntkomma> namen met markup) );
*/
//Vang de argumenten af die gebruikt worden tijdens het
//aanroepen van de functie
$funcArgs = func_get_args();
//Zorg dat de argumenten ge-explode worden op een puntkomma, en zet
//de uitkomst in een multi-dimensional array
foreach($funcArgs as $key => $value) {
$arrInput[] = explode(";",$funcArgs[$key]);
}
//Verwijder alle spaties en witregels vóór en ná alle items
//in de $_POST array
foreach($_POST as $key => $value) {
$_POST[$key] = trim($value);
}
//Maak een array aan waarin alle velden komen te staan die
//leeg zijn
$arrEmptyField = array();
//Loop de gehele input van de functie door, en mochten
//er velden zijn die nog niet ingevuld zijn, zet die in
//de array $arrEmptyField.
foreach($arrInput as $input) {
if(empty($_POST[$input[0]])) {
$arrEmptyField[] = $input[1];
}
}
//Als alle velden ingevuld zijn, return de waarde true,
//anders een array met veldnamen
if(count($arrEmptyField) > 0) {
return $arrEmptyField;
} else {
return true;
}
}
?>
Uiteraard ben je nu wel benieuwd hoe je dit kunt gebruiken, vandaar een voorbeeld:
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
<?php
$_POST['straatnaam'] = "Dorpsstraat 53";
$_POST['huisnummer'] = ""; //oeps, vergeten :-) !
$_POST['telnr'] = "0528-358486";
$formCheck = checkInput("straatnaam;Straatnaam","huisnummer;Huisnummer","telnr;Telefoonnummer");
if($formCheck != 1) {
echo "Je hebt de volgende velden niet ingevuld: <br />";
foreach($formCheck as $value) {
echo $value."<br />";
}
} else {
echo "Formulier succesvol gevalideerd.";
}
?>
$_POST['straatnaam'] = "Dorpsstraat 53";
$_POST['huisnummer'] = ""; //oeps, vergeten :-) !
$_POST['telnr'] = "0528-358486";
$formCheck = checkInput("straatnaam;Straatnaam","huisnummer;Huisnummer","telnr;Telefoonnummer");
if($formCheck != 1) {
echo "Je hebt de volgende velden niet ingevuld: <br />";
foreach($formCheck as $value) {
echo $value."<br />";
}
} else {
echo "Formulier succesvol gevalideerd.";
}
?>
Normaal doe je dit natuurlijk met een formulier, maar voor de handigheid heb ik maar even wat $_POST data gefaked. Ga er maar eens mee spelen, en als je het niet begrijpt dan hoor ik het wel.