Toon posts:

Form validation help

Pagina: 1
Acties:

Verwijderd

Topicstarter
Okies, ik wil dus dat iemand een error krijgt bij het invullen van een vak.
Ter voorbeeld "adres".

Wil daarbij dat als iemand alleen bijv "Bouwlaan" een error kijgt met "nummer vergeten" en bij alleen "456" de error "naam vergeten".

Om de een of ander reden lukt het wel als ik een van de 2 doe (error checking dus). Maar als ik ze beide doe; dus "Bouwlaan 34", krijg ik een error (wat dus niet de bedoeling is) van "naam niet gevonden".

De codering is als volgt

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function check_field1($field_name_1){
if(!preg_match("/[^a-zA-Z]+$/s",$field_name_1)) return TRUE;
else return FALSE;
}

function check_field3($field_name_3){
if(!preg_match("/[^0-9]+$/ ",$field_name_3)) return TRUE;
else return FALSE;
}

if(!$adres){ 
        echo "Adres is een verplicht veld. Vul het aub beneden in.<br />"; 
    } 
    if(!check_field1($adres) || !check_field3($adres)){
    if(!check_field1($adres)){
echo "Verkeerde invoer van adres: geen naam.<br>";
}
    if(!check_field3($adres)){
    echo "Verkeerde invoer van adres: geen nummer<br>";
    }
    }


Hulp is graag welkom want ik zie het probleem niet :(

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
preg_match("/[^a-zA-Z]+$/s",$field_name_1)
Zo'n $ betekent dat je er op matched dat $field_name_1 letters aan het einde van de string heeft. Dat is bij "Bouwlaan 34" niet het geval, want die heeft cijfers aan het eind. Probeer eens:
preg_match("/^[^a-zA-Z]+/s",$field_name_1)
Zie ook http://www.php.net/manual/en/pcre.pattern.syntax.php

  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
probeer het eens zo:

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
function check_begins_with_letters ($subject)
{
    return preg_match('/^[a-zA-Z]+/',$subject)
}

function check_ends_on_digits ($subject)
{
    return preg_match('/[0-9]+$/ ',$subject)
}

if (!isset($adres))
{ 
    echo "Adres is een verplicht veld. Vul het aub beneden in.<br />"; 
} 
elseif (!check_field1($adres) || !check_field3($adres))
{
    if(!check_field1($adres))
    {
        echo "Verkeerde invoer van adres: geen naam.<br>";
    }
    if(!check_field3($adres))
    {
        echo "Verkeerde invoer van adres: geen nummer<br>";
    }
}
else
{
    // doe je ding
}


let verder een beetje op je naamgeving.
en moet adres niet $_POST['adres'] zijn? of heb je een goede reden om $adres te gebruiken?

[ Voor 8% gewijzigd door Apollo_Futurae op 24-04-2003 20:52 ]

Pas de replâtrage, la structure est pourrie.


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Het is trouwens niet zo dat elk adres er als 'straatnaam nummer' uitziet. Het nummer kan namelijk nog achtervoegsels bevatten die er aan vast zitten (a, b, c enz) en toevoegingen in de vorm van een bijv. nw. (bijv.: straat 45 rood).

Beter is dus misschien een wat ruimere methode te kiezen.

  • AceRimmer
  • Registratie: Maart 2001
  • Laatst online: 18:38

AceRimmer

What a guy...

Of nog leuker: 2e Dwarsstraat 34.
Begint dus met een cijfer...

Smoke me a kipper, I'll be back for breakfast


Verwijderd

Mijn advies: maak aparte inputvakjes voor straatnaam en huisnummer, en evt. zelfs 1 voor toevoegsels.

Verwijderd

Topicstarter
Hmmz inderdaad. Zelfs de oplossing van SWfreak lijkt dan niet te werken :(
Dan maar even aparte vakjes maken :(

Toch bedankt voor alle hulp
en moet adres niet $_POST['adres'] zijn? of heb je een goede reden om $adres te gebruiken?
Jah, is korter dus heb het ff vernoemd zo. Maar moet het ook weer hernoemen naar $_session dalijk.

[ Voor 43% gewijzigd door Verwijderd op 24-04-2003 23:40 ]

Pagina: 1