Newsletter
Sandro Fuchs
- php
0 Götz
Hallo Leute
Ich bastle an einem Newsletter (php) das die Anmeldung in die (mysql) Datenbank schreibt. Das Anmelden und das Austragen aus dem Newsletter funktioniert auch soweit gut, bis auf den Punkt das bei einer Neuanmeldung überprüft wird ob die eingegebene E-Mailadresse schon vorhanden ist, das bekomme ich einfach nicht hin.
Habe auch schon zig-Möglichkeiten versucht, will einfach nicht klappen.
Würde mir einer der sich damit gut auskennt auf die Sprünge helfen?
Hier ist der Quellcode der Anmeldung bzw. Abmeldung:
<?php
// Variablen definieren
$unique_id = uniqid(microtime(),1);
$newsemail = $HTTP_POST_VARS['newsemail'];
$newsabonement = $HTTP_POST_VARS['newsemail'];
$datum = date('d.m.Y / H:i');
$ip_adress = $REMOTE_ADDR;
// Einfuegen SQL Befehl
$einfuegen = "INSERT INTO newsletter (unique_id, emailadresse, anmeldung, ip_adress)
VALUES ('$unique_id', '$newsemail','$datum', '$ip_adress')";
//Loeschen SQL Befehl
$loeschen = "DELETE FROM newsletter WHERE emailadresse = '$newsemail'";
//Abfrage ob E-Mailadresse schon vorhanden
$sql="SELECT * FROM newsletter WHERE emailadresse='$newsemail'";
$res =mysql_query($sql);
$gefunden = mysql_num_rows($res);
?>
<?php
// Druchfuehren der Aktion
if ($newsemail == "$gefunden")
{
echo "E-Mailadresse $newsemail<br> ist bereits in der Newsliste aufgenommen";
}
elseif($radiobutton == "anmelden")
{
$eintragen = mysql_query($einfuegen);
echo "Die E-mailadresse $newsemail<br> wurde erfolgreich in die Datenbank eingetragen";
}
else
{
$loesch = mysql_query($loeschen);
echo "Die E-mailadresse $newsemail<br> wurde aus der Liste gelöscht!<br><br>Vielen Dank!";
}
?>
Hallo Sandro!
Würde mir einer der sich damit gut auskennt auf die Sprünge helfen?
Ich werds mal versuchen.
$newsemail = $HTTP_POST_VARS['newsemail'];
Das ist also die per POST übergebene E-Mail-Adresse.
Du solltest Dir am besten angewöhnen, die "neuen" superglobalen Variablen $_POST usw. zu benutzen.
//Abfrage ob E-Mailadresse schon vorhanden
$sql="SELECT * FROM newsletter WHERE emailadresse='$newsemail'";
$res =mysql_query($sql);
$gefunden = mysql_num_rows($res);
Soweit, so schlecht. Lies dir mal in der dclp FAQ durch, warum du nicht SELECT * schreiben sollst.
Ansonsten stelle ich fest, daß Du $gefunden einen Integerwert zuweist.
if ($newsemail == "$gefunden")
Das kann so nicht funktionieren (siehe auch PHP Manual: Appendix O. PHP type comparison tables).
Du vergleichst den String $newsemail mit dem Integer $gefunden. Naja, durch die "" machst Du den Integer sogar zu einem String, doch ändert das leider wenig daran, daß du zwei Sachen vergleichst, aus deren Vergleich Du nichts ableiten kannst.
In $gefunden steht ja eine Zahl drin und in $newsemail eine E-Mail-Adresse - Du machst zwar aus beidem einen String, aber diese beiden Strings dürften _nie_ gleich sein, denn falls dem so wäre müßte entweder mysql_num_rows() kaputt sein oder die E-Mail-Adresse wäre ungültig (= eine Zahl).
Was Du brauchst ist eher sowas wie $gefunden != 0.
MfG
Götz