Abfrage von Inhalten in DB und vergleichen

BlackCross

Grünschnabel
Aloha alle miteinander!

Bin neu hier und werde mich gleich mal einbringen, bzw ich habe ein frage.

Und zwar:

Ich möchte eine Art Newsletter schreiben und wenn man sich einträgt soll, bevor der Eintrag in die Datenbank erfolgt, ausgelesen werden ob die Email, die man eingegeben hat, bereits in der Datenbank vorhanden ist. Iwer ne idee wie man das anstellt? ich verzweifle iwie grad daran, wahrscheinlich gibts dafür wieder so ne simple lösung :(
 
Frage einfach alle die Datensätze ab, bei denen das E-Mail-Adressattribut mit der eingegebenen E-Mail-Adresse übereinstimmt. Sind es mehr als 0, gibt es die E-Mail-Adresse bereits in der Datenbank.
 
Ein Beispiel? Gerne:
Code:
SELECT
        COUNT(*)
  FROM
        `Tabelle`
  WHERE
        `E-Mail-Adresse` = "user@example.net"
Gibt diese Abfrage einen Wert größer als 0, gibt es bereits einen (oder sogar mehrere) Datensätze mit dieser E-Mail-Adresse.
 
grml, ich hattes mir komplizierter vorgestellt ^^

vielen dank x)

habs jetzt praktisch so:

PHP:
if($submit) //ueberprueft ob der submit button gedrückt wurde
{

$sqlkommando1 = "SELECT email FROM newsletter WHERE `email` = ". $email ."";
// $email bezieht sich halt hier auf das, was im input feld eingegeben wurd.
    $sqlanfrage1 = mysql_query($sqlkommando1) or die("Error: " . mysql_error());
    
        while($daten = mysql_fetch_object($sqlanfrage1))
        
if($sqlanfrage1 == empty){
//blabla zeugs to-do
}
else {
echo "Email Adresse bereits vorhanden!";
}

würde das wohl so klappen?
 
Nein. Und falls doch dann nur weil der PHP-Parser sehr tolerant ist und die $email-Variable bereits Anführungszeichen enthält. Denn:
  • da die Werte wohl von einem Formular stammen, sollten die Werte aus die vordefinierten Variablen $_GET oder $_POST (je nach Methode) Variablen genommen werden (siehe Register Globals)
  • auch in MySQL müssen Zeichenketten durch Anführungszeichen ausgezeichnet werden (lass dir den Wert von $sqlkommando1 ausgeben, dann siehst du was ich meine)
  • der Ausdruck $sqlanfrage1 == empty wird nur dann wahr sein, wenn es eine Konstante namens „empty“ mit gleichem Wert wie die $sqlanfrage1 gibt
 
die Email wird in der selben Seite angegeben.

PHP:
echo "<form action=\"". $PHP_SELF ."\" method=\"post\" name=\"entry\">";
echo "<td><div align=\"center\"><input type=\"text\" value=\"Email\" name=\"email\" size=\"25\"></td>";

normal klappts sonst immer so ^^

und wie müsste die if-Abfrage dann lauten, damit ich eine ordentliche Kontrollfunktion hab?
 
Ich würd’s wie folgt machen:
PHP:
if( isset($_POST['submit']) ) //ueberprueft ob der submit button gedrückt wurde 
{

	$query = '
		SELECT
		        1
		  FROM
		        `newsletter`
		  WHERE
		        `email` = "'.mysql_real_escape_string($_POST['email']).'"
		';
	if( mysql_num_rows(mysql_query($query)) ) {
		echo 'E-Mail-Adresse bereits vorhanden!';
	} else {
		echo 'E-Mail-Adresse noch nicht vorhanden.';
	}
}
 

Neue Beiträge

Zurück