-
13.07.11 09:53 #1
- Registriert seit
- Mar 2009
- Beiträge
- 71
Hallo,
ich sitze gerade vor folgendem Problem: Ich habe ein Formular, das eine Liste von eMail Adressen an ein PHP Script überträgt. Die Adressen sind jeweils durch einen Zeilenumbruch getrennt. Nun möchte ich aus der Datenbank alle IDs auslesen, die zu den eMail Adressen gehören...
Das Problem ist nur, dass immer nur jeweils die ID der zuletzt eingegebenen, also untersten, eMail Adresse ausgegeben wird.
Mein Code:
Übertrage ich mit Hilfe des Formulars nun beispielsweise die AdressenPHP-Code:$adressen = $_POST['mails'];
$adressenbr = str_replace("\n","<br />",$adressen);
$array = explode("<br />",$adressenbr);
$sql = "SELECT id from mails WHERE mail IN ('" . implode("','",$array) . "')";
$res = mysql_db_query($mysqldb, $sql, $mysql);
while ($row = mysql_fetch_assoc($res)) {
$id = $row['id'];
echo $id."<br>";
}
max@mustermann.de
mustermann@max.de
müsste die Ausgabe
5
9
lauten. Stattdessen kommt nur eine "9". Sprich: Nur die ID der letzten eMail - mustermann@max.de
Über einen Tipp wäre ich sehr dankbar!
CoverUnder
-
13.07.11 10:02 #2
Wieso machst du in deinem Script einige Sachen doppelt?
Das str_replace() könntest du weglassen und gleich auf den "\n" exploden.
Lass dir doch vorher mal den implode ausgeben bevor du ihn den Query packst.PHP-Code:$id = $row['id'];
echo $id."<br>";
// warum nicht gleich:
echo $row['id'] . "<br>";
kommt mir auch ein bissl suspekt vor, warum du dort double und single-Quotes verwendest.PHP-Code:implode("','",$array)
Die Schweine von heute sind unsere Schnitzel von morgen!
-
Hallo,
hast du dir den Teil implode("','",$array) schon mal ausgeben lassen?m.f.g
b. zimmel
-
13.07.11 10:15 #4
- Registriert seit
- Mar 2009
- Beiträge
- 71
Hallo Maniac, das stimmt - ich hab mittlerweile einfach schon recht viel herum probiert und habe alte Sachen dabei einfach stehen lassen, anstatt es neu & sauber zu schreiben. Im implode() verwende double und single Quotes, da nur so zumindest ein Wert ausgegeben wird - verwende ich nur einfache Anführungszeichen oder nur normale Anführungszeichen, wird nicht mal mehr die ID der letzten eMail ausgegeben...
Hallo vandamp - hier die Ausgabe des implode-Teils:
Müsste doch stimmen, oder?max@mustermann.de ','mustermann@max.de ','mustermax@mann.de
-
-
Hallo,
also ich sehe da ein paar unnötige Leerzeichen, oder sind in deiner DB die Email Adressen wirklich genau so enthalten? str_replace könnte helfenm.f.g
b. zimmel
-
13.07.11 10:40 #7
Lass dir mal den Kompletten Query ausgeben:
Dann wirste sehen das die Quotes nicht richtig sind.PHP-Code:$sql = "SELECT id from mails WHERE mail IN ('" . implode("','",$array) . "')";
echo $query;
Die Schweine von heute sind unsere Schnitzel von morgen!
-
13.07.11 10:54 #8
- Registriert seit
- Mar 2009
- Beiträge
- 71
Danke für die vielen Antworten!
Die Leerzeichen habe ich gar nicht gesehen - stimmt! Daran muss es liegen!
Habe es nun wie folgt geändert:
Nun sieht es so aus:PHP-Code:$adressen = $_POST['mails'];
$adressen = str_replace("\n",",",$adressen);
$test3 = str_replace(" ","",$adressen);
$sql = "SELECT id from mails WHERE mail IN ($test3)";
$res = mysql_db_query($mysqldb, $sql, $mysql);
while ($row = mysql_fetch_assoc($res)) {
echo $row['id'] . "<br>";
}
Die Lehrzeichen zwischen eMail und Komma wollen aber auch trotz des str_replace() nicht weg... Laut Google soll es da auch einen Unterschied machen, ob man beim str_replace einfache oder normale Anführungszeichen verwendet, aber bei mir funktioniert es in beiden Fällen nicht...max@mustermann.de ,mustermann@max.de ,maxmuster@mann.de
-
13.07.11 11:01 #9
Wie wäre es mit trim() ?
Die Schweine von heute sind unsere Schnitzel von morgen!
-
13.07.11 11:03 #10
- Registriert seit
- Mar 2009
- Beiträge
- 71
trim() entfernt aber soweit ich weiß nur Leerzeichen jeweils am Anfang und am Ende - diese sind ja mitten drin, von daher wird das wohl, denke ich, auch nicht funktionieren
-
13.07.11 11:16 #11
hmm,
also wenn ich:
mache, erhalte ich folgende Ausgabe:PHP-Code:$string = "max@mustermann.de , mustermann@max.de , moritz@max.de ";
$string = str_replace(" ","",$string);
echo $string;
Was passiert wenn du im Query noch um die Variable $test3 single-Quotes machst?max@mustermann.de,mustermann@max.de,moritz@max.deDie Schweine von heute sind unsere Schnitzel von morgen!
-
13.07.11 11:22 #12
- Registriert seit
- Mar 2009
- Beiträge
- 71
Ich habe es jetzt so versucht
Und das seltsame an der Sache ist, dass ich da zwei verschiedene Ausgaben bekomme.PHP-Code:$adressen = $_POST['mails'];
$adressen = str_replace("\n",",",$adressen);
$adressen = str_replace(" ","",$adressen);
$test3 = str_replace(' ','',$adressen);
echo $test3;
$string = "max@mustermann.de ,mustermann@max.de ,maxmuster@mann.de";
$string = str_replace(" ","",$string);
$string = str_replace(' ','',$string);
echo "<p>".$string;
Das Problem mit dem Leerzeichen habe ich also nur bei dem String, der über die Textarea und das POST reinkommtmax@mustermann.de ,mustermann@max.de ,maxmuster@mann.de
max@mustermann.de,mustermann@max.de,maxmuster@mann.de
edit:
Nun habe ich den String ohne Lehrzeichen in der Abfrage verwendet und ich bekomme nach wie vor keinen Wert zurück - nun nicht einmal mehr die ID der letzten eMail, sondern gar nichts mehr. Also liegt da noch irgendwo der Hund begraben, die Leerzeichen alleine können es nicht seinGeändert von CoverUnder (13.07.11 um 11:25 Uhr)
-
13.07.11 11:27 #13
Vielleicht haste auch noch den "\r" im String.
Möglich wäre:
"\r\n",
"\r",
"\n"Die Schweine von heute sind unsere Schnitzel von morgen!
-
13.07.11 11:35 #14
- Registriert seit
- Mar 2009
- Beiträge
- 71
Heißer Tipp, vielen Dank! Das Leerzeichenproblem wäre hiermit gelöst, aber die SQL Abfrage funktioniert leider nach wie vor nicht.
Sieht jetzt wie folgt aus:
PHP-Code:$adressen = $_POST['mails'];
$test3 = str_replace("\r\n",",",$adressen);
echo $test3;
$sql = "SELECT id from mails WHERE mail IN ($test3)";
$res = mysql_db_query($mysqldb, $sql, $mysql);
while ($row = mysql_fetch_assoc($res)) {
echo $row['id'] . "<br>";
}
Der String $test3 sieht nun so aus:
max@mustermann.de,mustermann@max.de,maxmuster@mann.de
-
13.07.11 11:40 #15PHP-Code:
$res = mysql_db_query($mysqldb, $sql, $mysql) or die(mysql_error());
Die Schweine von heute sind unsere Schnitzel von morgen!
Ähnliche Themen
-
Array soll mit zufälligen Werten aus anderem Array gefüllt werden
Von jenny-birdy im Forum Java GrundlagenAntworten: 4Letzter Beitrag: 02.11.09, 17:18 -
[perl] Vorhandes Array [Name;Vorname/n] in zweidimensionales Array splitten
Von FlockY im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 3Letzter Beitrag: 31.08.09, 18:53 -
mehrere indizierte Array zu einem Array fügen
Von Maniac im Forum PHPAntworten: 10Letzter Beitrag: 17.12.08, 13:53 -
Je nach Array-eintrag neues array erstellen
Von ElGrAnDiOs im Forum PHPAntworten: 2Letzter Beitrag: 25.11.05, 12:17 -
[PHP | MySQL] Werte aus einem Array zählen, nicht im Array
Von Claas M im Forum PHPAntworten: 8Letzter Beitrag: 01.08.04, 11:23



2Danke

Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren