if functie combineren
Ik wil graag mijn formulier controleren op lege velden.
Nu heb ik een code, alleen heb ik dit per veld gemaakt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
//controleren of Gebruikersnaam is ingevuld.
if (empty($_post['username'])){
//als veld leeg is
echo "user ID is niet ingevuld";
//als veld is ingevuld ga verder
}else{
echo "ga verder";
}
//controleren of Wachtwoord is ingevuld.
if (empty($_post['password'])){
//als veld leeg is
echo "Wachtwoord is niet ingevuld";
//als veld is ingevuld ga verder
}else{
echo "ga verder";
}
?>
//controleren of Gebruikersnaam is ingevuld.
if (empty($_post['username'])){
//als veld leeg is
echo "user ID is niet ingevuld";
//als veld is ingevuld ga verder
}else{
echo "ga verder";
}
//controleren of Wachtwoord is ingevuld.
if (empty($_post['password'])){
//als veld leeg is
echo "Wachtwoord is niet ingevuld";
//als veld is ingevuld ga verder
}else{
echo "ga verder";
}
?>
Kan ik deze 2 combineren?
Ik wil een aparte error voor elke veld, dus niet:
Code (php)
Groetjes bryan
Gewijzigd op 09/07/2014 10:27:34 door Bryan De Baar
U bedoeld dus:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
//errors instellen d.m.v. variable
$no_user_id = ['no userid'];
$no_password = ['no password'];
$no_user_id = "geen gebruikersnaam ingevuld";
$no_password = "geen wachtwoord ingevuld";
$aErrors = array();
if(!isset($_POST['password']) OR $_POST['password'] == ''){
$aErrors[] = 'no password';
}
if(!isset($_POST['userid']) OR $_POST['userid'] == ''){
$aErrors[] = 'no userid';
}
if(empty($aErrors)){
// ga door
}
else{
// toon eenmalig de errors
}
?>
//errors instellen d.m.v. variable
$no_user_id = ['no userid'];
$no_password = ['no password'];
$no_user_id = "geen gebruikersnaam ingevuld";
$no_password = "geen wachtwoord ingevuld";
$aErrors = array();
if(!isset($_POST['password']) OR $_POST['password'] == ''){
$aErrors[] = 'no password';
}
if(!isset($_POST['userid']) OR $_POST['userid'] == ''){
$aErrors[] = 'no userid';
}
if(empty($aErrors)){
// ga door
}
else{
// toon eenmalig de errors
}
?>
Wat is het nut van de regels 3 t/m 6 in jouw code / waar ga je die 4 variabelen gebruiken?
Kijk eens op http://www.phptuts.nl/view/39/8/ hoe ze daar controleren op lege velden.
Gewijzigd op 09/07/2014 11:54:07 door Obelix Idefix
Nu heb ik nog een vraag betreft dit.
Nu wil ik dat als een veld leeg is er een variabel uit komt
bijvoorbeeld:
deze variable heb ik verder in de code nodig, het is een variable die dus van waarde moet veranderen.
Gr. Bryan
Niels Kieviet op 09/04/2011 14:43:45:
@Santhe en anderen..
empty is een functie die naar het schijnt niet altijd het juiste resultaat oplevert. Daarom kan er beter gebruik worden gemaakt van:
Daarnaast kan (nog) beter controleren met de ctype_* functie en de is_* functies. En niet vergeten strlen.
Hier wordt empty ook 'uitgelegd / afgekraakt': klik
Maar voordat je controleer of je $_POST variabele volstaat aan de door jouw gestelde condities moet hij wel eerst bestaan. Dat moet je controleren met isset.
empty is een functie die naar het schijnt niet altijd het juiste resultaat oplevert. Daarom kan er beter gebruik worden gemaakt van:
Daarnaast kan (nog) beter controleren met de ctype_* functie en de is_* functies. En niet vergeten strlen.
Hier wordt empty ook 'uitgelegd / afgekraakt': klik
Maar voordat je controleer of je $_POST variabele volstaat aan de door jouw gestelde condities moet hij wel eerst bestaan. Dat moet je controleren met isset.
Zocht overigens een ander recenter bericht hierover.
Bryan De Baar op 09/07/2014 17:42:34:
Nu wil ik dat als een veld leeg is er een variabel uit komt
deze variable heb ik verder in de code nodig, het is een variable die dus van waarde moet veranderen.
deze variable heb ik verder in de code nodig, het is een variable die dus van waarde moet veranderen.
Begrijp je vraag of probleem niet. Je kent een waarde toe aan de variabele status; die heb je dan toch beschikbaar in je code?
PHP heeft een aantal dingen die ze er beter nooit in hadden kunnen brengen. empty() is er inderdaad één van wat mij betreft. Gebruik isset() om te controleren of een variabele (of index van een array) wel bestaat of niet, lege strings met $string == '' en numerieke waardes met vergelijking-operators als <, >, >=, <=, == en !=.
Perfect als je weet wat het doorlaat en wat niet.
Bryan De Baar op 09/07/2014 17:42:34:
Nu wil ik dat als een veld leeg is er een variabel uit komt
Bedoel je dit?
Code (php)
Toevoeging op 09/07/2014 18:39:50:
- SanThe - op 09/07/2014 18:38:45:
Ik gebruik empty() de laatste tijd juist erg veel.
Perfect als je weet wat het doorlaat en wat niet.
Perfect als je weet wat het doorlaat en wat niet.
Ik heb het werkelijk nog nooit gebruikt en ik mis het ook niet :-)
Natuurlijk gebruik ik eerst de isset functie om te kijken of de variable bestaat.
Als die bestaan gaat hij door naar de volgende handeling.
Zodra er op submit word gedrukt moet worden bekeken of alles in ingevuld.
Dit kan door de empty functie of door een array te maken en de isset te gebruiken.(als ik het goed heb)
Als de velden niet goed zijn ingevuld wil ik dat de variable $log_status als waarde '0' krijgt
Op het moment dat alles goed is ingevuld moet de variable de waarde '1' krijgen
Zelf dacht ik dit te kunnen maken met bijvoorbeeld:
Code (php)
Zit ik in de goede richting te denken?
Gr. Bryan
Succes vanavond met voetbal!
Bryan De Baar op 09/07/2014 19:24:20:
Zodra er op submit word gedrukt moet worden bekeken of alles in ingevuld.
Dit kan door de empty functie of door een array te maken en de isset te gebruiken.(als ik het goed heb)
Dit kan door de empty functie of door een array te maken en de isset te gebruiken.(als ik het goed heb)
Hier ga je dus de fout in.
Stel je hebt de volgende input:
Hoeveel kinderen heeft u? [...........]
Hier kan een waarde 0, 1, 2 en hoger worden ingevuld.
indien hier 0 wordt ingevuld zal empty($_POST['kinderen']) hierop TRUE geven als zijnde dat dit veld leeg is terwijl dat niet zo is.
Je kunt dit veld beter valideren door dit te doen:
Code (php)
1
2
3
4
2
3
4
<?php
if(!ctype_digit($_POST['kinderen']))
$errors[] = 'Vul een getal in van 0 of hoger.';
?>
if(!ctype_digit($_POST['kinderen']))
$errors[] = 'Vul een getal in van 0 of hoger.';
?>
ctype_digit checkt of er alleen cijfers zijn ingevuld.
Gewijzigd op 09/07/2014 21:47:06 door Frank Nietbelangrijk
Wat u aangeeft is niet wat ik bedoel,
Het gaat mij erom wat na het valideren gebeurt.
Misschien een ander voorbeeldje:
Als velden zijn ingevuld wil ik dat daar een variable uitkomt bijvoorbeeld geef $status = 1
Als de velden niet goed zijn ingevuld geef $status = 0
De variable is $status alleen veranderd de waarde in 0 of 1
Code (php)
Alleen wat jij nu doet ongeacht wat de place is geef waard $log_status = '0'; aan.
Wat je kan doen is
Yes dit is precies wat ik bedoel!
Dus wat er nu gebeurt is:
-De empty kijk of er geen lege velden zijn.
-De isset kijkt of het wel /!niet bestaat.
Volledig staat er dus: als place leeg is of niet bestaat geef 0 anders geef 1.
Stel dat ik er ooit eens een 3e variable wil aanplakken moet ik dan gebruik maken van de functie elseif?
Gr. Bryan
Als je eerst empty() gebruikt is daarna een isset() oerbodig. Als de var niet bestaat geeft empty() true.
Bedankt voor de reactie, ik bedoel meer in de richting:
Code (php)
Bij de code van H Kse word de status gelijk 1 omdat er niets is ingevuld.
Als ik nu een 0 status wil gegeven bij het openen of vernieuwen van de pagina en pas de 1 (als niet is ingevuld) en 2(als iets gevuld is) na de submit.
Zelf had ik dit in gedachte alleen werkt dit niet en weet niet waarom :-(
Code (php)
Gewijzigd op 10/07/2014 11:59:02 door Bryan De Baar
Waarom zou je aan het begin een 0 toekennen, als je toch al weet dat het of een 1 of een 2 wordt?
Waarschijnlijk heeft dit met een andere functie te maken die hij wilt aanroepen d.m.v. de status: 0, 1 of 2.
Voordat er op de submit word geklikt moet hij status 0 aanbieden.
Nadat er op de submit word geklikt word gekeken of de velden na behoren zijn ingevuld, is dit zo geef dan status 1
Is dit niet het geval geef dan status 2.
als ik denk wat het is wilt hij dus de code zo maken
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//controleer of de submit is geklikt
if(!isset($_POST['Submit'])){
//als er niet op de submit is geklikt geef dan een 0
$log_status ='0';
// anders ga verder naar deze stap
}else{
//controleer op leeg veld
if (empty($_POST['place']) OR !isset($_POST['place']))
//indien veld leeg is geef 1
{
$log_status = '1';
}
//anders geef een 2
else
{
$log_status ='2';
}
?>
//controleer of de submit is geklikt
if(!isset($_POST['Submit'])){
//als er niet op de submit is geklikt geef dan een 0
$log_status ='0';
// anders ga verder naar deze stap
}else{
//controleer op leeg veld
if (empty($_POST['place']) OR !isset($_POST['place']))
//indien veld leeg is geef 1
{
$log_status = '1';
}
//anders geef een 2
else
{
$log_status ='2';
}
?>
Zelf ben ik ook nog niet goed thuis in php maar als ik dit allemaal voorbij zie komen, denk ik dat Bryan dit bedoeld?
Yes dat klopt, ik weet dat de status inderdaad 1 of 2 gaat worden, maar wil dus daarvoor een status 0 hebben ook ales de pagina vernieuwd word of word terug gestuurd.
Code (php)
<form method="POST">
<input type="text" name="place">
<input type="submit" name="submit">
</form>