Problem mit einer Prüfung ob ein Nickname schon vorhanden ist

Roumeo

Mitglied
Hi Leute,
ich bin dabei mein register um ein neues Feature zu verfeinern.Ich möchte ein Script schreiben, dass Prüft ob der ausgewählte Nickname schon vergeben ist. So sieht mein Code bissher aus:
PHP:
// Sql connect und Variablenbezeichnungen und so ...

     $names = "SELECT
	 			  nick
				 FROM
				  registered;";
   	 $result = mysql_query($names) OR
		 die(mysql_error());
     while($row = mysql_fetch_assoc($result)){
       if ($row == $nick) {
		echo 'Dieser Nickname ist bereits vergeben<br>';
        	echo 'Bitte wählen Sie einen anderen aus<br>';
        	echo '<a href="register.php">zurück</a>';
                break;
		 }
         else {
        // Hier kommt dann der Programmteil fürs eintragen in der Datenbank und die
      // Bestätigung rein
		 }
	 } // while

Jedoch wenn ich den selben Nickname eingebe wie er schon in der Datenbank ist passiert nicht und der else Teil der Verzweigung wird ausgeführt was ja nicht sein soll.

Könnt ihr mir vielleicht helfen
Wäre sehr nett =)

mfg
 
Hallo,

schau dir deinen Code doch mal etwas genauer an. Was passiert der Reihe nach? Wie oft wird das if-Konstrukt aufgerufen? Welchen Datentyp hat $row?

Grüße,
Matthias
 
Prüfe einfach gleich in der Abfrage, ob es einen Datensatz mit diesem Kriterium gibt:
PHP:
$query = '
	SELECT
	        1
	  FROM
	        `registered`
	  WHERE
	        `nick` LIKE "'.mysql_real_escape_string($nick).'"
	';
$result = mysql_query($query)
	or die(mysql_error());
if( mysql_num_rows($result) > 0 ) {
	echo 'Dieser Nickname ist bereits vergeben!';
}
 
PHP:
while($row = mysql_fetch_assoc($result)){
       if ($row == $nick) {
        echo 'Dieser Nickname ist bereits vergeben<br>';
            echo 'Bitte wählen Sie einen anderen aus<br>';
            echo '<a href="register.php">zurück</a>';
                break;
         }
Das ist keine korrekte Syntax, du solltest dir den Befehl noch einmal anschauen.

Ansonsten würde ich es eher so lösen:
PHP:
// Sql connect und Variablenbezeichnungen und so ...

     $names = "SELECT
                   nick
                 FROM
                  registered
                 WHERE `name` = '".mysql_real_escape_string($nick)."'";
        $result = mysql_query($names) OR
         die(mysql_error());
     if(mysql_num_rows($result)) != 0) {
        echo 'Dieser Nickname ist bereits vergeben<br>';
            echo 'Bitte wählen Sie einen anderen aus<br>';
            echo '<a href="register.php">zurück</a>';
            break;
         } else {
        // Hier kommt dann der Programmteil fürs eintragen in der Datenbank und die
      // Bestätigung rein
         }
     } // while
 
Hallo,

Flex hat gesagt.:
PHP:
while($row = mysql_fetch_assoc($result)){
       if ($row == $nick) {
        echo 'Dieser Nickname ist bereits vergeben<br>';
            echo 'Bitte wählen Sie einen anderen aus<br>';
            echo '<a href="register.php">zurück</a>';
                break;
         }
Das ist keine korrekte Syntax, du solltest dir den Befehl noch einmal anschauen.
Was ist denn an der Syntax auszusetzen?

Grüße,
Matthias
 
Naja, er sollte vorher vielleicht doch nochmal prüfen, ob der Nickname nicht 1 ist... das geb ich zu :-)
Alle anderen sollten aber durchkommen(es sei denn, dir fällt noch was böses ein).

Eine andere Variante kann ich mir nicht vorstellen.
 
$nick kann ja eigentlich mal $row entsprechen, da $nick der übertragene Wert
des Formulars ist, wo man sein Nicknamen eingibt.
Villeicht ist das auch falsch was ich gerade sage bin gerade etwas verwirrt o0 ^^:-)
 
Zurück