Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
SQLAbfrage unabhängig von Groß- und Kleinschreibung
Ich hab noch nicht viel Ahnung
Meinst du wie die Tabelle aufgebaut ist?
Ich benutze PHPMYADMIN
Da habe ich ne Tabellenstruktur... ich müsste aber nen Screenshot davon machen wenn du das wissen möchtest..
oder ist das die Kollation?
da benutze ich latin1_german2_ci und wenn ich da drauf gehe dann blendet der mir
"Deutsch(Telefonbuch), case-insensitive" ein...
case-insensitive heißt ja quasi dass das unempfindlich ist... daher schon komisch das der da noch unterschiede macht
Wobei ich jetzt selbst verwirrt bin... aber ich würde über die Ergebnis-Menge gehen... soll heißen: Gibt es ein Ergebnis ist der Name ungültig...
Aber klar... er holt ja den Namen in der Art und Weise, wie er in der Datenbank steht, und vergleicht dann in PHP case-senstive ob der Name gleich dem eingegebenen ist... klar ist dann der große Max nicht gleich wie der kleine max...
Uebrigens: Das ganze ist so oder so nicht ganz sauber. Wenn zwischen deiner Abfrage/Suche und dem Insert ein anderer Insert dazwischenkommt... Du müsstest die table locken.
Aber was ne idee wäre: Unique index aufn username, dann würde ein Insert fehlschlagen wenn Eintrag schon vorhanden.
ich suche erst den Username aus dem $_POST in der Datenbank
und wenn der übereinstimmt, dann vergleiche ich quasi das gleiche nochmal in php was natürlich nix bringt
Boar manchmal könnt ich mich echt selbst haun
Ergänzung ()
bu1137 schrieb:
Uebrigens: Das ganze ist so oder so nicht ganz sauber. Wenn zwischen deiner Abfrage/Suche und dem Insert ein anderer Insert dazwischenkommt... Du müsstest die table locken.
Aber was ne idee wäre: Unique index aufn username, dann würde ein Insert fehlschlagen wenn Eintrag schon vorhanden.
es kann im schlimmsten fall passieren, dass zwei user den selben usernamen registrieren, wenn dies quasi gleichzeitig (aber nicht ganz ^^) passiert, also wenn die prüfung, ob der name erlaubt ist, zeitlich unmittelbar vor dem insert des anderen users kommt...
Ja gut
wenn irgendwann son großer useransturm kommt, könnte das ja durchaus passieren, obwohl das für mich ja ne wunschvorstellung wäre
Und wenn ich nen Unique-Index für den Usernamen erstelle, dann spuckt der nur in diesem fall den fehlercode aus? wäre ja auch unschön wenn ich so dauernd ne fehlermeldung bekommen würde wenn der username schon vergeben ist.
Ich hab den Qelltext jetzt so verändert, aber das ist auch falsch
Code:
if(strlen($_POST['username']) >= 3)
{
connect();
$sql_search_username = mysql_query("SELECT username FROM user WHERE username='".mysql_real_escape_string($_POST['username'])."' LIMIT 1") or die(mysql_error()." Abfrage sql_search_username gescheitert.");
if($sql_search_username) $errorusername = '<label class="errormessage">⇐ Benutzername schon vergeben!</label>';
}
Abfrage = Vergleicht den Benutzername mit dem usernamen in der Tabelle
Wenn Abfrage "erfolgreich", dann fehlercode schreiben
aber genau das ist das problem... ich glaub der guckt jetzt ob die abfrage ausgeführt werden konnte und dann schreibt der $errorusername
d.h. soviel wie ich bekomme so jetzt immer den fehlercode das der benutzer vergeben ist egal was der rein schreibt...
also soll ich die COUNT() funktion einbringen?
ich zähle alle datensätze zusammen, die in der tabelle stehen und gleich dem benutzernamen sind und speicher das in einer neuen spalte ab und wenn der mind. einen datensatz gezählt hat, dann ist der username schon vergeben und ich kann die fehlermeldung schreiben...
oder gibts da noch ne elegantere idee?
Ergänzung ()
Jo klappt so mit COUNT() *juhu*
Code:
if(strlen($_POST['username']) >= 3)
{
connect();
$sql_search_username = mysql_query("SELECT COUNT(username) AS useranz FROM user WHERE username='".mysql_real_escape_string($_POST['username'])."' LIMIT 1") or die(mysql_error()." Abfrage sql_search_username gescheitert.");
$obj_search_username = mysql_fetch_object($sql_search_username);
if($obj_search_username->useranz >= 1) $errorusername = '<label class="errormessage">⇐ Benutzername schon vergeben!</label>';
}
Danke nochmal für die gute Hilfe... auch wenn ich es euch nicht leicht gemacht habe, obwohl es an sich leicht war