17. marts 2012 - 14:21Der er
34 kommentarer og 2 løsninger
Ens den samme email der også ?
Hej
lige pt nu og her arbejder noget med at gøre sådan at der ikke kan laves 2 ens email på "bruger" table..
men det er sådan at den skal kunne komm frem og sige "hold deres finde en email af den du har valgt"
Jeg har dog prøve frem og tilbage . men jeg kan ikke få det til at passe sammen og det fuck op hver gang jeg prøve ret i det eller lign.. :( Håber der for at du kan hjælp mig lidt videre på det her tykke arbejde :)
$errors = array( "email" => "Du skal indtaste et Email-brugernavn.", "password" => "Du skal indtaste et password. & Begge Adgangskodefelter skal have ens indhold!", );
den kode du har der gør jo ikke andet end at oprette brugeren i databasen.
du skal lave en query der henter antallet af rækker hvor email-adressen er den samme som den indtastede - hvis antallet er 0 kan du oprette brugeren, ellers kan du melde tilbage at email-adressen er optaget...
Efter du har en $email og ingen errors skal du gå ind i tabellen brugere og søge efter rækker med samme email adresse som i $email. Hvis der er nogen udskriver du fejlmeldingen, ellers går du videre. Såsom med denne kode (ikke testet)
$duplikat_email = mysql_query("SELECT * FROM brugere WHERE email = $email"); if ($duplikat) echo "hold deres finde en email af den du har valg"; else { $insert = mysql_query("INSERT INTO BRUGERE ....."); ... ... }
$errors = array( "email" => "Du skal indtaste et Email-brugernavn.", "password" => "Du skal indtaste et password.", "gentag" => "Du skal gentage dit password - og begge adgangskodefelter skal have ens indhold!" );
if(empty($errors)){ $password = sha1($password); $insert = mysql_query("INSERT INTO brugere (email,password) VALUES ('$email', '$password')"); if (mysql_errno==1062) { die('Der er allerede oprettet en bruger med denne e-mail: '.$email); }
#5: I udgangspunktet er jeg ikke glad for at 'fremprovokere' fejl og teste (ligesom jeg helst undgår try/catch). Her det dog et sjældent tilfælde, at fejlen vil blive udløst, hvorfor jeg hellere undgår en ekstra forespørgsel ved hver indsætning. Den valgte løsning bør være nøje overvejet =)
#6: Det er en mulighed, men en dårligere løsning. Der er ingen grund til at tælle $errorCount op, når du laver en redirect. Så har du jo ikke noget at bruge den variabel til =)
hvis jeg prøve at opret 2 ens email så hvis email er taget så hvis det er id 2 jeg prøver at opret på så hvis jeg lave en ny email eller lign altså en som ikke er databasen så kommer den op og ligger som nr 3 :( mærkeligt når 2 ikke er taget :O
$bruger = mysql_query("SELECT * FROM brugere WHERE email='$email'"); if(mysql_num_rows($bruger) > 0) { echo "<p>Email er optaget, Prøve igen</p>"; } else {
$errors = array("email" => "Du skal indtaste et Email-brugernavn.", "password" => "Du skal indtaste et password.", "gentag" => "Du skal gentage dit password - og begge adgangskodefelter skal have ens indhold!"); if(!empty($email)) { unset($errors["email"]); } if(!empty($password)) { unset($errors["password"]); } if(!empty($gentag) && $gentag == $password) { unset($errors["gentag"]); }
$bruger = mysql_query("SELECT * FROM brugere WHERE email='$email'");
er vel én måde at lave en relativ stor request som faktisk ikke skal bruges. Du kunne jo, hvis du endelig skal gøre det med en request for sig selv i stedet for den bedre løsning i #4, nøjes med ikke at bede den retunere data fra tabellen, hvis det alligevel ikke skal bruges.
$bruger = mysql_query("SELECT NULL FROM brugere WHERE email='$email'");
jeg ved faktisk ikke om det ellers er en optimal metode. Men databasen slipper da for at skulle hente data frem.
Med minder du har brug for indholdet af alle rækker fra brugere. Med * henter du jo indholdet af alle rækker, og det er yderst sjældent du har brug for det hele. I dette tilfælde synes jeg det ser ud til at du slet ikke har brug for nogle, derfor er det jo bedst ikke at bruge det.
Hvis du fx. har brug for at kende antallet af udgivede bøger et bestemt år fra det lokale bibliotek er det jo også nemmere at gå ned og blot tælle dem, end at låne fx. alle 500 med hjem ;)
NULL er i programmering ingen ting. Så det du beder den om er ikke at hente nogen af rækkerne i tabellen. Men den vil stadig retunere antallet af rækker.
jo, men du har jo ikke noget at bruge emailen til og på den anden side ved du jo allered hvad emailen er, for du henter kun den post hvor email-adressen er lig med det indtastede :)
jeg læret noget nyt igen og det er pisse dejligt at du kun lærer mig det Kjeldested :) og tak tak :) Venter bare på Splazz som også hjælp en lille del :)
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.