Inputbox (sql INSERT INTO)
-
Hey,
also meine Tabelle steht schon!
Die sieht so ausid email password
nunja und ich habe jetzt eine inputbox
email & passwordder User trägt seine email und sein password ein, anschließend wird in meine Datenbank id email und password eingetragen
Nun möchte ich das die inputbox email mehrere funktionen hat, also das es möglich ist 2 Emails einzutragen(z.b: 1@live.de,2@live.de,3@live.de)
Datenbank sollte dann so aussehen
id email password
1 1@live.de
2 2@live.de
3 3@live.de
( ich möchte die spalte email erweitern bzw mehrere Einträge hinzufügen)
-
also du kannst entweder deine tabellenstruktur ändern
id email1 email2 email3 email4 passwort
und schreibst also jede mail adresse einzeln rein...
...oder du schreibst alle email adressen wie von dir vorgeschlagen kommesepariert in das eine email-feld deiner tabelle, dass du ja schon hast.
hier ist jetzt die frage, wie die mail adressen auf deiner seite eingetragen werden. hast du mehrere input felder, zb:
inputfeld:email1, inputfeld:email2, inputfeld:email3, inputfeld:passwort
oder hast du folgendes:
inputfeld:email, inputfeld:passwort
wenn du ersteres hast, musst du dir mit php (ich geh jetzt mal davon aus, dass du php benutzt) eine funktion schreiben, welche dir jedes inputfeld mit einem komma dahinter in eine variable schreibt.. zb so ungefähr
$var emailvar = $_GET['email1'].','.$_GET['email2'].','.$_GET['email3'];
wenn du deine mail adressen in einem inputfeld bekommst, so in der art
mail1@example.com,mail2@example.com,mail3@example.com
dann kannste ja auch einfach mit
$emailvar = $_GET['email']; $sql = insert into deinetabelle(´email´) VALUES($emailvar); etc...
die adressen eintragen. im übrigen brauchst du natürlich auch eine funktion zum separieren der mail adressen, damit du damit auch arbeiten kannst.
hab ich dich richtig verstanden? wolltest du das wissen oder hab ich grad meine zeit verschwendet?
-
verwirrt den armen doch nicht so...
<form method="POST"> <input type="text" name="mails" /> <input type="submit" name="submit" value="foobar" /> </form>
$mails = $_POST['email']; $mails = explode(",", $mails); foreach($mails as $mail) { mysql_query("INSERT INTO tabelle (`email`) VALUES ('".$mail."'); }
Mehr isset nich...
Erklärung: $_POST['mails'] enthält den Inhalt aus dem input (name="mails"). Dies wird durch explode in seine Einzelteile zertrennt und schön nacheinander in die Datenbank geschrieben...
VlG
-
Korrektur:
mysql_query("INSERT INTO tabelle (`email`) VALUES ('".$mail."')");
-
hmmz schrieb:
verwirrt den armen doch nicht so...
Wer verwirt hier wen? Ich wüsste jetzt wirklich gern, was genau michi-ffm jetzt haben will
-
Hey, beide Code sind spitze und ich dachte die würden klappen oder ich bin zu blöd die einzusetzen... aber trotzdem danke die haben mir etwas geholfen ich meinte eher so
$sql = 'INSERT INTO `login` (`id`, `password`, `email`) VALUES (NULL, \'\', \'michi@live.de\'), (NULL, \'\', \'test@live.de\');';
aber ich möchte ja z.b. 50 emails eintrag ... also copy and paste
-
ich versteh immer noch nicht, was du genau willst
willst du
1. pro benutzer eine id, eine emailadresse und ein passwort
oder
2. pro benutzer eine id, viele emailadressen und ein passwort?also mir würde es helfen, wenn du mal fünf datensätze in tabellenform mal beispielsweise aufschreiben würdest.
trotzdem versuch ich es nochmal mit einem codeschnipsel:
//html-formular <form action="deinPhpSkript.php" method="post"> <input type="text" id="email1" name="email1" /> <input type="text" id="email2" name="email2" /> <input type="text" id="email3" name="email3" /> <input type="text" id="passwort" name="passwort" /> </form> //deinPhpSkript.php $emailvar = $_POST['email1'].','.$_POST['email2'].','.$_POST['email3']; $passwort = $_POST['passwort']; $result = mysql_query("INSERT INTO `deinetabelle` (`email`, `passwort`) VALUES ('$emailvar', '123456')");
Generell hab ich das Gefühl, dass Du bei einem Login noch mehr Infos brauchst... schau mal hier: http://www.phpbuddy.eu/login-systeme-einfach-bis-profi.html?showall=1
-
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