Functie velden controleren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

David

David

25/05/2007 10:25:00
Quote Anchor link
Goedemorgen,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>.");
    }

?>
 
PHP hulp

PHP hulp

05/05/2024 14:49:19
 
Jacco Engel

Jacco Engel

25/05/2007 10:27:00
Quote Anchor link
"is leeg of niet ingevuld!" ?? Mag jij het verschil even uitleggen :)

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
 
Jacco Engel

Jacco Engel

25/05/2007 10:31:00
Quote Anchor link
Maar david mischien is dit voor jiou een optie ?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>.");
    }

?>
 
David

David

25/05/2007 10:38:00
Quote Anchor link
Moet ik in de functie niet gewoon return $leeg; toevoegen? Ik snap niet zo goed wat ik fout heb gedaan namelijk. Maar bedankt Jacco.

Anders probeer ik jouw functie even. Maar ik wil wel weten wat ik doe i.p.v. het gewoon even kopieren. :)
 
Jacco Engel

Jacco Engel

25/05/2007 10:45:00
Quote Anchor link
Thats the spirit. :)

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 :)
 
David

David

25/05/2007 10:48:00
Quote Anchor link
return $leeg; is inderdaad niet voldoende want dat werkte ook niet.
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
 
Jan Koehoorn

Jan Koehoorn

25/05/2007 10:49:00
Quote Anchor link
Tip:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    $errs
= array ();
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        foreach ($_POST as $key => $value) {
            $value = trim ($value);
            if (empty ($value)) {
                array_push ($errs, '<p>Niets ingevuld bij ' . $key . '</p>');
            }
        }
    }

?>

Nu kun je verderop in je code dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    if (!empty ($errs)) {
        foreach ($errs as $err) {
            echo $err;
        }
    }

?>

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
 
Jacco Engel

Jacco Engel

25/05/2007 10:52:00
Quote Anchor link
@David

Ben je net met functies begonnen :)?
 
David

David

25/05/2007 10:55:00
Quote Anchor link
Ja, de rest van de basis van PHP en SQL snap ik wel maar de zelfgemaakte functions is me altijd een beetje een raadsel geweest en heb ik lang vermeden. Natuurlijk is dat niet nodig want ik weet dat het een hoop werk kan besparen. En nu OOP mijn interesse heeft, zijn functions wel handig dacht ik zo. :)
Gewijzigd op 01/01/1970 01:00:00 door David
 
Jacco Engel

Jacco Engel

25/05/2007 11:09:00
Quote Anchor link
@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
 
Mebus  Hackintosh

Mebus Hackintosh

25/05/2007 11:10:00
Quote Anchor link
ik doe het altijd zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

if(!empty($_POST['waarde']) && strlen(trim($_POST['waarde'])) > 0 ) {

//doorgaan

}

?>
 
David

David

25/05/2007 11:19:00
Quote Anchor link
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
 
David

David

25/05/2007 14:36:00
Quote Anchor link
Dit werk nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>.");
    }
}

?>


Als ik dan bepaalde velde wil controleren kan ik dan dit doen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$velden
= array('veld1','veld2');
if(in_array($_POST,$velden)
{

$leeg = veldcheck($_POST);
}

?>


Naja zoiets dan...
 
Jacco Engel

Jacco Engel

25/05/2007 14:47:00
Quote Anchor link
Nope dan kun je het beter zo doen :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>.");
    }
}

?>


hopelijk kom je er zo uit en anders weet je me te vinden :)
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
 
David

David

25/05/2007 15:20:00
Quote Anchor link
Dat gaat niet goed, want ik krijg deze error:

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
 
David

David

25/05/2007 15:31:00
Quote Anchor link
Ik snap het al. Je had een typefout gemaakt. De 2e parameter van de functie stond verkeerd. $contole_velden moet natuurlijk $controle_velden worden.

Het werk nu! Bedankt voor je hulp Jacco!!
 
Jacco Engel

Jacco Engel

25/05/2007 15:34:00
Quote Anchor link
graag gedaan.

snap je het nu ook :)?

Edit:
ff typos in de code aangepast
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
 
David

David

25/05/2007 15:46:00
Quote Anchor link
Ja, anders had ik de fout toch ook nooit gevonden ;)

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). :)
 
Jacco Engel

Jacco Engel

25/05/2007 15:55:00
Quote Anchor link
Beginners snappen de basisfuncties amper, laat staan eigen functies :P
 
David

David

29/05/2007 09:32:00
Quote Anchor link
Nou heb ik het formulier ook uitgebried met radiobuttons. Die pakt ie niet, wat op zich logisch is want allebei de buttons hebben een value.

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
 
Jacco Engel

Jacco Engel

29/05/2007 09:37:00
Quote Anchor link
Zowiezo niet met een if-je :) Kijk eens naar het switch statement.

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
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.