Validatie script
Er zitten echter fouten in maar ik kan ze niet achterhalen. Iemand een idee?
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
<?php
if($_POST['sent'] == 1) {
if($_POST['color'] == NULL) {
$message1 = 'Please enter a color';
$class1 = 'bad';
}else{
$myColor = $_POST['color'];
$message1 = 'Success!';
$class1 = 'good';
}
if($_POST['user'] == NULL) {
$message2 = 'Please enter your name';
$class2 = 'bad';
}else{
$myName = $_POST['user'];
$message2 = 'Success!';
$class2 = 'good';
}
}
?>
if($_POST['sent'] == 1) {
if($_POST['color'] == NULL) {
$message1 = 'Please enter a color';
$class1 = 'bad';
}else{
$myColor = $_POST['color'];
$message1 = 'Success!';
$class1 = 'good';
}
if($_POST['user'] == NULL) {
$message2 = 'Please enter your name';
$class2 = 'bad';
}else{
$myName = $_POST['user'];
$message2 = 'Success!';
$class2 = 'good';
}
}
?>
Gewijzigd op 26/06/2012 12:09:03 door Dennis Fei
Dennis Fei op 26/06/2012 11:20:05:
Er zitten echter fouten in maar ik kan ze niet achterhalen. Iemand een idee?
En waarom zitten er, volgens jou, fouten in? Misschien handig om dat ook even aan te geven...
Controleren doe je, volgens mij, overigens met isset.
Zoveel gebruikers online en niemand die reageert. Dan moet het script wel heel erg slecht zijn. Of misschien omdat je zelf niet eerst heb gekeken wat er wel en niet werkt. Wat heb je zelf al uit uitgezocht? Misschien een PHP-beginners handboek kopen? Online tutorials op phphulp doorlezen? FAQ?
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
//array aanmaken
$errors = array();
// controleren of er gepost is doe je zo
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if( !isset($_POST['user']) || $_POST['user'] == '' )
{
// Naam is niet ingevuld
$errors[] = 'hier de error melding';
}
if( !isset($_POST['color']) || $_POST['color'] == '' )
{
// Kleur niet opgegeven
$errors[] = 'hier de error melding';
}
if( count($errors) == 0 )
{
// hier je script runnen als alles goed is
}
else
{
$errors[] = 'je krijgt de volgende foutmeldingen!';
}
}
?>
//array aanmaken
$errors = array();
// controleren of er gepost is doe je zo
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if( !isset($_POST['user']) || $_POST['user'] == '' )
{
// Naam is niet ingevuld
$errors[] = 'hier de error melding';
}
if( !isset($_POST['color']) || $_POST['color'] == '' )
{
// Kleur niet opgegeven
$errors[] = 'hier de error melding';
}
if( count($errors) == 0 )
{
// hier je script runnen als alles goed is
}
else
{
$errors[] = 'je krijgt de volgende foutmeldingen!';
}
}
?>
#fouten weergeven
Code (php)
Gewijzigd op 26/06/2012 16:26:41 door Reshad F
CODE tags!
Gewijzigd op 26/06/2012 13:01:40 door Reshad F
Chi Lion op 26/06/2012 13:00:56:
reshad, foei!
CODE tags!
CODE tags!
Sorry hoor, maar ik schoot hiervan behoorlijk in de lach.
Super ;-)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// check if set
if (isset($_POST['sent'])) {
// execute validation
if ($_POST['user'] == "" && $_POST['color'] == "") {
$message = "Please enter color and name";
} else if ($_POST['user'] == "" && $_POST['color'] != "") {
$message = "Please enter a name";
} else if ($_POST['user'] != "" && $_POST['color'] == "") {
$message = "Please enter a color";
} else {
// validated - OK
}
}
?>
// check if set
if (isset($_POST['sent'])) {
// execute validation
if ($_POST['user'] == "" && $_POST['color'] == "") {
$message = "Please enter color and name";
} else if ($_POST['user'] == "" && $_POST['color'] != "") {
$message = "Please enter a name";
} else if ($_POST['user'] != "" && $_POST['color'] == "") {
$message = "Please enter a color";
} else {
// validated - OK
}
}
?>
isSet controlle en moet je niet kijken met isset of een formulier verzonden is, maar met:
Vervolgens zou ik niet else if doen, maar meteen alles kijken. Is wel altijd zo fijn als je alle fouten meteen in 1 keer krijgt.
Dan moet je van $message een array maken (en dan even hernoemen naar $messages) en dan elke keer een item aan de message toevoegen.
Vervolgens kijk je of hij leeg is met count en dan kun je de code plaatsen bijv 'validated - OK'.
Eigenlijk heeft Reshad hier dus al de correcte code geplaatst en begrijp ik echt niet waarom je nu nogmaals een foutere code plaatst.
Offtopic:
Ja, ik kraak hier jou weer af en ik reageer weer alleen op jou berichtje, maar nee dat doe ik niet omdat jij het bent. Als Reshad, Piet, Henk of Jan dezelfde code had geplaatst had ik hetzelfde gezet. Voel je niet persoonlijk aangevallen, maar zie het als punten om je code te verbeteren, en her en der misschien een beetje van jezelf
Reshad, die else op regel 24 staat daar een beetje dom... Als er een error is ga je die hele variabele weer reseten en plaats je daar een nieuwe error in? waarschijlijk bedoel je $errors[], maar alsnog is het dan een vreemde if. Waarom nog een error plaatsen als er een error is? Volgens mij kan die gewoon helemaal weg.
B Polak, even een tip: spring je code wat netter in, dan wordt het veel beter leesbaar. Tevens mis je de Vervolgens zou ik niet else if doen, maar meteen alles kijken. Is wel altijd zo fijn als je alle fouten meteen in 1 keer krijgt.
Dan moet je van $message een array maken (en dan even hernoemen naar $messages) en dan elke keer een item aan de message toevoegen.
Vervolgens kijk je of hij leeg is met count en dan kun je de code plaatsen bijv 'validated - OK'.
Eigenlijk heeft Reshad hier dus al de correcte code geplaatst en begrijp ik echt niet waarom je nu nogmaals een foutere code plaatst.
Offtopic:
Ja, ik kraak hier jou weer af en ik reageer weer alleen op jou berichtje, maar nee dat doe ik niet omdat jij het bent. Als Reshad, Piet, Henk of Jan dezelfde code had geplaatst had ik hetzelfde gezet. Voel je niet persoonlijk aangevallen, maar zie het als punten om je code te verbeteren, en her en der misschien een beetje van jezelf
Reshad, die else op regel 24 staat daar een beetje dom... Als er een error is ga je die hele variabele weer reseten en plaats je daar een nieuwe error in? waarschijlijk bedoel je $errors[], maar alsnog is het dan een vreemde if. Waarom nog een error plaatsen als er een error is? Volgens mij kan die gewoon helemaal weg.
Gewijzigd op 26/06/2012 16:24:05 door Wouter J
ja, je hebt gelijk het moest een toevoeging zijn aan de error page.. had het even snel overgetikt ^^
waarom klopt ie niet? Omdat hij nu die melding als laatst weergeeft. Dat staat een beetje vreemd:
- U heeft geen naam ingevuld
- U heeft geen kleur ingevuld
- U krijgt de volgende foutmeldingen
Als je dit alsnog zou willen, zou ik niet doen wat die laatste melding hoort niet in een lijst, zal je het moeten doen met array_unshift.
Gewijzigd op 26/06/2012 16:31:16 door Wouter J
Ik ben het met je eens dat het zoveel mogelijk scheiden van talen zeer zeker goed is maar om nu voor dat beetje html elke keer alles te sluiten en her openen is wat overdreven.
Mijn eerste voorbeeld was wel een beetje teveel op elkaar gepropt. Op zijn minst kun je de foreach eruit slopen. Dat scheelt weer wat geopen en gesluit.
Code (php)
Of als je PHP5.4.* gebruikt:
Code (php)
En Twig is een template taal die gebruikt wordt in Symfony. Ik ben er erg tevreden over, zie ook de website: http://twig.sensiolabs.org/
Bedankt voor de link, ik zal er vanavond eens naar kijken.
Nee, maar ik plaats tegenwoordig al wel in mijn berichten mogelijkheden voor het script in PHP5.4.*. Zo heb je iets om vooruit te kijken en is het berichtje later ook nog te gebruiken.
Wouter J op 26/06/2012 16:23:45:
B Polak, even een tip: spring je code wat netter in, dan wordt het veel beter leesbaar. Tevens mis je de isSet controlle en moet je niet kijken met isset of een formulier verzonden is, maar met:
Ok thanks!
Uiteraard laat ik codes verspringen.
Echter weet ik nog niet hoe ik het moet laten verspringen op dit forum.
Ik zoek het straks wel uit.
En ieder zijn methode van code schrijven. Maar ik waardeer je feedback.
Ik zal het meenemen.
Gewijzigd op 26/06/2012 18:33:41 door B Polak
Wouter J op 26/06/2012 16:29:45:
Nu klopt hij nog steeds niet. Tevens zal ik die melding gewoon in de HTML plaatsen, zoiets zal de designer moeten regelen, niet de developer.
waarom klopt ie niet? Omdat hij nu die melding als laatst weergeeft. Dat staat een beetje vreemd:
Als je dit alsnog zou willen, zou ik niet doen wat die laatste melding hoort niet in een lijst, zal je het moeten doen met array_unshift.
waarom klopt ie niet? Omdat hij nu die melding als laatst weergeeft. Dat staat een beetje vreemd:
- U heeft geen naam ingevuld
- U heeft geen kleur ingevuld
- U krijgt de volgende foutmeldingen
Als je dit alsnog zou willen, zou ik niet doen wat die laatste melding hoort niet in een lijst, zal je het moeten doen met array_unshift.
ah ja hehe, je kan hem ook weglaten ik had het maar als voorbeeld even snel getikt voor hem je kan er ook iets in zetten als. bericht niet verstuurd. dan past het weer wel.