harald_ Skrevet 12. november 2007 Del Skrevet 12. november 2007 Sitter her å knoter på et script som registrer brukere inn i en mysql database, og slitter litt med å sjekke om brukernavnet allerede er i bruk. Dette er det jeg har kommet frem til: function finnesbruker ($brukernavn) { mysql_query(" SELECT * FROM brukere WHERE brukernavn='$brukernavn' "); if (mysql_affected_rows() != -1){ return FALSE; } else { return TRUE; } } og elseif (finnesbruker($brukernavn)) { echo 'Brukernavnet er allrede i bruk...'; } Den slipper igjennom registreringen om brukernavnet ikke finnes fra før av, men om brukernavnet allerede er registrert blir det ikke fanget opp her, og det kommer i stedet en feilmelding fra mysql servern. Vet ikke helt hvor godt jeg har forklart meg nå, spørr gjerne! Lenke til kommentar
-morten Skrevet 13. november 2007 Del Skrevet 13. november 2007 Bruk mysql_num_rows(). mysql_affected_rows() er ment for å se hvor mange rader som ble endret av en UPDATE-spørring etc. $result = mysql_query("SELECT * FROM brukere WHERE brukernavn='$brukernavn'"); if (mysql_num_rows($result)) return true; else return false; Lenke til kommentar
v3g4rd Skrevet 13. november 2007 Del Skrevet 13. november 2007 Hvorfor ikke bare sette kolonnen som holder rede på selve brukernavnet i mysql-tabellen din til å være UNIQUE? I såfall, får du tilbake en feilmelding hvis noen prøver å opprette et brukernavn som allerede eksisterer.. Lenke til kommentar
Anders Moen Skrevet 13. november 2007 Del Skrevet 13. november 2007 Prøv denne: $sjekk = mysql_query("SELECT * FROM brukere WHERE brukernavn = '$brukernavn'"); if (mysql_num_rows($sjekk) > 0) { echo 'Dette brukernavnet er allerede i bruk.'; } else { echo 'Dette brukernavnet er ledig.'; } Håper den funker Lenke til kommentar
itsmebth Skrevet 13. november 2007 Del Skrevet 13. november 2007 (endret) function CheckUsername($name){ $n = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM brukere WHERE brukernavn = \'' . mysql_real_escape_string($name) . '\';')); return $n[0] == 0; } Denne burde virke. Endret 13. november 2007 av itsmebth Lenke til kommentar
Martin A. Skrevet 13. november 2007 Del Skrevet 13. november 2007 Hvorfor ikke bare sette kolonnen som holder rede på selve brukernavnet i mysql-tabellen din til å være UNIQUE? I såfall, får du tilbake en feilmelding hvis noen prøver å opprette et brukernavn som allerede eksisterer.. Man får en feilmelding, ja, men den meldingen er ikke direkte vakker. Derfor er det bedre å bruke en custom funksjon til dette, så kan man printe ut akkurat det man ønsker. Lenke til kommentar
v3g4rd Skrevet 13. november 2007 Del Skrevet 13. november 2007 Man får en feilmelding, ja, men den meldingen er ikke direkte vakker. Derfor er det bedre å bruke en custom funksjon til dette, så kan man printe ut akkurat det man ønsker. Det er ikke nødvendig å skrive ut mysql_error(). Hvis spørringen mot databasen resulterer i en feilmelding - kan en jo skrive ut hva man måtte ønske til brukeren? Selvfølgelig forstår jeg problemstillingen din også dersom man skal opprette en brukerdatabase med mange forskjellige brukere - og på forhånd ønsker å sjekke om brukernavnet er ledig før selve profilen til brukeren opprettes, men hvis dette ikke er nødvendig - er det letteste oftest det beste (mener jeg hvertfall). Lenke til kommentar
CruellaDeVille Skrevet 13. november 2007 Del Skrevet 13. november 2007 Hvorfor ikke bruke en aggregatfunksjon, feks count? if(finnes(6)){ print("Finnes fra før"); }else{ print("Finnes ikke fra før"); } function finnes($id){ $sql = sprintf("SELECT count(*) as antall FROM museum_item WHERE item_id = %d", mysql_real_escape_string($id)); $sjekk = mysql_fetch_array(mysql_query($sql)); return $sjekk['antall'] != 0; } Jeg har museum_items i min tabell, dette byttes selvfølgelig ut til brukernavn eller whatever. Denne funker hos meg. Lenke til kommentar
harald_ Skrevet 14. november 2007 Forfatter Del Skrevet 14. november 2007 Tusen takk for kanonfeedback folkens Som M4rTiN sa kommer det en feilmelding ja, men den var ikke god nok. Problemet er løst nå, takker! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå