Andre S: While Schleife, je nach Row-Result eine Email versenden

Hallo zusammen, ich kämpfe gerade mit einem PHP Script, das jeden Tag einmal ausgeführt werden soll und in dem mittels einer While Schleife je Row eine Email an einen Eintrag innerhalb der Row geschickt werden soll. Also die SQL Zeile beinhaltet ein Feld "email". Wenn die Zeile innerhalb der Schleife aufgeführt wird, soll eine mail an diese "email" verschikct werden, gefüllt mit anderen Daten aus dieser Zeile.

Hier mein Versuch, der aber nicht ganz klappt. Es bekommt jede Zeile alle Zeilen in der Mail ausgeliefert, und nicht nur seine eigene:

<?php
$servername = "mysql5.xxx.de";

// Create connection
$conn = new mysqli($servername, 'dbxxx', 'xxx', 'dbxxx');
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT `user_id`,`f_name`,`l_name`,`email`,`customer`,`customer_no`,`date`,`fdate`
FROM `wp_fsq_data` HAVING `fdate` BETWEEN  '" . date('Y-m-d', strtotime('-15 days')) . "'
AND '" . date('Y-m-d', strtotime('0 days')) . "' ORDER BY `fdate` ";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
     // output data of each row
	$message = "Follow-Up: Gespraechsberichte";
	$message .= "\n";
     while($row = $result->fetch_assoc()) { 
		$message .= $row["customer"] . ', (Kundennr. '.$row["customer_no"].') : Fälligkeitsdatum '.date('d.m.Y', strtotime($row["fdate"])).' - Bitte nachgehen!' . "\n";
		$empfaenger  = $row["email"]; 	
		$betreff = "Follow-Up: Gesprächsbericht";
		$headers = "From: Gesprächsberichte <stasi@xxx.de>";
		 mail($empfaenger, $betreff, $message, $headers);
		}
} else {
    echo "0 results";
}
$conn->close();
?>  

Kann mir hier bitte wer weiterhelfen? Danke und viele Grüße André

  1. Moin,

    ich kämpfe gerade mit einem PHP Script, das jeden Tag einmal ausgeführt werden soll und in dem mittels einer While Schleife je Row eine Email an einen Eintrag innerhalb der Row geschickt werden soll.
    Also die SQL Zeile beinhaltet ein Feld "email". Wenn die Zeile innerhalb der Schleife aufgeführt wird, soll eine mail an diese "email" verschikct werden, gefüllt mit anderen Daten aus dieser Zeile.

    Hier mein Versuch, der aber nicht ganz klappt. Es bekommt jede Zeile alle Zeilen in der Mail ausgeliefert, und nicht nur seine eigene:

    ja, weil du ein Logikproblem hast. Du initialisierst die Stringvariable $message einmal am Anfang, baust dann nach und nach alle Felder dran und verschickst die Nachricht dann mit mail(). Danach gehst du zur nächsten Zeile über - der bisherige Inhalt von $message bleibt aber erhalten, du setzt ihn ja nirgends zurück. Also werden die Felder der nächsten Zeile einfach wieder angehängt.

    So long,
     Martin

    --
    Logik ist die Theorie, Chaos die Praxis.
  2. Tach!

    Hier mein Versuch, der aber nicht ganz klappt. Es bekommt jede Zeile alle Zeilen in der Mail ausgeliefert, und nicht nur seine eigene:

    Du beschreibst das Problem aus der Sicht der Anwender. Soweit so gut, damit man weiß, was du zu erreichen versuchst. Aber um seine Ursache zu ermitteln, musst du aus es der Sicht eines Programmierers anschauen. Dazu gehört, dass man die Inhalte der Variablen verfolgt und Wunsch und Wirklichkeit miteinander vergleicht. Selbst wenn du nicht wie Der Martin die Ursache mit einem Blick auf den Code findest, würde dir zumindest auffallen, dass $message immer weiter anwächst und somit das Problem vermutlich in dessen Umgebung zu suchen ist.

    dedlfix.