PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Php Mysql] Daten vergleichen?



raian
27.05.2005, 09:18
Hi!

Ich weiß wie man Daten aus der Datenbank rausholt usw, aber ich weiß nicht wie ich jetzt diese Daten (z.B. einen Nickname der in der Datenbank ist) und ein Input (z.B. bei einem Anmeldeformular) so vergleichen soll... mit einer If Abfrage, ja, aber wie? Ich habe schon viele durchprobiert, aber nie hats geklappt.....

Warte geduldig auf Antwort...^^

Lukas
27.05.2005, 09:35
Poste mal deine Abfragen, die nicht funktioniert haben (und zwar den ganzen relevanten Teil des Codes, nicht nur die Zeile mit dem if).

raian
27.05.2005, 09:39
Ähm, das hab ich net... aber ich kann dir den momentanen code schicken...

Ich eitier das dann hier rein


Hier der Code:


<?php
include ("dbconnect.php");
?>
<html>
<head>
<h1>
<center>Willkommen!</center>
<h3><br>
<CENTER>Hier können sie sich anmelden!</CENTER>
</h3>
</h1>
</head>
<body>
Um sich anzumelden müssen sie einige Daten angeben. Diese Daten werden nicht an Dritte weitergegeben, sondern ausschließlich für diese Seite verwendet. Unter Umständen benutzen wir ihre E-Mail Adresse um ihnen einen Newsletter zu zuschicken.<br><br><br>
<form>
<font size=2 color=red>
Bitte geben sie hier ihren gewünschten Usernamen ein:<br>
<input name="username"><br><br>
Bitte geben sie hier ihr gewünschtes passwort ein:<br>
<input type="password" name="userpasswort"><br>
Bitte bestätigen sie ihr Passwort:<br>
<input type="password" name="passwortbestätigung"><br><br>
Bitte geben sie ihre E-Mail Adresse ein:<br>
<input name="usermail"><br><br>
Bitte geben sie hier ihren BNet Account an:<br>
<input name="account"><br><br><br>
Bitte überprüfen sie ihre Angaben bevor sie ihre Angaben abschicken!<br>
<input type="submit" name="abschicken" value="Anmelden"><br>
</font>
</form>
<?php
if (isset($abschicken))
{
$prüfpw = "SELECT nick FROM user WHERE nick = '$username'";
if ($prüfpw == $username)
{
echo "Ihr Username ist bereits belegt!";
}
else
{
if ($userpasswort == $passwortbestätigung)
{
if ($account != "")
{
if ($usermail != "")
{
//Datenbankeinträge machen:
$datenbank = "INSERT INTO user (nick, passwort, account, email) VALUES ('$username', '$userpasswort', '$account', '$usermail')";
$eintragen = mysql_query($datenbank);
echo '<meta http-equiv="refresh"content="0;URL=registriert.html">';
}
else
{
echo 'Anmeldung fehlgeschlagen. Sie müssen eine Mailadresse auswählen!';
}
}
else
{
print "Anmeldung fehlgschlagen! Bitte geben sie einen gültigen BNet Account an!";
}
}
else
{
print "Anmeldung fehlgeschlagen! Ihr Passwort stimmt nicht mit der passwortbestätigung überein!";
}
}
}
?>
</body>
</html>

Lukas
27.05.2005, 09:52
Dürfte ich annehmen, dass du diese if-Abfrage meinst?
$prüfpw = "SELECT nick FROM user WHERE nick = '$username'";
if ($prüfpw == $username)Wenn ja, ist es klar, dass es nicht funktioniert, du vergleichst deine SQL-Abfrage mit dem Usernamen, nicht das Ergebnis. Die Abfrage ergibt nur True, wenn der Username SELECT nick FROM user WHERE nick = '$username' lautet.
Folgender Code sollte funktionieren:
$pruefpw = "SELECT nick FROM user WHERE nick = '" . $_GET['username'] . "'";
$result = mysql_query($pruefpw, $dblink); # für $dblink den Rückgabewert von mysql_connect() aus dbconnect.php einsetzen
if(mysql_num_rows($result) > 0)
Änderungen:
1. Ich vergleiche nicht, die Abfrage mit dem Usernamen, sondern überprüfe, ob sie mindestens ein Ergebnis (= mindestens einen User mit diesem Namen) zurückgibt.
2. Ich habe $prüfpw mal in $pruefpw umbenannt, ich würde keine Non-ASCII-Zeichen in Variablen-, Funktions- und Klassennamen verwenden
3. Ich habe $username durch $_GET['username'] ersetzt, damit es auf wirklich allen Servern funktioniert.
4. Ich habe den SQL-String mit Verkettung zusammengebaut. Eher prinzipiell bedingt

raian
27.05.2005, 09:59
Thx!

Das funzt Fantastisch! Aber es geht auch ohne den DB-Link^^ ich frag mich sowieso was der bringen soll xD

dadie
27.05.2005, 10:20
Thx!

Das funzt Fantastisch! Aber es geht auch ohne den DB-Link^^ ich frag mich sowieso was der bringen soll xD

Meines wissens ist das wichtig wenn man mehr als eine DB nutzt und es gab noch mehr Gründe die mir missfallen sind ^^,

dead_orc
27.05.2005, 12:41
die mir missfallen sind ^^,
entfallen

Aber ich hab hier einfach mal ne Frage (hab mir gerade den Eintrag im PHP-Manual (http://de.php.net/manual/de/) zu mysql_query (http://de.php.net/mysql_query) durchgelesen):
Wieso soll eine mySQL-Anfrage, die per mysql_query ausgeführt wird, nicht mit einem Semikolon enden? Bei einer "normalen" Anfrage (per mysql.exe or whatever) muss eine Anfrage doch sogar damit enden - wieso nicht hier?

Manni
27.05.2005, 14:24
Ich denke mal, weil in PHP bei mysql_query() klar ist, wo die Abfrage zuende ist (am Ende des Strings, der übergeben wird) Vielleicht fügt PHP ja auch selbstaändig ans Ende automatisch ein Symikolon ein und dann wäre es doppelt ;)

rgb
27.05.2005, 14:42
phpmyadmin mach da selber auch ein semikolon hinter o.o.
Und ich auch.