Problem mit MySQL Abfrage - Bitte um Hilfe

Ich muss nochmal nerven *grins* . Erstmal nochmals vielen Dank, hat wunderbar mit der Methode von Resalb funktioniert ! Freu
Nun habe ich noch ein , ich hoffe winzig kleines Problem . Wie kann ich beim registrieren eines Users die Email auf bestand prüfen? Ich habe hier das Script, es prüft auch den Usernamen auf Bestand, aber leider bekomme ich es nicht hin auch die Mail prüfen zu lassen.
Das Script sieht so aus
---------------------------------------------

<?
function anmelden ($fertig, $uname, $password1, $password2, $email)
{
include("config.php");


if($fertig) {
$abfrage1 = mysql_query("SELECT uname FROM benutzer");
while ($row = mysql_fetch_object ($abfrage1)) {
if ($row->uname==$uname) {
echo "Dieser Benutzer existiert schon!";
exit;
}

}

if ($uname=="" OR $password1=="" OR $password2=="" or $email=="" ) {
echo "Sie haben mindestens ein Feld nicht ausgefüllt!";
}

else if ($password1!=$password2) {
echo "Ihr Passwort ist ungleich Ihrer Wiederholung!";
}
else {
$anfuegen=mysql_query("INSERT INTO benutzer (uname, passwd, email) VALUES ('$uname','$password1','$email')");
echo "Erfolgreich angemeldet! Sie können sich nun einloggen:<br>";
@login();
}
}
else {
echo "<h2>Anmelden</h2>";
echo "<form method=\"POST\" action=\"$PHP_SELF?anmelden=yes&fertig=yes\">";
?>
<table cellspacing="1" cellpadding="2" border="0">
<tr>
<td><font size="2">Benutzername:</font></td>
<td><font size="2"><input type="text" name="uname" value="">&nbsp;</font></td>
</tr>
<tr>
<td><font size="2">Passwort:</font></td>
<td><font size="2"><input type="password" name="password1" value=""></font></td>
</tr>
<tr>
<td><font size="2">Wiederholen:</font></td>
<td><font size="2"><input type="password" name="password2" value=""></font></td>
</tr>
<tr>
<td><font size="2">E-Mail:</font></td>
<td><font size="2"><input type="text" name="email" value="">&nbsp;</font></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value=Anmelden></td>
</tr>
</table>
</form>
<?
}

--------------------------------------------------

Kann mir vielleicht noch jemand einen Tip geben?
 
Guten Morgen! *gähn* ;)

Ich habe gerade mal deinen Code etwas angeschaut, meiner Meinung nach arbeitest du da recht ineffizient:
PHP:
 while ($row = mysql_fetch_object ($abfrage1)) {
if ($row->uname==$uname) {
echo "Dieser Benutzer existiert schon!";
exit;
}

}
Du gehst jedesmal alle Datensätze in der Tabelle durch und vergleichst die. stephandziurlas Methode hingegen sucht sich genau die Datensätze aus, die passen, und gibt, wenn keiner passt (was ja eigentlich der Fall sein sollte), halt einfach keinen zurück.
PHP:
$x = $_GET['res'];
$summe = mysql_db("SELECT Spalte1 FROM Tabelle WHERE res = $x");
$erg = mysql_num_rows($summe);

if ($erg == 1)
{
echo "Nummer vergeben";
}
else echo "Nummer nicht vergeben";
Aber jetzt zu deinem eigentlichen Problem: Willst du nur überprüfen, ob die E-Mail-Adresse auch schon in der Datenbank vorhanden ist oder willst du sie auch auf Gültigkeit überprüfen? Für ersteres musst du eigentlich nur genau das gleiche machen wie mit dem Namen, falls es da Probleme gibt, schreib mal genauer hin, was nicht klappt.

Falls du die E-Mail-Adresse auf syntaktische Gültigkeit überprüfen willst, schau mal hier vorbei.
 
Ich möchte nur testen ob die Mail Adresse schon in der Datenbank vorhanden ist. Ich habe es auch so probiert wie der benutzername geprüft wird nur leider hat es nicht geklappt

Ich habe den Code so geändert

<?
function anmelden ($fertig, $uname, $password1, $password2, $email)
{
include("config.php");


if($fertig) {
$abfrage1 = mysql_query("SELECT uname FROM benutzer");
while ($row = mysql_fetch_object ($abfrage1)) {
if ($row->uname==$uname) {
echo "Dieser Benutzer existiert schon!";
exit;
}

}
if($fertig) {
$abfrage2 = mysql_query("SELECT email FROM benutzer");
while ($row = mysql_fetch_object ($abfrage2)) {
if ($row->email==$email) {
echo "Diese Email existiert schon!";
exit;
}

if ($uname=="" OR $password1=="" OR $password2=="" or $email=="" ) {
echo "Sie haben mindestens ein Feld nicht ausgefüllt!";
}

else if ($password1!=$password2) {
echo "Ihr Passwort ist ungleich Ihrer Wiederholung!";
}
else {
$anfuegen=mysql_query("INSERT INTO benutzer (uname, passwd, email) VALUES ('$uname','$password1','$email')");
echo "Erfolgreich angemeldet! Sie können sich nun einloggen:<br>";
@login();
}
............

Nur leider kommt dann ein parse error

Ich weis ich stelle total die dummen Fragen aber ich werde mich in Zukunft zurückhalten und die Tutorials studieren, versprochen
 
Zuletzt bearbeitet:
Guten Morgen ;)
Schau doch mal in die Zeile darüber; also 267...wär vielleicht hilfreich, wenn du die letzten zwei, drei Zeilen der index.php posten könntest ;)

Hm, is ja ziemlich viel Quelltext für eine eigentlich einfache Abfrage. Wäre es nicht sinnvoller und effizienter, einmal eine Abfrage zu stellen und dann zu schauen, ob diese einem "boolean"-Wert (also wahr oder falsch) entspricht?!


$res = mysql_query("SELECT Spalte from Tabelle WHERE $email = 'postfach'");
$num = mysql_num_rows($res);

if ($num > 0)
{
echo "E-Mail vorhanden!";
}
else
{
echo "E-Mail noch nicht vergeben";
}
 
Zuletzt bearbeitet:
Zurück