Ik heb op het moment de volgende code

if(isset($_POST['submit']) && $_POST['submit'] == 'Verstuur'){
            
    $naam = stripslashes(trim($_POST['naam']));
    $tussenvoegsel = stripslashes(trim(isset($_POST['tussenvoegsel'])?$_POST['tussenvoegsel']:NULL));
    $achternaam = stripslashes(trim($_POST['achternaam']));
    $gebDatum = stripslashes(trim(isset($_POST['gebdatum'])?$_POST['gebdatum']:NULL));
    $straat = stripslashes(trim(isset($_POST['straat'])?$_POST['straat']:NULL));
    $postcode = stripslashes(trim(isset($_POST['postcode'])?$_POST['postcode']:NULL));
    $huisnummer = stripslashes(trim(isset($_POST['huisnummer'])?$_POST['huisnummer']:NULL));
    $toevoeging = stripslashes(trim(isset($_POST['toevoeging'])?$_POST['toevoeging']:NULL));
    $woonplaats = stripslashes(trim(isset($_POST['woonplaats'])?$_POST['woonplaats']:NULL));
    $email = stripslashes(trim(isset($_POST['email'])?$_POST['email']:NULL));
    $ingDatum = stripslashes(trim($_POST['ingdatum']));
    $geslacht = stripslashes(trim((isset($_POST['geslacht'])?$_POST['geslacht']:NULL)));
    
    //Valideer naam
    if(empty($naam)){
        $naamError = $errors['form']['gNaam'];
        $error = true;
    }
    
    //Valideer achternaam
    if(empty($achternaam)){
        $anaamError = $errors['form']['gAnaam'];
        $error = true;
    }
    
    //Valideer geboorte datum
    if(empty($gebDatum)){
        $gebdateError = $errors['form']['gDatum'];
        $error = true;
    }else{
        $valgebDatum = date_validation($gebDatum);
        
        if($valgebDatum == false){
            $gebdateError = $errors['form']['ongDatum'];
            $error = true;
        }
        
        if($valgebDatum == "Toekomst"){
            $gebdateError = $errors['form']['toekDatum'];
            $error = true;
        }
    }    
    //Valideer straat
    if(!empty($straat)){
        if(!preg_match('/^[a-zA-Z]*$/', $straat)){
            $huisnrError = $errors['form']['ongStraat'];
            $error = true;
        }
    }

    //Valideer huisnummer
    if(!empty($huisnummer)){
        if(!preg_match('/^[0-9]*$/', $huisnummer)){
            $huisnrError = $errors['form']['ongHuisnr'];
            $error = true;
        }
    }
    
    //Valideer toevoeging
    if(!empty($toevoeging)) {
        if(!preg_match('/^[a-zA-Z]*$/', $toevoeging)) {
            $toevgingError = $errors['form']['ongToevging'];
            $error = true;
        }
    }
    
    //Valideer postcode
    if(!empty($postcode)){
        if(!preg_match('/^(\d\d\d\d)[a-zA-Z][a-zA-Z]$/', $postcode)){
            $postcodeError = $errors['form']['ongPostcode'];
            $error = true;
        }
    }
    
    //Valideer woonplaats
    if(!empty($woonplaats)){
        if(!preg_match('/^[a-zA-Z]+$/', $woonplaats)){
        $woonpltsError = $errors['form']['ongWoonplts'];
        $error = true;
        }
    }
    
    //Valideer email
    if(empty($email)){
        $emailError = $errors['form']['gEmail'];
        $error = true;
    }else{
        $checkEmail = test_email($email);
        if($checkEmail=="ongeldig"){
            $emailError = $errors['form']['ongEmail'];
            $error = true;
        }
    }
    
    //Valideer ingangsdatum
    if(empty($ingDatum)){
        $ingdateError = $errors['form']['gDatum'];
        $error = true;
    }else{
        $valIngDatum = date_validation($ingDatum);
        
        if($valIngDatum == false){
            $ingdateError = $errors['form']['ongDatum'];
            $error = true;
        }
        
        if($valIngDatum == "Toekomst"){
            $ingdateError = $errors['form']['toekDatum'];
            $error = true;
        }
    }
    
    //Valideer geslacht
    if(empty($geslacht)){
        $geslachtError = $errors['form']['gGeslacht'];
        $error = true;
    }


Nu wil ik eigenlijk de code versimpelen naar een enkele array zodat het sneller en makkelijker werkt. Hoe zouden jullie dit aanpakken?
Ik zit even in je script te kijken, maar wat wil je precies bereiken?
Je hebt toch als een array: $errors['form']?

Wat opmerkingen:
- gebruik if($_SERVER['REQUEST_METHOD']=="POST") { om te controleren of iets verstuurd is.
- Waarom stripslashes? Zelf raad ik aan om bij de uitvoer de data te beveiligen. En stripslashes lijkt mij overbodig.
Je bedoelt waarschijnlijk dat je de losse variabelen zoals naam, achternaam en huisnummer wilt bundelen in een array.

Als ik de vraag moet beantwoorden dan krijg je een OOP voorbeeld waarin geen array gebruikt wordt maar een object! Ik weet niet of je dat wilt.

Als je met functies wilt gaan werken zie ik wel een reden om die losse variabelen in een array te stoppen omdat je dan de hele array in een keer door kunt geven aan een andere functie.

Gezien je vraagstelling denk ik dat je nog niet erg bekend bent met array's. Ik zou je dan willen vragen om een tut door te lopen waardoor je er bekender mee wordt. Let dan ook even goed op het verschil tussen een numerieke array en een associatieve array..
Allereerst excuses voor de late reactie, aan de andere kant bedankt voor deze informatie.
Ik ben bezig met een opdracht en als feedback kreeg ik: 1.
Gebruik één simpele array voor de foutafhandeling. Geen multidimensionale array.
Het gaat hier om een simpel formulier, u gaat dat onnodig complex maken door een multidimensionale array te gebruiken die absoluut niet nodig is. U moet laten zien dat u het ook anders (en beter) kan doen.

Ik ben inderdaad nog maar een beginner en snap nog niet helemaal wat hiermee bedoelt wordt
Ik heb je code die je gepost hebt even in mijn editor bekeken omdat het dan wat beter leesbaar is.

En ik begrijp je vraag en de opmerking.

Je doet dit:
<?php
$naamError = $errors['form']['gNaam']; // multidimensionale array
?>

Dat heb je niet nodig. Dit is genoeg wordt er gezegd.
<?php
$naamError = $errors['gNaam']; // normale array
?>


Ik zou overigens zelf veel liever zien dat je dit doet:

<?php
$errors['gNaam'] = 'Je hebt geen naam ingevuld.';
?>

Dus net andersom. Zet alle foutmeldingen (stel dat er meer dan 1 ding niet klopt bij het valideren) in een array.
[color=red]EDIT: ik ben er al uit, heb het gedeelte array bij $errors er tussenuit gehaald[/color]

Dank voor de duidelijke uitleg! Voor nu wil ik de eerste oplossing gebruiken aangezien ik daar al veel mee gedaan heb. Ik heb nl bij het html gedeelte de link gelegd voor bijvoorbeeld

<span class = error><?php echo $naamError;?></span>
<label for="form-voornaam">*Naam:</label>
<input type="text" id="form-voornaam" name="naam" value="<?php if($error){echo htmlentities($_POST['naam']);}else{ echo "";}?>">


Hoe pas ik dan het volgende gedeelte hiervoor aan?
$errors = array('form'=>array('gNaam'=>"U heeft geen voornaam ingevuld",
                            'gAnaam'=>"U heeft geen achternaam ingevuld",
                            'gHuisnr'=>"U heeft geen huisnummer ingevuld",
                            'gEmail'=>"U heeft geen e-mail ingevuld",
                            'gDatum'=>"U heeft geen datum opgegeven",
                            'gGeslacht'=>"Kies een geslacht",
                            'ongStraat'=>"Straatnaam mag alleen bestaan uit letters",
                            'ongEmail'=>"E-mail moet 2 op de volgende manier '2 letters'@'2 letters' en eindigen op '.nl'(vb. [email protected])",
                            'ongPostcode'=>"Postcode moet bestaan uit 4 cijfers en 2 letters (vb. 1234ab)",
                            'ongHuisnr'=>"Huisnummer moet bestaan uit alleen nummers",
                            'ongToevging'=>"Toevoeging mag alleen bestaan uit letters",
                            'ongWoonplts'=>"Woonplaats mag alleen bestaan uit letters",
                            'ongDatum'=>"Datum format moet dd-mm-jjjj zijn (vb. 15-05-2017)",
                            'toekDatum'=>"Datum ligt in de toekomst")
                );


Na deze opdracht wil ik mij zeker wat meer gaan verdiepen in de laatste oplossing. Deze ziet er veel minder omslachtig uit?!
Is makkelijker dan je denkt:

<?php
$errors = array(
'gNaam'=>"U heeft geen voornaam ingevuld",
'gAnaam'=>"U heeft geen achternaam ingevuld",
'gHuisnr'=>"U heeft geen huisnummer ingevuld",
'gEmail'=>"U heeft geen e-mail ingevuld",
'gDatum'=>"U heeft geen datum opgegeven",
'gGeslacht'=>"Kies een geslacht",
'ongStraat'=>"Straatnaam mag alleen bestaan uit letters",
'ongEmail'=>"E-mail moet 2 op de volgende manier '2 letters'@'2 letters' en eindigen op '.nl'(vb. [email protected])",
'ongPostcode'=>"Postcode moet bestaan uit 4 cijfers en 2 letters (vb. 1234ab)",
'ongHuisnr'=>"Huisnummer moet bestaan uit alleen nummers",
'ongToevging'=>"Toevoeging mag alleen bestaan uit letters",
'ongWoonplts'=>"Woonplaats mag alleen bestaan uit letters",
'ongDatum'=>"Datum format moet dd-mm-jjjj zijn (vb. 15-05-2017)",
'toekDatum'=>"Datum ligt in de toekomst"
);
"Straatnaam mag alleen bestaan uit letters"
hoezo?
Ik woon aan een straat waar een spatie in zit (of sommigen gebruiken een "-" op die plek.
En ik ken ook zat voorbeelden met cijfers (19 septemberplein in Eindhoven bijvoorbeeld).

En voor woonplaatsen idem: 's-Hertogenbosch bijvoorbeeld, of gewoon Den Bosch.

En er zijn ook wel straten met accent letters: De uitvinder Röntgen heeft vast wel ergens een straat.
En gezien de melding over het mailadres, ben ik ook wel benieuwd naar die check.

Maar kijk ook eens naar de filter functies van PHP: http://php.net/filter-input

Ivo P op 06/09/2017 02:02:50

19 septemberplein in Eindhoven

18 Septemberplein naar onze bevrijdingsdag 18 september 1944.
:-)

Ik ben al zo'n 20 jaar geleden verhuisd en bijna nooit meer terug geweest. Maar qua syntax blijft het gelukkig gelijk.

Bottom line was eigenlijk, dat je niet te strikt moet zijn in dit soort dingen. Niets zo irritant als een formulier min of meer fout in te moeten vullen, omdat de maker van de form bepaalde dingen over het hoofd zag:
- de genoemde karakters als enige toestaan in een veld
- een minimum lengte voor straatnamen (er zijn straatnamen van 1 letter te vinden in Nederland)
- idem voor een naar van 3 letters, waar Jo niet zo'n heel gekke naam is.
- verouderde filtering op een emailadres: bijv. hooguit 4 karakters voor de TLD waar al 10 jaar meer mogelijk zijn.

Topper vond ik wel de Kamer van Koophandel die geen "-" in een emailadres wilde hebben. Waar al mijn toenmalige adressen dat wel hadden.
Ik snap wat jullie bedoelen en ga dit meteen aanpassen!

@Frank, ik wil nog even terug komen op
<?php
$errors['geenvoornaam'] = 'Je hebt geen naam ingevuld.';
?>


ik maak $errors = ""; aan
zorg voor controle verstuurknop
maak $naam aan
Valideer deze naam op bovenstaande manier
en zet het html formulier klaar als volgt:

<span class = error><?php echo $errors['geenvoornaam'];?></span>
<label for="voornaam">*Voornaam:</label>
<input type="text" id="voornaam" name="voornaam" value>


Ik krijg geen meldingen, waar ga ik de fout in, ik zie het even niet meer

Reageren