Avatar billede webcreator Nybegynder
04. juli 2003 - 11:56 Der er 12 kommentarer og
2 løsninger

While - tjekker om bruger og mail eksistere i DB

Hej.

Koden :

    while($data = mysql_fetch_row($query)){
          if(strtoupper($data[0]) == $tmp_usr){
          $findes = true;
          break;
          }
    }

if ($findes) {
echo "findes";
}


Der tjekkes, om brugeren eksistere. Jeg har nu forsøgt mig lidt frem og tilbage, med at få den til at tjekke i feltet mail også. Men kan ikke få det til at virke. Pt. har jeg en while-løkke, som godt nok tjekke om der er identiske poster i tabellen - men hvis det ikke er den sidste post, så fortsætter den bare til slutningen (tror jeg). Kan ses her :

$tmp_usr  = strtoupper($user);  # Omdanner brugerens brugernavn til STORE BOGSTAVER
                        $tmp_mail = strtoupper($mail);  # Omdanner brugerens email adresse til STORE BOGSTAVER
   
                        $query = mysql_query("select * from users") or die(mysql_error());
                       
                        while ($data = mysql_fetch_array($query)) {
                              $userdb = strtoupper($data["user"]);
                              $maildb = strtoupper($data["mail"]);
                             
                                if ($userdb != $tmp_usr) {
                             
                                  if ($maildb != $tmp_mail) {
                                     
                                      # Hvis alt gik godt, lagres data i databasen
                                      $psw1 = md5("$psw1"); # Password krypters
                                      $insertSQL = "insert into users (navn, adre, city, aldr, user, mess, pass, mail, hide, icqm, msnm, http, udda, kort, dato, IPnr)
                                                                values ('$navn', '$adre', '$city', '$aldr', '$user', '$velkomst', '$psw1', '$mail', '$hide', '$icqm', '$msnm', '$http', '$udda', '$kort', now(), '$IPnr')";
                                      mysql_query($insertSQL) or die (mysql_error());
                                     
                                      mysql_close($conn);
                                           
                                      header("location: logiin.php?uds=Virkede...");
                                     
                                  } else {
                                          $fejl = true;
                                          $uds = "Brugernavn taget";
                                  }
                                 
                                } else {
                                    $fejl = true;
                                    $uds = "E-mail i brug";
                                }
Avatar billede webcreator Nybegynder
04. juli 2003 - 11:58 #1
Hm, ikke helt vellykket paste af koden...

Men jeg tror at jeg skal bruge en break-ting, hvis den finder noget i databasen. Kan det passe ?
Avatar billede webcreator Nybegynder
04. juli 2003 - 12:01 #2
Ahh, satte en break ned i else-sætningen. Nu tjekker den da for e-mail :D
Avatar billede webcreator Nybegynder
04. juli 2003 - 12:05 #3
Sjovt nok , så får jeg at vide, at mail adressen er i brug, selv om det er email adressen..
Avatar billede webcreator Nybegynder
04. juli 2003 - 12:05 #4
.. selv om det er brugernavnet (sådan skulle der står til sidst)
Avatar billede webcreator Nybegynder
04. juli 2003 - 12:08 #5
Fejl fundet..
Avatar billede erikjacobsen Ekspert
04. juli 2003 - 12:08 #6
Du har ikke overvejet at lade SQL gøre arbejdet (skitse)

$query = mysql_query("select * from users where user='...' and mail='...'") or die(mysql_error());
Avatar billede webcreator Nybegynder
04. juli 2003 - 12:10 #7
Jo, det har jeg faktisk - kan ikke huske hvorfor jeg kom væk fra dig. Men det får jeg da lige klaret - det er jo noget smartere :)
Avatar billede webcreator Nybegynder
04. juli 2003 - 12:21 #8
Det virkede jo også godt nok. Men tror du ikke det er smartere, at bruge OR i queryen ? AND duer vist ikke, når der skal tjekkes for to ting, som ikke nødvendigvis hænger sammen. Fik det fint til at vrke med OR

Smid et svar :)
Avatar billede erikjacobsen Ekspert
04. juli 2003 - 12:24 #9
Det er vist rigigt med OR i dit tilfælde - det var kun en skitse.
Du har lavet arbejdet, jeg skal ikke have point.
Avatar billede webcreator Nybegynder
04. juli 2003 - 12:32 #10
Tusind tak for hjælpen så :-)
Avatar billede c Nybegynder
04. juli 2003 - 15:39 #11
ved du ikke at der kan være forskel på mailadresserne:
MinAdresse@mydomain.dk
og
minadresse@mydomain.dk

Derfor vil jeg bruge:
$tjek = mysql_query("SELECT * FROM brugere WHERE user='".$user."' AND mail='".$mail."'");

if(mysql_num_rows($tjek) != 0) {
    print("Der findes allerede en i databasen med det navn og den mailadresse.");
} else {
    Hvis alt gik godt, lagres data i databasen
                                      $psw1 = md5("$psw1"); # Password krypters
                                      $insertSQL = "insert into users (navn, adre, city, aldr, user, mess, pass, mail, hide, icqm, msnm, http, udda, kort, dato, IPnr)
                                                                values ('$navn', '$adre', '$city', '$aldr', '$user', '$velkomst', '$psw1', '$mail', '$hide', '$icqm', '$msnm', '$http', '$udda', '$kort', now(), '$IPnr')";
                                      mysql_query($insertSQL) or die (mysql_error());
                                     
                                      mysql_close($conn);
                                           
                                      header("location: logiin.php?uds=Virkede...");
};

mvh
Christian
Avatar billede webcreator Nybegynder
04. juli 2003 - 15:42 #12
c > Netop pga. af forskellen, lavede jeg dem til UPPERCASE.

Men jeg er nød til at tjekke, at folk ikke oplyser falske e-mail adresser. Så jeg bruger en anden metode nu.
Avatar billede c Nybegynder
04. juli 2003 - 15:50 #13
fordi at du laver dem til uppercase kan brugeren A ikke komme med mailadressen A@mydomain.dk hvis bruger B har oprettet med a@mydomain.dk...

har du overvejet at give nogen ret...?? det er det som pointsystemet er til for??...ikke fordi at 10 p rykker ekstremt meget til mine 1500 men bare det at eg får ret... husk også at lukke spm.

mvh
christian
Avatar billede webcreator Nybegynder
04. juli 2003 - 15:53 #14
c > Jeg kan desværre ikke give dig ret - måske fordi du ikke kan sætte dig helt ind i systemet, med de får liniers kode du har modtaget.
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