User aus MySQL suchen

Loddar1

Erfahrenes Mitglied
Hallo, ich mal wieder
Ich mache gerade eine Useranmeldung, klappt auch soweit wunderbar,
aber der Username soll ja nur einmal vorkommen und da fehlt mir was.
Zum suchen habe ich bisher folgendes:
PHP:
$conn_id = mysql_connect($host,$username,$dbpasswd); //verbindung zur db wird aufgebaut
 mysql_select_db($database,$conn_id);
if ($_POST[save]=="Enter"){
$getusername = mysql_query("SELECT count(*) FROM $udtable WHERE nick = '$_POST[nick]'");
while($proofname = mysql_fetch_array($getusername)){
if ($proofname["name"] == $_POST['nick']){
$proofreg = true; // Name existiert schon TRUE
}
}
echo 'Name existiert schon!';
und das ist mein Formular alles in einer Seite:
PHP:
$psw=md5($_POST[psw]);
if($_POST[psw]=="")
   {
echo'<hr /><p class="center">Das Feld <strong>Passwort</strong> ist Leer!</p><hr />';
   }
   if($_POST[nick]=="")
   {
echo'<hr /><p class="center">Das Feld <strong>Nickname</strong> ist Leer!</p><hr />';
   }
   if($_POST[nname]=="")
   {
echo'<hr /><p class="center">Das Feld <strong>Nachname</strong> ist Leer!</p><hr />';
   }
   if($_POST[vname]=="")
   {
echo'<hr /><p class="center">Das Feld <strong>Vorname</strong> ist Leer!</p><hr />';
   }
   else
   {
mysql_query("INSERT INTO $udtable(Nickname,Kennwort,nname,vname)VALUES('$_POST[nick]','$psw','$_POST[nname]','$_POST[vname]')");
header ("Location: index.php?jump=anmelden.php&jumpo=ready");
}
}
echo'<fieldset><legend>Anmelde Formular</legend>';
echo'<form method="post" action="index.php?jump=anmelden.php">';
echo'<p>Nickname: <input  type="text" name="nick" value="'.$_POST[nick].'"  /></p>';
echo'<p>Passwort: <input  type="text" name="psw" value="'.$_POST[psw].'"  /></p>';
echo'<p>Nachname:<input type="text" name="nname" value="'.$_POST[nname].'"  /></p>';
echo'<p>Vorname: <input  type="text" name="vname" value="'.$_POST[vname].'"  /></p>';
echo'<p><input type="submit" name="save" value="Enter" /></p>';
echo'</form></fieldset>';
Mein Problem, der User wird angemeldet auch wenn er einen vorhandenen Usernamen eingibt.
Kann mir einer helfen?
 
Was für eine komische unlesbare Formatierung...

Zum Thema. Das müsste eigentlich ein Fehler werfen
Code:
SELECT count(*) FROM $udtable WHERE nick = '$_POST[nick]'
$proofname["name"]
Dein SELECT hat kein Feld 'name'. Du prüfst aber darauf....
 
Hallo Yaslaw,

Der inhalt der Tabelle:
Id Nickname Kennwort nname vname

Die geänderte Zeile:
PHP:
$getusername = mysql_query("SELECT count(*) FROM $udtable  WHERE Nickname = '$_POST[nick]'");
Habe ich da falsche Werte?
 
Zuletzt bearbeitet:
Mach es lieber so:
PHP:
$getusername = mysql_query("SELECT id FROM $udtable WHERE name = '$_POST[nick]'");
if(mysql_num_rows($getusername) > 0)
{
   echo "Name existiert bereits.";
} else {
   echo "Name noch frei.";
}
 
Hallo Loddar1,

wenn deine Tabelle die von dir genannten Spalten hat
Code:
Id Nickname Kennwort nname vname
dann kann doch bei deiner WHERE-Bedingung nichts gefunden werden wenn es keine Spalte namens "name" gibt...!
Code:
WHERE name = '$_POST[nick]'

mfg
 
Loddar:
Bei meinem Lösungsansatz ist es irrelevant, welche Daten du abfragst.
Prinzipiell ist nur die Where-Klausel wichtig.
PHP:
WHERE name = '$_POST[nick]'
Ich suche einfach nur nach einem Eintrag, bei dem das Feld "name" dem eingebenen Nicknamen entspricht.

PHP:
mysql_num_rows($getusername)
diese Funktion prüft, wie viele Reihen, also wie viele Einträge mit diesem Nicknamen, gefunden worden sind.
Du kannst da auch den Namen auslesen, aber die ID ist kürzer und braucht somit weniger Traffic. Also es ist völlig egal, welche Spalte du ausliest, wichtig ist die WHERE-Klausel und die Zählung der Rows.
 
Zurück