$brugernavn = $_POST['brugernavn'];
$users = mysql_query("select brugernavn from `database`");
while ($usernames = mysql_fetch_array($users)) {
$userarray[] = $usernames['brugernavn'];
}
if (in_array($brugernavn, $userarray)) {
echo "<center>Brugernavnet er optaget.<br>Vælg venligst et andet";
return false;
}
Det gør du ikke fordi det virker ikke.
Bruger 1 tester om testuser eksisterer - det gør det ikke.
Bruger 2 tester om testuser eksisterer - det gør det ikke.
Bruger 1 opretter testuser.
Bruger 2 opretter testuser.
Problem.
Du skal løse det database mæssigt.
Enten gør du bugernavn til primær-nøgle i din tabel eller så opretter
du et unikt index på feltet.
Så fejler anden INSERT med en fejl og dit PHP script kan bede
brugeren vælge et andet brugernavn.
Spunk13 dit forslag er da helt hen i vejret, en nemmere og hurtigere metode er ->
$username = $_POST['username];
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `dintable` WHERE `username`='".$username."'"),0) > 0) {
echo "Det valgte brugernavn er optaget.";
} else {
// her skal oprettelse så foregå.
}
$username = $_POST['username'];
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `dintable` WHERE `username`='".$username."'"),0) > 0) {
echo "Det valgte brugernavn er optaget.";
} else {
// her skal oprettelse så foregå.
}
Den vil så vidt jeg kan se virke, men det er en alt for besværlig proces, du lægger ALLE brugernavne ind i et array for herefter at tjekke om det valgte er i ARRAYET. Tænk dig hvis du blot har 1.000 brugernavne!
Den nemmeste (min metode) er at tjekke direkte i tabellen og se om der er nogle ens, den hiver ikke noget ud af tabellen, den tæller blot de antal poster hvor det indskrevne brugernavn forekommer.
Hverken dit eller ahv's forslag er 100% sikre i tilfælde af mere
end en samtidig bruger.
Jamen jeg har har kolonne "id", hvor der står auto_increment. Er det primær nøgle? Du siger hvis jeg sætter den til navnet, kommer der en fejl for brugeren...? Kan du komme med noget kode jeg kan indsætte?
id er uden tvivl primær-nøgle.
Lav et unique index på feltet brugernavn og lad PHP koden der
INSERT'er håndtere fejl ved duplicate.