Mail funktion probleme

workel

Grünschnabel
Guten Morgen

Ich habe ein kleines problem, die Mails werden versendet aber doppelt, wenn nur ein Benutzer in der Datenbank steht.
Stehen 10 Benutzer in der DB habe ich 20 Mails.

Ich frage mich wieso? hier mal der Code
PHP:
<?
function mail_system() {
   setlocale(LC_TIME, "C");
   $datum = strftime("%d.%m.%y");
   echo '<form action="admin.php?pa=9" method="post"><br><table>
   <tr><td>Ziel:</td><td><select name="target">
   <option value="1">1. Alle</option>
   <option value="2">2. Mod/Gast/Test</option>
   <option value="3">3. Chat/Techniker/News</option>
   <option value="4">4. Sen</option>
   </select></td></tr>
   <tr><td>Betreff:</td><td><input size=60 type=text name=subject value="test News vom '.$datum.'"></td></tr>
   <tr><td>Inhalt:<tt>(HTML)</tt></td><td>
   <textarea name="content" cols="50" rows="14"></textarea></td></tr></table>
   <br>
   <input type=submit name="send" value="Versenden">
   </form>
   ';
   if ($_POST["send"] == "Versenden") {
    echo "<br>Versendevorgang..<br>";
    $target = $_POST["target"];
    $subject = $_POST["subject"];
    $content = $_POST["content"];
    echo "P&uuml;rfe Daten ..<br>";
    if (strlen($subject) == 0) die("Kein Betreff!");
    if (strlen($content) == 0) die("Kein Inhalt!");
    echo "Versende Mails...<br>";
    $my = new tmysql();
    $my->DB();
    if ($target == 1) $res = $my->query("SELECT * FROM pdr_int");
    if ($target == 2) $res = $my->query("SELECT * FROM pdr_int_grpzu WHERE GroupID=2 OR GroupID=3 OR GroupID=4;");
    if ($target == 3) $res = $my->query("SELECT * FROM pdr_int_grpzu WHERE GroupID=5 OR GroupID=7 OR GroupID=8;");
    if ($target == 4) $res = $my->query("SELECT * FROM pdr_int_grpzu WHERE GroupID=6;");
    while ($data = mysql_fetch_object($res)) {
    	$res1 = $my->query("SELECT * FROM pdr_int WHERE active=1 OR id=".$data->userid.";");  
      while ($data1 = mysql_fetch_object($res1)) {	
     echo "Sending Mail to: ".$data1->modemail."...";
     $headers  = "MIME-Version: 1.0\r\n";
     $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
     $headers .= "To: ".$data1->modname." <".$data1->modemail.">\r\n";
     $headers .= "From: test.de <nichtantworten@test.de>\r\n";
     mail($data1->modemail,$subject,$content,$headers);
     echo "ok!<br>";
     $my->close();

               }
          }
    }
?>

Danke mal im vorraus
mfg
 
Kann das an der Mysql liegen, das ich die Abfrage falsch mache.

Ich habe es soweit hinbekommen, wenn ein benutzer drinsteht versendet er nur eine Mail.

Stehen aber zwei Benutzer drin, bekommt jeder zwei Mails.

Deswegen nehme ich an das in der Mysqltable oder in der abfrage was nicht stimmt.

mfg
 
So ich habe es nun selbst gelöst
PHP:
if ($target == 1) $res = $my->query("SELECT * FROM pdr_int_grpzu GROUP BY userid;");
    if ($target == 2) $res = $my->query("SELECT * FROM pdr_int_grpzu WHERE GroupID=2 OR GroupID=3 OR GroupID=4 GROUP BY userid;");
    if ($target == 3) $res = $my->query("SELECT * FROM pdr_int_grpzu WHERE GroupID=5 OR GroupID=7 OR GroupID=8 GROUP BY userid;");
    if ($target == 4) $res = $my->query("SELECT * FROM pdr_int_grpzu WHERE GroupID=6 GROUP BY userid;");
    $num = mysql_num_rows($res);
    echo "Anzahl: ".$num."<br>";
    while ($data = mysql_fetch_object($res)) {
    	$res1 = $my->query("SELECT * FROM pdr_int WHERE active=1 AND id=".$data->userid.";");

Man baeachte AND und OR in der abfrage, was das anrichten tut habe ich selbst bemerkt.

mfg workel
 
Zurück