31. maj 2006 - 19:08Der er
10 kommentarer og 1 løsning
PHP udfører kommandoer i forkert rækkefølge..
Hej eksperter..
Jeg har følgende funktion script (forenklet):
function bruger_opret($brugernavn) { $result = mysql_query("SELECT id FROM brugere where brugernavn = '$brugernavn'") or die (mysql_error()); if (mysql_num_rows($result) > 0) return "<font color=\"red\">Brugernavnet er optaget...</font>"; mysql_query("insert into brugere (`brugernavn`) values ('$brugernavn')") or die(mysql_error()); }
Funktionen returnerer altid fejlbeskeden 'brugernavnet er optaget' selvom der ikke findes nogen rækker i databasen hvor brugernavnet er det samme som inputtet i funktionen. Der skulle gerne blive sat en række ind i databasen lige efter den har tjekket om brugernavnet allerede findes. Men dette script gør det bare omvendt: den sætter først rækken ind i databasen, og derefter tjekker den om brugernavnet allerede findes.. Hvilket den jo sjovt nok altid gør.. :( Er der nogen der har været udsat for noget lignende før? - Kan simpelthen ikke få det til at give mening..
function bruger_opret($brugernavn) { $retur=""; $result = mysql_query("SELECT id FROM brugere where brugernavn = '$brugernavn'") or die (mysql_error()); if (mysql_num_rows($result) > 0){ $retur.= "<font color=\"red\">Brugernavnet er optaget...</font>"; } else{ mysql_query("insert into brugere (`brugernavn`) values ('$brugernavn')") or die(mysql_error()); $retur.="Du er nu oprettet."; } return $retur; }
Thulesen, din funktion ser nu ellers fornuftig ud, så forstår ikke den altid melder Brugernavnet optaget.
Du kan forresten forenkle din sql til: "SELECT id FROM brugere where brugernavn = '$brugernavn' LIMIT 1" Hvis du finder en bruger med samme navn, er det nok info til dig.
Hmm.. Jeg har prøvet at gøre som michael_stim har foreslået.. Og den siger både at brugernavnet er optaget, og samtidig med opretter den en bruger.. Men det giver jo ingen mening at den gør begge..! - Det må jo være enten eller.. Og funktionen bliver kun kaldt en gang.. Det er virkeligt underligt.. har brugt flere timer på det, og det burde være så simpelt..
if (mysql_errno()==1062) { // Brugernavnet er optaget } else if (mysql_errno()==0) { // Du er nu oprettet } else { // Some other shit hit the fan ...! }
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.