• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mailversand Abfrageproblem (whileschleife)

Status
Für weitere Antworten geschlossen.

Frank

Neues Mitglied
Hallo...,
Ich habe einen kleinen Auftrag bekommen. Ich soll eine Liste erstellen, in der verschiedene emailadressen dargestellt sind. Die emailadressen sind in einer mysql datenbank und werden per whileschleife abgerufen. Für jede mail wird eine checkbox erstellt, die sich neben der mail befindet. Name der Checkbox ist = der mailadresse. Die checkboxen werden also so generiert:
Code:
$abfrage = "SELECT * FROM mail ORDER BY name ASC";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
  {
   echo '<input type="checkbox" name="',$row->mail,'"></input>';
  }
das ganze steht in einer form, die man abschicken kann. Es geht darum, dass man eine mail an die personen schicken kann, bei den man die checkbox aktiviert hat. um herauszufinden, welche checlboxen aktiviert sind habe ich das versucht aber es geht nicht:
Code:
$abfrage = "SELECT * FROM mail ORDER BY name ASC";
$ergebnis = mysql_query($abfrage);
$empfaenger = "";
while($row = mysql_fetch_object($ergebnis))
  {
   $mail = $row->mail;
   if ($_GET[$mail] != "")
    {
     $empfaenger .= $mail.", ";
    }
  }  
$length = strlen ($empfaenger);
$length-2;
$empfaenger = substr ($empfaenger, 0, $length);
Ich dachte mir das so:
wenn die checkbox aktiviert wurde, dann übermittelt sie den wert on. somit ist die bedingung der if abfrage erfüllt und die mail wird in den string $empfaenger geschrieben und es wird ein " ," rangehängt. Somit hat man am ende der while schleife alle empfänger getrennt mit komma im string $empfaenger.
Code:
 $length = strlen ($empfaenger);
$length-2;
$empfaenger = substr ($empfaenger, 0, $length);
entfernt dann das letzte leerzeichen und komma...

Der String $empfaenger bleibt aber leer.

Kennt ihr da eine lösung? Mache ich das ganz falsch?
 
Mein Vorschlag:
Code:
$abfrage = "SELECT * FROM mail ORDER BY name ASC";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
  {
   echo '<input type="checkbox" name="mail[]" value="''.$row->mail.''"></input>';
  }
Code:
$empfaenger = '';
foreach($_GET['mail'] as $key => $mail) {
 $empfaenger .= $mail.($key<count($_GET['mail'])-1 ? ',' : '');
}
 
AHh... noch einproblem...

jetzt bekomm ich zwar den string , aber wenn ich es in das mailscript einbaue, wird die email nicht versand, wenn ich sie anmehre senden will:
mein email script:
Code:
$Empfaenger = $_GET['empfaenger'];
$Betreff = $_GET['titel'];
$Nachricht = nl2br ($_GET['text']);
$Header = "MIME-Version: 1.0\n";
$Header .= "Content-type: text/html; charset=iso-8859-1\n";
$Header .= "FROM:".$_GET['absender'];
mail($Empfaenger, $Betreff, $Nachricht, $Header);

Sowie empfaenger nicht mehr so ist: [email protected] sondern so ist: [email protected], [email protected] funzt es net mehr, wie mach ich das so,k das diese mail an mehrere empfänger geschickt wird. Dachte da schon an eine while-Schliefe aber wie macht man eine whileschleife wenn der string so aussieht: mil1,mail2,mail3,mail4 und mann für jede mail die while schleife machen will?

Dazu müsste man den string an den , immer trennen und jede mail in ein array packen
*EDIT*
hat sich schon erledigt, hab das jetzt so gelösßt:
Code:
<?php
$array = split ( ',', $_GET['empfaenger']);
foreach ($array as $empfaenger)
 {
 $Empfaenger = $empfaenger;
 $Betreff = $_GET['titel'];
 $Nachricht = nl2br ($_GET['text']);
 $Header = "MIME-Version: 1.0\n";
 $Header .= "Content-type: text/html; charset=iso-8859-1\n";
 $Header .= "FROM:".$_GET['absender'];
 mail($Empfaenger, $Betreff, $Nachricht, $Header);
 }

echo '<head><meta http-equiv="refresh" content="0; URL=main.php?message=Email erfolgreich gesendet!"></head>';
?>
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben