problem mit if und ..... |
lugau45
Otto-Normal-Poster Threadstarter
Beiträge: 64 |
ich habe mal wieder etwas versucht aber es will nicht richtig. ich habe für unsere alte schulklasse eine seite gebaut wo man sich so einloggen kann und seine daten reinschreiben kann, das geht ja nun alles, aber nun bin ich dabei ein skipt zu bauen, wo man sich seine daten zum einloggen zusenden lassen kann. es geht auch fast. das zusenden funst also die daten die ich will wenn ich die richtige email angegeben habe kommen auch dann per mail, aber wenn ich eine adresse reinschreibe die es nicht in der datenbank gibt kommt die fehlermeldung nicht eigendlich das was dann unter else steht.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42: |
/* Verbindung aufbauen, auswählen einer Datenbank */
$link = mysql_connect("localhost", "web...", "...")
or die("Sorry, keine Verbindung zur sql-Datenbank möglich!");
mysql_select_db("usr_web...") or die("Auswahl der Datenbank fehlgeschlagen");
// ausführen einer SQL Anfrage
$query = "SELECT id, userdb, passdb, vorname, name, ort, email, telefon, datum FROM ... where email='$email'";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen");
while($row = mysql_fetch_object($result))
{
$emaildb=$row->email;
$namedb=$row->name;
$vornamedb=$row->vorname;
$userdb=$row->userdb;
$passdb=$row->passdb;
if($email==$emaildb)
{
$empfaenger = "$emaildb";
$text = "Name: $namedb\n";
$text .= "E-Mail: $emaildb\n";
$text .= "Benutzername: $userdb\n";
$text .= "Passwort: $passdb\n";
mail($empfaenger, "Deine Daten von www..de.vu", $text, "From: ") or die("");
echo "Deine Daten sind an die angegebene Emailadresse versendet worden.\n"."
";
echo "Bitte schau in deinem Postfach nach dort sollten sich die Logindaten befinden.\n"."
";
echo "
";
echo "Deine Emailadresse: $emaildb"."
";
}
else
{
echo "Deine Adresse wurde nicht gefunden!";
}
}
?> |
bitte helft mit bei der lösung kann ja nicht wild sein ist irgendwas mit dem else. also nee fehlermeldung kommt nicht bildschirm bleibt leer.
Diese Nachricht wurde geändert von: lugau45 |
 Profil
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241 |
Das kann nicht funktionieren, da das Else-Statement innerhalb des While-Loops steht. Gibt es die E-Mail Adresse nicht in der Tabelle, gibt es auch keinen while-loop und dementsprechend auch kein else statement.
Du brauchst außerhalb des while loops einen ergebnis check:
1:
2:
3: | if(mysql_num_rows($mysql_result)<1) {
print "nichts da";
} |
http://www.php.net/mysql_num_rows
Diese Nachricht wurde geändert von: einstein |
 Profil
Editieren
Zitieren
|
lugau45
Otto-Normal-Poster Threadstarter
Beiträge: 64 |
so habe das mal vor while geschieben:
1:
2:
3: | if(mysql_num_rows()<1) {
print "nichts da";
} |
ergebniss:
Warning: Wrong parameter count for mysql_num_rows() in /usr/local/httpd/htdocs/kunden/web770/html/klassentreffen/datensenden/datenvergessen.php on line 19
Die Emailadresse gibt es nicht!
|
 Profil
Editieren
Zitieren
|
lugau45
Otto-Normal-Poster Threadstarter
Beiträge: 64 |
habe es manchmal sollte man einfach mal denken und probieren so geht es hoffe das ist nicht falsch in sachen sicherheit oder so gehen tut es. das noch vor while dann gehts.
1:
2:
3: | if($email!==$result) {
print "Die Emailadresse gibt es nicht!";
} |
wenn noch was dagegen spricht dann schreibt es!!!
danke
|
 Profil
Editieren
Zitieren
|
Ehemaliges Mitglied (#644)
Forenheld
Beiträge: 832 |
if($email !==$result)
wusste gar nicht das das geht!
Mache das immer so
!=
wieder was gelernt
|
 Profil
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241 |
lugau45 schrieb am 06.12.2003 12:39
Warning: Wrong parameter count for mysql_num_rows() in /usr/local/httpd/htdocs/kunden/web770/html/klassentreffen/datensenden/datenvergessen.php on line 19
Die Emailadresse gibt es nicht! |
Siehe Link zum PHP-Manual: die Result Ressource ID muss angegeben werden - Ich hatte nur Pseudo-Code gepostet.
if($email!==$result) {
Macht nicht viel Sinn:
$result ist ein Array mit dem Ergebnis der MySQL Query - $email ist ein String mit der E-Mail
Du musst ja eigentlich nur überprüfen, ob das Ergebnis eine Zeile hat oder nicht:
mysql_num_rows() oder
count()
Diese Nachricht wurde geändert von: einstein |
 Profil
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241 |
paul schrieb am 06.12.2003 13:19
if($email!==$result)
wusste gar nicht das das geht!
Mache das immer so
!=
wieder was gelernt |
Das sind zwei unterschiedliche Sachen, siehe:
http://de.php.net/language.operators.comparison
|
 Profil
Editieren
Zitieren
|
lugau45
Otto-Normal-Poster Threadstarter
Beiträge: 64 |
jo danke habe ich geändert habe nicht aufgepasst, wollte das eigendlich so schreiben. habe ich ja richtig glück gehabt das der befehl !== auch ging sonnst währe ich wahscheinlich wieder mal dran verzweifelt und hätte nach stunden den kleinen fehler gefunden. ach ja ist alles nicht so einfach! -
|
 Profil
Editieren
Zitieren
|
lugau45
Otto-Normal-Poster Threadstarter
Beiträge: 64 |
ist doch noch nicht ganz gelöst jatzt habe ich nen fehler entdeckt.
das ist die ausgabe wenn die adresse gefunden wurde:
1:
2: | Die Emailadresse gibt es nicht in der DatenbankDeine Daten sind an die angegebene Emailadresse versendet worden.
Bitte schau in deinem Postfach nach dort sollten sich die Logindaten befinden. |
da steht der erste satz mit drin der sollte aber nur kommen wenn die adresse nicht gefunden wurde. da kommt der auch aber bei erfolg auch (sch...:()
hier nochmal der quelltext vom skript:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38: | $query = "SELECT id, userdb, passdb, vorname, name, ort, email, telefon, datum FROM klassenkameraden where email='$email'";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen");
if($email!=$result) {
print "Die Emailadresse gibt es nicht in der Datenbank";
}
while($row = mysql_fetch_object($result))
{
$emaildb=$row->email;
$namedb=$row->name;
$vornamedb=$row->vorname;
$userdb=$row->userdb;
$passdb=$row->passdb;
if($row!=="")
{
$empfaenger = "$emaildb";
$text = "Name: $namedb\n";
$text .= "E-Mail: $emaildb\n";
$text .= "Benutzername: $userdb\n";
$text .= "Passwort: $passdb\n";
mail($empfaenger, "Deine Daten von www..de.vu", $text, "From: mich...") or die("");
echo "Deine Daten sind an die angegebene Emailadresse versendet worden.\n"."
";
echo "Bitte schau in deinem Postfach nach dort sollten sich die Logindaten befinden.\n"."
";
echo "
";
echo "Deine Emailadresse: $emaildb"."
";
}
}
?> |
Diese Nachricht wurde geändert von: lugau45 |
 Profil
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241 |
Wie oberhalb erwähnt, kann das ganze nicht funktionieren, da $result und $email erstens immer unterschiedliche Inhalte enthalten und zweitens auch nicht identisch sein können.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38: | $query = "SELECT id, userdb, passdb, vorname, name, ort, email, telefon, datum FROM klassenkameraden where email='$email'";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen");
if(!count($result)) {
print "Die Emailadresse gibt es nicht in der Datenbank";
}
else {
while($row = mysql_fetch_object($result))
{
$emaildb=$row->email;
$namedb=$row->name;
$vornamedb=$row->vorname;
$userdb=$row->userdb;
$passdb=$row->passdb;
if($row!=="")
{
$empfaenger = "$emaildb";
$text = "Name: $namedb\n";
$text .= "E-Mail: $emaildb\n";
$text .= "Benutzername: $userdb\n";
$text .= "Passwort: $passdb\n";
mail($empfaenger, "Deine Daten von www..de.vu", $text, "From: mich...") or die("");
echo "Deine Daten sind an die angegebene Emailadresse versendet worden.\n"."
";
echo "Bitte schau in deinem Postfach nach dort sollten sich die Logindaten befinden.\n"."
";
echo "
";
echo "Deine Emailadresse: $emaildb"."
";
}
}
}
?> |
|
 Profil
Editieren
Zitieren
|
lugau45
Otto-Normal-Poster Threadstarter
Beiträge: 64 |
habe das mal so ausprobiert, aber wenn ich eine falsche adresse eingebe kommt wieder keine ausgabe fenster bleibt leer.
|
 Profil
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241 |
Dann wir irgendwo anders noch fundamentaler Fehler sein, denn Funktionen wie count / mysql_count_rows funktionieren immer...
try this:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27: | |
|