Avatar billede BrJoe Nybegynder
25. oktober 2009 - 22:01 Der er 13 kommentarer og
1 løsning

if, elseif, else ?!?!

Jeg postede oprindeligt det her script inde i Reg. Expressions og fik afklaret mine preg_matches fint derinde.. Problemet er nu PHP, derfor poster jeg også lige herinde for at få hjælp til det sidste..

Dette script:


        <?php
   
            if(isset($_POST['submit'])) {
               
                if(empty($_POST['fornavn']) ||
                empty($_POST['efternavn']) ||
                empty($_POST['brugernavn']) ||
                empty($_POST['password']) ||
                empty($_POST['alder']) ||
                empty($_POST['email']) ||
                empty($_POST['adresse']) ||
                empty($_POST['postnr']) ||
                empty($_POST['omraade']) ||
                empty($_POST['tlf'])) {
               
                    echo "<br />Du skal udfylde alle felter.";   
                   
                }
               
                if (!preg_match("/^[a-z0-9_-]{3,16}$/", trim(strip_tags($_POST['brugernavn'])))) {
               
                    echo "<br />Udfyld venligst dit brugernavn korrekt!";
               
                }
               
                if (!preg_match("/^[a-z0-9_-]{6,18}$/", trim(strip_tags($_POST['password'])))) {
               
                    echo "<br />Udfyld venligst dit password korrekt!";
               
                }

                if (!preg_match("/^[1-9]{2,2}$/", trim(strip_tags($_POST['alder'])))) {
               
                    echo "<br />Udfyld venligst din alder korrekt!";
               
                }
                   
                if (!preg_match("/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/", trim(strip_tags($_POST['email'])))) {
                   
                    echo "<br />Udfyld venligst din email korrekt!";
               
                }

                if (!preg_match("/^[0-9]{4,4}$/", trim(strip_tags($_POST['postnr'])))) {
                   
                    echo "<br />Udfyld venligst dit postnr korrekt!";
               
                }
               
                if (!preg_match("/^[0-9]{8,8}$/", trim(strip_tags($_POST['tlf'])))) {
                   
                    echo "<br />Udfyld venligst dit tlf nummer korrekt!";
               
                }
                             
                $fornavn = $_POST['fornavn'];
                $efternavn = $_POST['efternavn'];
                $brugernavn = $_POST['brugernavn'];
                $password = $_POST['password'];
                $alder = $_POST['alder'];
                $email = $_POST['email'];
                $adresse = $_POST['adresse'];
                $postnr = $_POST['postnr'];
                $omraade = $_POST['omraade'];
                $tlf = $_POST['tlf'];
                   
                $result = mysql_query("INSERT INTO users
                                      (fornavn,
                                      efternavn,
                                      brugernavn,
                                      password,
                                      alder,
                                      email,
                                      adresse,
                                      postnr,
                                      omraade,
                                      tlf)
                                      VALUES
                                      ('$fornavn',
                                      '$efternavn',
                                      '$brugernavn',
                                      '$password',
                                      '$alder',
                                      '$email',
                                      '$adresse',
                                      '$postnr',
                                      '$omraade',
                                      '$tlf')")
                or die (mysql_error());
               
                echo "<script type=\"text/javascript\">window.location = \"index.php\"</script>";
               
                }
   
        ?>


Virker helt fint mht. validering osv..

Mit problem står nu i at når jeg har indtastet noget forkert i et af felterne og mine reg. expressions echo'er ud at der er fejl, det er perfekt og virker, men min javascript redirecter mig videre til min index.php selvom der er fejl, så jeg når sådan set kun at se mine validerings echo'er et øjeblik før den sender mig videre.. Den skal jo ikke sende mig videre hvis der er fejl?!

Nogen der kan se hvad jeg gør forkert her?

Tak på forhånd.
Brian.
Avatar billede repox Seniormester
25. oktober 2009 - 22:08 #1
Fordi at du echo'er kun dine fejl ud, men fortsætter uagtet med at indsætte i databasen og udskrive din javascript stump.
Avatar billede michael_stim Ekspert
25. oktober 2009 - 22:10 #2
Det er som du skriver. Du starter din validering med if, derefter skal de andre have else if og til sidst else hvis det går godt. Men forstår ikke hvorfor du redirecter med javascript, og jeg forstår heller ikke hvorfor du ikke laver første check på klienten med javascript. Nu bliver siden reloadet hele tiden.
Avatar billede michael_stim Ekspert
25. oktober 2009 - 22:12 #3
OBS. Med første check mener jeg ikke første textfelt. Men først checke med javascript og derefter PHP.
Avatar billede dkfire Nybegynder
25. oktober 2009 - 22:14 #4
Du bør samtidig med at du skriver en fejlbesked sætte en variabel som indikere at der er sket en fejl.
Så kan du tjekke denne variabel og afgøre om der skal indsættes noget i din database og brugeren skal sendes videre eller om der skal ske noget andet.

Kun lige et kort udsnit:
<?php
            $error = 0; 
            if(isset($_POST['submit'])) {
             
                if(empty($_POST['fornavn']) ||
                empty($_POST['efternavn']) ||
                empty($_POST['brugernavn']) ||
                empty($_POST['password']) ||
                empty($_POST['alder']) ||
                empty($_POST['email']) ||
                empty($_POST['adresse']) ||
                empty($_POST['postnr']) ||
                empty($_POST['omraade']) ||
                empty($_POST['tlf'])) {
             
                    echo "<br />Du skal udfylde alle felter.";
                    $error = 1; 
                 
                }
                ........
               
                if(!$error){
                    // Ingen fejl
                    $result = mysql_query(.....)
                    echo "<script type=\"text/javascript\">window.location = \"index.php\"</script>";
                }
Avatar billede BrJoe Nybegynder
25. oktober 2009 - 22:23 #5
dkfire jeg gjorde som du sagde, men nu kommer den med fejlen:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '´++0', 'dgssdg', '23', 'brian@mail' at line 15

:-S
Avatar billede BrJoe Nybegynder
25. oktober 2009 - 22:26 #6
Eller, det her er præcis hvad den skriver:


Udfyld venligst dit brugernavn korrekt!You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '´++0', 'dgssdg', '23', 'brian-zet@hotm' at line 15

Så altså echo'et kommer frem i toppen, men så kommer der noget fejl pludselig? :-S
Avatar billede BrJoe Nybegynder
25. oktober 2009 - 22:26 #7
Flot jeg skriver et svar....
Avatar billede dkfire Nybegynder
25. oktober 2009 - 22:35 #8
Altså, tror ikke helt du gør som jeg foreslog.
Det var kun et lille udsnit af kode jeg skrev, du skal selv sætte $error ind i alle de andre if-sætninger.
Dvs hver gang der findes en fejl, så sætter du $error til 1.
Det skulle meget gerne gøre at når der er en fejl, så gemmes der ikke noget i mysql og brugeren sendes ikke videre.

Hvis det ikke virker bliver du nød til at vise noget kode igen, da jeg ikke er så god til tankelæsning over internettet.
Avatar billede BrJoe Nybegynder
25. oktober 2009 - 22:46 #9
Ja det er nok mig der er helt på afveje her..


        <?php
           
            $error = 0;
            if(isset($_POST['submit'])) {
               
                if(empty($_POST['fornavn']) ||
                empty($_POST['efternavn']) ||
                empty($_POST['brugernavn']) ||
                empty($_POST['password']) ||
                empty($_POST['alder']) ||
                empty($_POST['email']) ||
                empty($_POST['adresse']) ||
                empty($_POST['postnr']) ||
                empty($_POST['omraade']) ||
                empty($_POST['tlf'])) {
               
                    echo "<br />Du skal udfylde alle felter.";   
                    $error = 1;
                   
                }
               
                if(!$error){
                    if (!preg_match("/^[a-z0-9_-]{3,16}$/", trim(strip_tags($_POST['brugernavn'])))) {
                   
                        echo "<br />Udfyld venligst dit brugernavn korrekt!";
                   
                    }
                }
               
                if(!$error){
                    if (!preg_match("/^[a-z0-9_-]{6,18}$/", trim(strip_tags($_POST['password'])))) {
                   
                        echo "<br />Udfyld venligst dit password korrekt!";
                   
                    }
                }

                if(!$error){
                    if (!preg_match("/^[1-9]{2,2}$/", trim(strip_tags($_POST['alder'])))) {
                   
                        echo "<br />Udfyld venligst din alder korrekt!";
                   
                    }
                }
               
                if(!$error){
                    if (!preg_match("/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/", trim(strip_tags($_POST['email'])))) {
                       
                        echo "<br />Udfyld venligst din email korrekt!";
                   
                    }
                }
               
                if(!$error){
                    if (!preg_match("/^[0-9]{4,4}$/", trim(strip_tags($_POST['postnr'])))) {
                       
                        echo "<br />Udfyld venligst dit postnr korrekt!";
                   
                    }
                }
               
                if(!$error){
                    if (!preg_match("/^[0-9]{8,8}$/", trim(strip_tags($_POST['tlf'])))) {
                       
                        echo "<br />Udfyld venligst dit tlf nummer korrekt!";
                   
                    }
                }
               
                if(!$error){
                             
                $fornavn = $_POST['fornavn'];
                $efternavn = $_POST['efternavn'];
                $brugernavn = $_POST['brugernavn'];
                $password = $_POST['password'];
                $alder = $_POST['alder'];
                $email = $_POST['email'];
                $adresse = $_POST['adresse'];
                $postnr = $_POST['postnr'];
                $omraade = $_POST['omraade'];
                $tlf = $_POST['tlf'];
                   
                $result = mysql_query("INSERT INTO users
                                      (fornavn,
                                      efternavn,
                                      brugernavn,
                                      password,
                                      alder,
                                      email,
                                      adresse,
                                      postnr,
                                      omraade,
                                      tlf)
                                      VALUES
                                      ('$fornavn',
                                      '$efternavn',
                                      '$brugernavn',
                                      '$password',
                                      '$alder',
                                      '$email',
                                      '$adresse',
                                      '$postnr',
                                      '$omraade',
                                      '$tlf')")
                or die (mysql_error());
                echo "<script type=\"text/javascript\">window.location = \"index.php\"</script>";
               
                }
               
            }
   
        ?>

Avatar billede dkfire Nybegynder
25. oktober 2009 - 22:52 #10
Det er hverken det jeg viste dig eller det jeg har beskrevet som du har gjort.
Prøv igen at læse det jeg skriver og forsøg igen.
Avatar billede BrJoe Nybegynder
25. oktober 2009 - 22:56 #11
Kommer for at få hjælp og hvis jeg ikke har forstået det ordenligt nok, kan jeg ligesom ikke sidde og gætte mig til det. Jeg prøver at forstå det så godt jeg kan og har prøvet flere metoder med det du skriver, men får det ikke til at virke.
Avatar billede BrJoe Nybegynder
25. oktober 2009 - 23:21 #12
Gjorde som michael_stim sagde, det var bare det som skulle til :-)

Hvis du ligger et svar michael_stim..
Avatar billede michael_stim Ekspert
26. oktober 2009 - 12:28 #13
Ellers tak, samler ikke på point ;o)
Avatar billede Slettet bruger
26. oktober 2009 - 14:21 #14
En uhensigtsmæssighed:
- Sørg for at samle alle fejlene op i én besked, så brugeren kan få det hele at vide på én gang. Det er røvirriterende at få af vide at man har gjort noget galt - igen og igen og igen.

Forsimplet eksempel:

$fejl = "";

if ($navn=="")
  $fejl += "\\n - Mangler navn";

if ($postnr=="")
  $fejl += "\\n - Mangler postnummer";

if ($by=="")
  $fejl += "\\n - Mangler by";

...

if ($fejl != "")
    echo ("<html><body><script>alert('Ikke opdateret fordi der:$fejl');history.back(1)</script></body></html>");
else
    { Alles in Ordnung }
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