Functie velden controleren
Ik heb een functie gemaakt om de velden van een formulier te controleren, maar lege velden komen gewoon door de check heen. De functie is simpel en ziet er zo uit.
Vervolgens wil ik alle melding laten zien en de gebruiker terug sturen naar het formulier om de ontbrekende velden in te vullen.
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
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
<?php
$leeg = array();
function veldcheck($waarde)
{
if(trim($waarde) == "")
{
$leeg[] = "Het veld: '".$waarde."' is leeg of niet ingevuld!";
}
}
if(isset($_POST['versturen']))
{
veldcheck($_POST['voorletters en naam']);
veldcheck($_POST['werkadres/kamernummer']);
veldcheck($_POST['telefoonnummer']);
veldcheck($_POST['het betreft']);
veldcheck($_POST['dienst']);
if(!empty($leeg))
{
foreach($leeg as $sleutel)
{
echo "<p class=\"melding\">".$sleutel."</p>";
}
exit("<a href=\"javascript:history.back()\">Vul de verplichte velden verder in</a>.");
}
?>
$leeg = array();
function veldcheck($waarde)
{
if(trim($waarde) == "")
{
$leeg[] = "Het veld: '".$waarde."' is leeg of niet ingevuld!";
}
}
if(isset($_POST['versturen']))
{
veldcheck($_POST['voorletters en naam']);
veldcheck($_POST['werkadres/kamernummer']);
veldcheck($_POST['telefoonnummer']);
veldcheck($_POST['het betreft']);
veldcheck($_POST['dienst']);
if(!empty($leeg))
{
foreach($leeg as $sleutel)
{
echo "<p class=\"melding\">".$sleutel."</p>";
}
exit("<a href=\"javascript:history.back()\">Vul de verplichte velden verder in</a>.");
}
?>
En zo gaat het inderdaad niet werken. Je kunt namelijk geen variabele buiten een functie defineren en binnen een functie gebruiken (altans neit op deze manier) volgens mij
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
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
<?php
function veldcheck($waarde_array)
{
foreach($waarde_array as $veldnaam => $waarde)
{
if(trim($waarde) == "")
{
$leeg[] = "Het veld: '".$veldnaam."' is leeg of niet ingevuld!";
}
}
return $leeg ;
}
if(isset($_POST['versturen']))
{
$leeg = veldcheck($_POST) ;
if(!empty($leeg))
{
foreach($leeg as $sleutel)
{
echo "<p class=\"melding\">".$sleutel."</p>";
}
exit("<a href=\"javascript:history.back()\">Vul de verplichte velden verder in</a>.");
}
?>
function veldcheck($waarde_array)
{
foreach($waarde_array as $veldnaam => $waarde)
{
if(trim($waarde) == "")
{
$leeg[] = "Het veld: '".$veldnaam."' is leeg of niet ingevuld!";
}
}
return $leeg ;
}
if(isset($_POST['versturen']))
{
$leeg = veldcheck($_POST) ;
if(!empty($leeg))
{
foreach($leeg as $sleutel)
{
echo "<p class=\"melding\">".$sleutel."</p>";
}
exit("<a href=\"javascript:history.back()\">Vul de verplichte velden verder in</a>.");
}
?>
Anders probeer ik jouw functie even. Maar ik wil wel weten wat ik doe i.p.v. het gewoon even kopieren. :)
Je zou inderdaad ook gewoon return leeg kunnen toevoegen. Dan moet je echter ook 5 if statements toevoegen (of 1 lange :P) om te controleren of alles is ingevuld.
Op de manier die ik heb gebruikt heb ik het grootste gedeelte van je code intact gelaten.
Het enige dat ik heb gedaan is dat er nu een array in kan die volledig gecotroleerd word. Nu is het een herbruikbare functie die je ook op andere plekken kunt gebruiken.
No offence maar de manier waarop jij het had was erg ineffiecient :)
Als je een formulier had gehad met 20 velden had het je een hele hoop regels gekost terwijl het nu met precies dezelfde functie kan.
Ik heb je eerste code bekeken en als je goed naar die van mij kijkt weet ik zeker dat je het snapt :) heb namelijk helemaal niets gebruikt wat je niet kent. :) (Uitspraak gebaseert op jou script :P)
Mocht je nog specifieke vragen hebben stel ze hier of op pm :)
Ik wil niet alle velden controleren alleen die ik uitkies. Werkt het dan ook? Nou goed ik zal eerst zelf proberen, dus..... ik laat nog wel van mij horen, bedankt voor je ondersteuning. Dat waardeer ik :D
Gewijzigd op 01/01/1970 01:00:00 door David
Code (php)
Nu kun je verderop in je code dit doen:
Edit:
Als je alleen bepaalde velden wilt checken, maak je een array aan met daarin de namen van die velden. Met in_array() kun je dan checken of een veld verplicht is.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Ben je net met functies begonnen :)?
Gewijzigd op 01/01/1970 01:00:00 door David
Als je 1 keer functies en classes gewent bent wil je nooit meer anders :)
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
Jan Koehoorn schreef op 25.05.2007 10:49:
Tip:
Edit:
Als je alleen bepaalde velden wilt checken, maak je een array aan met daarin de namen van die velden. Met in_array() kun je dan checken of een veld verplicht is.
Dan heb ik toch geen functie meer nodig. Dan gebruik je foreach? Ik ben even helemaal de weg kwijt.... :S :P
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
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
<?php
function veldcheck($waarde_array)
{
foreach($waarde_array as $veldnaam => $waarde)
{
if(trim($waarde) == "")
{
$leeg[] = "Het veld: '".$veldnaam."' is leeg of niet ingevuld!";
}
}
return $leeg ;
}
if(isset($_POST['versturen']))
{
$leeg = veldcheck($_POST) ;
if(!empty($leeg))
{
foreach($leeg as $sleutel)
{
echo "<p class=\"melding\">".$sleutel."</p>";
}
exit("<a href=\"javascript:history.back()\">Vul de verplichte velden verder in</a>.");
}
}
?>
function veldcheck($waarde_array)
{
foreach($waarde_array as $veldnaam => $waarde)
{
if(trim($waarde) == "")
{
$leeg[] = "Het veld: '".$veldnaam."' is leeg of niet ingevuld!";
}
}
return $leeg ;
}
if(isset($_POST['versturen']))
{
$leeg = veldcheck($_POST) ;
if(!empty($leeg))
{
foreach($leeg as $sleutel)
{
echo "<p class=\"melding\">".$sleutel."</p>";
}
exit("<a href=\"javascript:history.back()\">Vul de verplichte velden verder in</a>.");
}
}
?>
Als ik dan bepaalde velde wil controleren kan ik dan dit doen?
Code (php)
Naja zoiets dan...
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
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
<?php
function veldcheck($waarde_array,$controle_velden)
{
foreach($waarde_array as $veldnaam => $waarde)
{
if(trim($waarde) == "" && in_array($veldnaam,$controle_velden))
{
$leeg[] = "Het veld: '".$veldnaam."' is leeg of niet ingevuld!";
}
}
return $leeg ;
}
if(isset($_POST['versturen']))
{
$velden = array('veld1','veld2');
$leeg = veldcheck($_POST,$velden);
if(!empty($leeg))
{
foreach($leeg as $sleutel)
{
echo "<p class=\"melding\">".$sleutel."</p>";
}
exit("<a href=\"javascript:history.back()\">Vul de verplichte velden verder in</a>.");
}
}
?>
function veldcheck($waarde_array,$controle_velden)
{
foreach($waarde_array as $veldnaam => $waarde)
{
if(trim($waarde) == "" && in_array($veldnaam,$controle_velden))
{
$leeg[] = "Het veld: '".$veldnaam."' is leeg of niet ingevuld!";
}
}
return $leeg ;
}
if(isset($_POST['versturen']))
{
$velden = array('veld1','veld2');
$leeg = veldcheck($_POST,$velden);
if(!empty($leeg))
{
foreach($leeg as $sleutel)
{
echo "<p class=\"melding\">".$sleutel."</p>";
}
exit("<a href=\"javascript:history.back()\">Vul de verplichte velden verder in</a>.");
}
}
?>
hopelijk kom je er zo uit en anders weet je me te vinden :)
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
Warning: in_array() [function.in-array]: Wrong datatype for second argument in ***/test.php on line 16
Warning: in_array() [function.in-array]: Wrong datatype for second argument in ***/test.php on line 16
Warning: in_array() [function.in-array]: Wrong datatype for second argument in ***/test.php on line 16
Je zei zelf dat je variabelen niet buiten een functie mag definieren. Mogen arrays wel dan? Ik ga even puzzelen...
Gewijzigd op 01/01/1970 01:00:00 door David
Het werk nu! Bedankt voor je hulp Jacco!!
snap je het nu ook :)?
Edit:
ff typos in de code aangepast
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
Ik snap nu ook beter hoe je functies moet toepassen, volgensmij maakte ik altijd een fout en nu begrijp ik de essentie van functies veel beter. Voor mij was dit leerzaam (ja ik ben een beginner). :)
Beginners snappen de basisfuncties amper, laat staan eigen functies :P
Moet ik dan in de functie een een if-je toevoegen voor om de radiobuttons te controleren of is dat weer te omslachtig. (misschien met isset?)
Gewijzigd op 01/01/1970 01:00:00 door David
Verder ga ik even voor je denken.
ps: laat ff zien hoe je de radiobuttons hebt opgebouwd
ps: ps: Wat heb je zelf al geprobeerd
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel