Avatar billede tobrukDk Novice
15. marts 2012 - 18:14 Der er 9 kommentarer og
2 løsninger

fejl box frem vise på samme side

det er sådan at i stede for at sende over til en anden siden hvor den viser fejl så gør det på samme side f.eks har man glemt Password så kommer det frem nede i 1 box ..


    <?
    $email = $_POST["email"];
    $password = $_POST["password"];
    $gentag = $_POST["gentag"];
    $errorCount = 0;
    if($email == "")
    {
    echo "Du skal indtaste et brugernavn.<br>";
    $errorCount++;
    }
    if($password == "")
    {
    echo "Du skal indtaste et password.<br>";
    $errorCount++;
    }
    if($gentag == "" || $gentag != $password)
    {
    echo "De to passwordfelter skal have ens indhold.<br>";
    $errorCount++;
    }
    if($errorCount == 0)
    {
    $password = sha1($password);
    $insert = mysql_query("INSERT INTO brugere (email,password) VALUES ('$email','$password')");
    if(!$insert)
    echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    else
    echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
    }
    ?>



Det her skal ligge op i databasen,



    <div id="box">
    <ul>
    <li>Fejl her</li>
    </ul>
    </div>



Hvis der kommer en eller flere fejl ind så skal den ud skrive det ind i <li>Fejl her</li>


    <form action="" method="post">
    <input type="text" name="email" placeholder="Email Adresse">
    <br>
    <input type="password" name="password" placeholder="Adgangskode">
    <br>
    <input type="password" name="gentag" placeholder="Gentag Adgangskode">
    <br>
    <input type="submit" value="Opret">
    </form>



Hvordan skal jeg bygge det op ?
Avatar billede olsensweb.dk Ekspert
15. marts 2012 - 19:02 #1
istedet for at udskrive dem med det samme skla du lægge din fejl besked ind i et array, som du udskriver til sidst
lidt hurtigt QAD

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
    </script>
</head>
<body>
<?
    if(isset($_POST["email"])){
        $email = $_POST["email"];
        $password = $_POST["password"];
        $gentag = $_POST["gentag"];
        $errorCount = 0;
        $errorarray = array();
        if($email == "") {
            $errorarray[] = "Du skal indtaste et brugernavn.<br>";
            $errorCount++;
        }
        if($password == "")    {
            $errorarray[] = "Du skal indtaste et password.<br>";
            $errorCount++;
        }
        if($gentag == "" || $gentag != $password)    {
            $errorarray[] = "De to passwordfelter skal have ens indhold.<br>";
            $errorCount++;
        }
        if($errorCount == 0){
        /* db ikke afprøvet
            $password = sha1($password);
            $insert = mysql_query("INSERT INTO brugere (email,password) VALUES ('$email','$password')");
            if(!$insert)
            echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
            else
            echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
        */
        }
        $errorstring="<div id='box'><ul>\n";
        for($i=0;$i<$errorCount;$i++){ // $errorCount => antallet af fejlbeskeder (længden af fejl array)
            $errorstring.="<li>".$errorarray[$i]."</li>\n";
        }
        $errorstring.="</ul></div>\n";   
        echo $errorstring;
    }
    ?>   
    <form action="" method="post">
    <input type="text" name="email" placeholder="Email Adresse">
    <br>
    <input type="password" name="password" placeholder="Adgangskode">
    <br>
    <input type="password" name="gentag" placeholder="Gentag Adgangskode">
    <br>
    <input type="submit" value="Opret">
    </form>
</body>
</html>
Avatar billede DeeDawg Nybegynder
15. marts 2012 - 19:30 #2
Som ronols siger, vil det være optimalt at benytte et array. Jeg ville dog have gjort således

<?php
    if(!empty($_POST)){
        $email = $_POST['email'];
        $password = $_POST['password'];
        $gentag = $_POST['gentag'];
       
        $errors = array(
            "email"    => "Du skal indtaste et brugernavn.",
            "password" => "Du skal indtaste et password.",
            "gentag"  => "De to passwordfelter skal have ens indhold."
        );
       
        if(!empty($email)){ unset($errors['email']); }
        if(!empty($password)){ unset($errors['password']); }
        if(!empty($gentag) && $gentag == $password){ unset($errors['gentag']); }
       
        if(empty($errors)){
            $password = sha1($password);
            $insert = mysql_query("INSERT INTO brugere (email,password) VALUES ('$email', '$password')");
           
            if(!$insert){
                die("Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a>");
            } else {
                echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br />";
            }
        } else {
            // olebole skal dog have credit, for linjen herunder. :)
            echo "<div id=\"box\"><ul><li>".implode("</li><li>", $errors)."</li></ul></div>";
        }
    }
?>

Men det kunne da være du lige skulle få læst olebole's guide om MySQLi. :)
Avatar billede tobrukDk Novice
15. marts 2012 - 19:31 #3
Jeg skal bare tag /*.....*/ væk hvis man gør det rigtigt? altså gør det hele email og password og gentag password.. ?
Avatar billede tobrukDk Novice
15. marts 2012 - 19:37 #4
ja jeg tænkt nok at jeg skulle bruge array men vist ikke lige hvordan jeg skulle gøre det :(
Avatar billede tobrukDk Novice
15. marts 2012 - 19:52 #5
#2


<?php
            if(!empty($_POST)){
                $email = $_POST['email'];
                $password = $_POST['password'];
                $gentag = $_POST['gentag'];
               
                $errors = array(
                    "email"    => "Du skal indtaste et brugernavn.",
                    "password" => "Du skal indtaste et password.",
                    "gentag"  => "De to passwordfelter skal have ens indhold."
                );
               
                if(!empty($email)){ unset($errors['email']); }
                if(!empty($password)){ unset($errors['password']); }
                if(!empty($gentag) && $gentag == $password){ unset($errors['gentag']); }
               
                if(empty($errors)){
                    $password = sha1($password);
                    $insert = mysql_query("INSERT INTO brugere (email,password) VALUES ('$email', '$password')");
                   
                    if(!$insert){
                        die("Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a>");
                    } else {
                        echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br />";
                    }
                } else {
        ?>
            <div id="box">
                    <ul>
                        <li><?php echo $errors;?></li>
                    </ul>
            </div>
        <?php
       
            }
        }
        ?>


Nu kommer den bare frem og skriver "array" hvorfor gøre den det?
Avatar billede DeeDawg Nybegynder
15. marts 2012 - 19:58 #6
Fordi det er et array, og du derfor ikke bare kan få dataen ud på den måde. Du er enten nødt til at lave et loop, eller bruge den metode jeg gav dig i mit indlæg. :)
Avatar billede tobrukDk Novice
15. marts 2012 - 20:00 #7
Takker og vil du have noget for det ?? :)
Avatar billede DeeDawg Nybegynder
15. marts 2012 - 21:07 #8
Jo tak. ;)
Avatar billede DeeDawg Nybegynder
15. marts 2012 - 21:08 #9
Men synes, du skal dele dem op, og give ronols halvdelen, hvis han vil have dem. :)
Avatar billede tobrukDk Novice
15. marts 2012 - 21:20 #10
Nemlig det vil jeg også gøre :D
Avatar billede olsensweb.dk Ekspert
16. marts 2012 - 13:38 #11
#3
ja hvis du vil indsætte data i db skal du fjerne
/* db ikke afprøvet
og */

ved udskrivning af fejl ville jeg nok ligge det ind i en else

if($errorCount == 0){
....  db code .....
}
else{
    // udskrivning med en for loop
    /*
    $errorstring="<div id='box'><ul>\n";
    for($i=0;$i<$errorCount;$i++){ // $errorCount => antallet af fejlbeskeder (længden af fejl array)
        $errorstring.="<li>".$errorarray[$i]."</li>\n";
    }
    $errorstring.="</ul></div>\n";   
    echo $errorstring;
    */
    // udskrivning med implode
    echo "<div id=\"box\"><ul><li>".implode("</li><li>", $errorarray)."</li></ul></div>";   
}
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