Inputbox (sql INSERT INTO)
-
Hallo,
seinem ersten Post zufolge will er, dass ein Benutzer mehrere - durch Komma getrennte - EMail-Adressen eintragen kann. Dafür gibt es allerdings keine reine MySQL-Lösung. Die EMail-Adressen müssen zuvor auseinander genommen werden. Wie sie dann in die Datenbank gelangen spielt keine Rolle. Entweder alle gemeinsam:
$emails = explode(",", $_POST['email']); mysql_query("INSERT INTO `tabelle` (`email`) VALUES ('".trim($emails)[0]."'),'".trim($emails[1])."')");
oder eben einzeln:
$foo = explode(",", $_POST['email']); foreach($foo as $bar) { mysql_query("INSERT INTO `tabelle` (`email`) VALUES ('".$bar."')"); }
Bevor die Klugsch.... des Forums wieder ankommen und sich mit ihrem geballten Theoriewissen auf uns stürzen: denke bei solchen Fällen bitte immer an SQL-Injections und schütz dich entsprechend dagegen. Einfachste Lösung: die verwendung von mysql_real_escape_string().
VlG
-
WOW SPITZE du bist klasse, Danke vielmals XD
Der Code hat mir viel geholfen chef!
$foo = explode(",", $_POST['email']); foreach($foo as $bar) { mysql_query("INSERT INTO `tabelle` (`email`) VALUES ('".$bar."')"); }
bzw. Danke euch beiden XD
kleine frage bei Rande dieser Code dient doch zur abfrage von der Spalte (email) ?
$email= mysql_query("SELECT `email` FROM `login`");
Würde sowas Funktionieren?
$email= mysql_query("SELECT `email` FROM `login`"); $empfaenger = $email;
-
Hallo,
fast! Um tatsächlich die Email-Adresse zu erhalten musst du den Code noch etwas erweitern
$result = mysql_query("SELECT `email` FROM `login`"); while($row = mysql_fetch_array($result)) { print $row[0]; // 0 ist hierbei der SELECT-Index (email) $row['email'] würde genauso funktionieren } mysql_free_result($result);
VlG
-
Ich erweiter meine Aussage mal noch etwas. An der Stelle wird es komplexer.
Willst du eine EMail-Adresse anhand einer bestimmten Bedingung au der Datenbank lesen, so benötigst du eine WHERE-Klausel. Nehmen wir an du willst alle EMail-Adressen des Nutzers "foobar":
$result = mysql_query("SELECT `email` FROM `login` WHERE `user`='foobar'"); while($row = mysql_fetch_array($result)) { print "EMail: " . $row[0] . "<br />"; } mysql_free_result($result);
Willst du hingegen alle EMail-Adressen ( unabhängig vom Nutzer ), so kannst du auf die WHERE-Klausel verzichten:
$result = mysql_query("SELECT `email` FROM `login`"); while($row = mysql_fetch_array($result)) { print "EMail: " . $row[0] . "<br />"; } mysql_free_result($result);
VlG
-
Hey Danke haha hat mir ebenso etwas geholfen! wow
$result = mysql_query("SELECT `email` FROM `login`"); while($row = mysql_fetch_array($result)) { print "EMail: " . $row[0] . "<br />"; } mysql_free_result($result);
logisch!
ich möchte gerne emails versenden, an alle datensätze bzw Usern
$result = mysql_query("SELECT `email` FROM `login`"); while($row = mysql_fetch_array($result)) { print "EMail: " . $row[0] . "<br />"; } $empfaenger=mysql_query($result); $mail_absender= "test@live.de"; $betreff="Eine Testmail"; $text="test Text"; [b]mail($empfaenger, $betreff, $text,"from:$mail_absender"); [/b] echo "Mail wurde gesendet!"; ?>
Fehlermeldung:
Warning: mail() expects parameter 1 to be string, resource given in
-
Hallo,
dann fass beide Codes einfach zusammen
$result = mysql_query("SELECT `email` FROM `login`"); while($row = mysql_fetch_array($result)) { $empfaenger = $row[0]; $mail_absender = "test@live.de"; $betreff = "Eine Testmail"; $text = "test Text"; if (!mail($empfaenger, $betreff, $text, "from:$mail_absender")) print "Mail an " . $empfaenger . " konnte nicht gesendet werden!<br />"; } mysql_free_result($result);
Die mail-Funktionen ansich sind sehr interessant. Man hat mit diversen Mail-Klassen unendlich Möglichkeiten zum Versand von EMails. Zum Beispiel auch Versand von HTML-EMails durch Angleichen des Headers. Oder Verssand mit Dateianhängen (ebenfalls Header-Geschichte)...
VlG
-
Hey Super hat geklappt ohne Fehlermeldung!
ist doch nicht so schwer als ich gedacht habe XDeine weitere kleine frage
wie lösche ich alle Datensätze? also die ganzen emails nochmal?DELETE FROM login WHERE email;
-
Hallo,
entweder
DELETE FROM `login`;
oder
TRUNCATE TABLE `login`;
Macht aber in dem Fall - da du alle Datensätze löschst - keinen Unterschied...
VlG
-
Hey,
oh man wie dumm muss man sein XD ist logisch haha sowas von logo
sorry;Dank dir vielmals !
Hättest du ein Vorschlag wie ich emails prüfen kann, nach existens?
Ich habs so gemacht$checkmail= "SELECT email FROM login WHERE email='$email'"; else if($_POST['email']== '$checkmail'){ $result= mysql_query($checkmail)OR die("Query: <pre>".$checkmail ."</pre>\n"."Antwort: ". mysql_error());
aber irgendwie trägt er gleiche email addressen in meine datenbank ein!
das mein letzte anliegen! dann habe ich alles was ich brauchInfo: Zu deinem Code mit mehrere Addressen!
Er fängt nur dann einzutragen wenn mindestens 2 EMail addressen eingetragen sind im input! wenn ich eine addresse eintrage und speicher passiert nichts, nur bei 2 addressen!
-
Hallo,
ja, setz einen UNIQUE-INDEX (Eindeutigkeits-Schlüssel) auf die Spalte email in deiner Tabelle:
ALTER TABLE `login` ADD UNIQUE (`email`);
Dann änder den INSERT-Teil in Folgendes ab:
$foo = explode(",", $_POST['email']); foreach($foo as $bar) { mysql_query("INSERT INTO `tabelle` (`email`) VALUES ('".$bar."') ON DUPLICATE KEY UPDATE `email`=`email`"); }
VlG
-
michi-ffm schrieb:
Info: Zu deinem Code mit mehrere Addressen!
Er fängt nur dann einzutragen wenn mindestens 2 EMail addressen eingetragen sind im input! wenn ich eine addresse eintrage und speicher passiert nichts, nur bei 2 addressen!Folgendes Beispiel liefert folgende Ergebnisse:
<?php $hmm = explode(",", $_POST['foo']); foreach($hmm as $aha) { print $aha . "<br />"; } ?> <form method="POST"> <input type="input" name="foo" /> <input type="submit" name="submit" value="OK" /> </form>
Eingabe: 11,22,33,44
Ausgabe:
11
22
33
44---------------------------------------
Eingabe: 11
Ausgabe:
11Also das verwundert mich nun, dass er bei dir erst ab 2 Einträgen etwas in der Datenbank ablegt?!
LG
-
hm macht er nicht ist auch egal.. werde ich herrausfinden.. aber ich weis es noch nicht mit dem check
ALTER TABLE `login` ADD UNIQUE (`email`);
Das mein Vollständiger coder der nicht funkt!
Wo ist der Fehler?$password=$_POST['password']; $email=$_POST['email']; $checkmail= "SELECT email FROM login WHERE email='$email'"; if ($_POST['password'] == "") { echo "<center>Sie haben kein Password eingegeben</center>"; } else if($_POST['email']== '$checkmail'){ $result= mysql_query($checkmail)OR die("Query: <pre>".$checkmail ."</pre>\n"."Antwort: ". mysql_error()); if (mysql_num_rows($result)>0){ $error.= "- Die Eingegeben E-Mail Adresse ".$email ." ist bnereits in unserer Datenbank vorhanden"; } }
-
Hallo,
du vergleichst die Eingabe (_POST['emails']) mit einem SQL-Statement (checkmail)! Das kann nicht funktionieren. Nimm die Lösung mit dem UNIQUE und dem modifizierten INSERT und dann klappt das auch .
Das spart enorm viel Code und schont die Nerven des Programmierers. Zudem gibt es diese Funktionalitäten extra aus solchen Gründen (Code-Sparen)...VlG
-
hmm sorry ich glaub ich habe blackout von viel code :S
form $password=$_POST['password']; $email=$_POST['email']; $checkmail= "ALTER TABLE `login` ADD UNIQUE (`email`)"; if ($_POST['password'] == "") { echo "<center>Sie haben kein Password eingegeben</center>"; } else if($_POST['email']== '$checkmail'){ $result= mysql_query($checkmail)OR die("Query: <pre>".$checkmail ."</pre>\n"."Antwort: ". mysql_error()); if (mysql_num_rows($result)>0){ $error.= "- Die Eingegeben E-Mail Adresse ".$email ." ist bnereits in unserer Datenbank vorhanden"; } } else{ $foo = explode(",", $_POST['email']); foreach($foo as $bar) { mysql_query("INSERT INTO `login` (`email`) VALUES ('".$bar."') ON DUPLICATE KEY UPDATE `email`=`email`"); } }
weiß grad nicht wie ich es einbinden soll!
-
Hallo,
dir fehlt Grundwissen für MySQL! Was du machen muusst ist, das Tabellenfeld `email` auf eindeutig (UNIQUE) setzen. Das ganze passiert nur einmal und hat den Sinn, dass es keinen zweiten Eintrag mit dem selben Inhalt geben darf!
Du gehst also in deine MySQL-GUI (phpmyadmin z.B.) oder rufst es direkt über die Konsole auf. Dann führst du den Befehl ALTER TABLE `login` ADD UNIQUE (`email`); aus.
In deinem PHP-Script machst du dann nichts anderes mehr als:
$password = $_POST['password']; $emails = $_POST['emails']; if ($password=="") { print "Passwort leer"; exit; } if ($emails =="") { print "EMails leer"; exit; } $emails = explode(",", emails); foreach($emails as $email) { mysql_query("INSERT INTO `login` (`email`) VALUES ('".$email."') ON DUPLICATE KEY UPDATE `email`=`email`"); }
Das wars schon.
VlG
-
hallo,
das weiß ich und bin ja dabei es zu lernen bzw. möchte es unbedingt!
Und Ihre Erklärungen sind einfach spitze!Naja ich versuch später! leider komm ich hier von der Firma nicht auf mein phpmyadmin!
naja das geht auch XDmysql_query("ALTER TABLE `login` ADD UNIQUE (`email`)");
Dank nochmals für die Erfolgreiche Informationen !
-
Hey hmmz,
ich habe bemerkt, dass er das Password nicht in die Datenbank einträgt nur die email? weist du woran das liegt?
hier dein code nochmal:
$password = $_POST['password']; $email = $_POST['email']; if ($password=="") { print "<br><br><br><center>Sie haben kein Password eingetragen<br><FONT SIZE=2>(Password z.b. 1111)</FONT><br><br><a href=versenden.php>Neuer Versuch</a></center>"; exit; } if ($email =="") { print "<br><br><br><center>Sie haben keine Email Addresse eingetragen!<br><br><a href=versenden.php>Neuer Versuch</a></center>"; exit; } $email = explode(",", $email); foreach($email as $email) { mysql_query("INSERT INTO `login` (`email`) VALUES ('".$email."') ON DUPLICATE KEY UPDATE `email`=`email`"); //mysql_query("INSERT INTO `login` (`password`) VALUES ('".$password."')ON DUPLICATE KEY UPDATE `password`=`password`"); }
-
<center>, <font>, <br>
Ich hab innerlich geweint, als ich das gelesen hab.Aber ok, weiter im Text. Kann sich ja nicht jeder an Standards halten :p
Wenn du schon abschreibst, dann auch richtig..
ließ nochmal den Codeausschnitt von hmmz und dann deinen. Und achte darauf, auch alle Variablennamen so zu schreiben, wie er es gemacht hat
Und informier dich mal drüber, was Kommentare sind und was die bewirken
-
Hi,
ja -> das liegt daran dass du ihm nicht sagst dass er es eintragen soll!
mysql_query("INSERT INTO `login` (`email`, `password`) VALUES ('".$email."','".$password."') ON DUPLICATE KEY UPDATE `email`=`email`");
Dann muss `password` allerdings ebenfalls UNIQUE sein ... (also die Verbindung aus email und password muss unique sein)
VlG
-
Wo Sie Recht haben, haben Sie Recht!
Danke