Avatar billede clausga Nybegynder
03. maj 2005 - 13:45 Der er 11 kommentarer

tjekke om felter er udfyldt

Jeg har den funktion i javascript men det er ikke alle browsere det virker i...

hvordan kan jeg lave den funktion i PHP så den skriver hvad der mangler at blive udfyldt på siden:

felterne er

navn
adresse
postnr
by
Avatar billede Slettet bruger
03. maj 2005 - 14:15 #1
Du kunne vel gøre noget ala:

<?PHP
function chech() {
    $field = array("navn","adresse","postnr","by");
    for($i=0;$i<count($field);$i++) {
   
        $current = $field[$i];
        if(empty($_GET[$current])) {
            $res .= "<p>Du har ikke udfyldt feltet $field[$i]</p> \n";
        }
    }
   
    return $res;
}

echo chech();
?>

husk at ændre $_GET til $_POST hvis du benytter denne metode i stedet.
Avatar billede Slettet bruger
03. maj 2005 - 14:22 #2
Med dette eksempel kan du se hvordan du kan arbejde videre med de postede værdier hvis felterne er udfyldt korrekt.

<?PHP
function check() {
    $field = array("navn","adresse","postnr","by");
    for($i=0;$i<count($field);$i++) {
   
        $current = $field[$i];
        if(empty($_GET[$current])) {
            $res .= "<p>Du har ikke udfyldt feltet $field[$i]</p> \n";
        }
    }
   
    if(!empty($res)) {
        return $res;
    } else {
        return true;
    }
}

if(check() == 1) {
    echo "<p>udfyldt korrekt, så her kan vi gøre noget med informationerne</p>";
} else {
    echo check();
}
?>
Avatar billede clausga Nybegynder
03. maj 2005 - 14:36 #3
Min form er

<form action="sessionkunde.php" method="post">
<input type="text" name="navn" size="30">
<input type="text" name="adresse" size="30">
<input type="text" name="city" size="30">
<input type="text" name="tlf" size="30">
<input type="submit" value="Næste trin">
</form>

det må også meget gerne være så den tjekker at telefonnummeret er tal og er er KUN er 8 cifre og at emailen har @
Avatar billede Slettet bruger
03. maj 2005 - 15:31 #4
Så skal din funktion se sådan ud:

<?PHP
function check() {

    // Her definers felterne fra input feltet.
    // Felter i arrayet skal blot tjekke om der er skrevet noget.
    // phone tester at der kun er tal og 8 cifre.
    // mail tester om det er en gyldig email addresse.
    $field = array("navn","adresse","city");
    $phone = "tlf";
    $mail  = "email";
   

    for($i=0;$i<count($field);$i++) {
 
        $current = $field[$i];
        if(empty($_POST[$current])) {
            $res .= "<p>Du har ikke udfyldt feltet $field[$i]</p> \n";
        }
    }

    if(!preg_match("/[0-9]{8}$/", $_POST[$phone])) {
        $res .= "<p>Telefon må kun indeholde tal, og må kun være på 8 cifre.</p>";
    }

    if (!preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9._%-]+\.[A-Z0-9._%-]{2,4}$/i", $_POST[$mail])) {
        $res .= "<p>Du har indtastet en ugyldig e-mail</p>";
    }
 
    if(!empty($res)) {
        return $res;
    } else {
        return true;
    }
}

if(check() == 1) {
    echo "<p>udfyldt korrekt, så her kan vi gøre noget med informationerne</p>";
} else {
    echo check();
}
?>
Avatar billede clausga Nybegynder
03. maj 2005 - 15:41 #5
det vil sige at

echo "<p>udfyldt korrekt, så her kan vi gøre noget med informationerne</p

skal laves om til header:side.php...

for at få den til at skifte side
Avatar billede Slettet bruger
03. maj 2005 - 15:48 #6
Tjae.. kommer an på hvordan du laver det.
PHP er serverside i modsætning til javascript - så når brugeren trykker Næste trin vil vedkommende ende på siden sessionkunde.php hvor du så kan bruge ovenstående funktion.

Jeg lavede engang et tilmeldingssystem hvor jeg for brugervenligheden og for min egen dovenskab lavede det i javascript - da det er klart det nemmeste, da du kan behandle dataet inden der bliver submittet.
Jeg smed en <noscript> ind og fortalte at javascript skulle være aktiveret.
Samt jeg disablede submitknappen med normalt html.
Når siden blev indlæst enablede jeg knappen med javascript.

På den måde var jeg sikker på at hvis en bruger submittede formen havde han også javascript aktiveret, og derved blev der altid testet om felterne var korrekt udfyldt.
Avatar billede clausga Nybegynder
03. maj 2005 - 16:04 #7
men hvis jeg laver en header videre så får jeg vel ikke mine informationer med videre fra formfelterne ?
Avatar billede Slettet bruger
03. maj 2005 - 16:41 #8
så kan du jo bruge:

header("Location: foo.php?navn=$_POST[navn]&tlf=$_POST[tlf]");
exit;
Avatar billede clausga Nybegynder
04. maj 2005 - 11:02 #9
synes ikke den der tjekker telefonnr virker optimalt ?

fx. kan man godt skrive +451234569 eller 123456789904555222

det skal være så der KUN er 8 TAL
Avatar billede hammerhead Nybegynder
04. maj 2005 - 11:08 #10
For at begrænse input til 8 simpelt:

<input type="text" maxlength="8" name="tlf" size="30">
Avatar billede clausga Nybegynder
04. maj 2005 - 11:12 #11
ja det kunne man selv også men derfor kan man stadig godt skrive +
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester