Ankündigung

Einklappen
Keine Ankündigung bisher.

Mailversand erfolgt nicht an alle

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mailversand erfolgt nicht an alle

    Folgendes Problem habe ich.

    In einer Tabelle(Mitglieder) habe habe ich Namen, in einer anderen Tabelle(Helfer) wähle ich die Namen aus der Mitgliedertabelle aus.
    Jetzt möchte ich an alle Helfer schicken wer als Helfer dabei ist.

    folgenden Code habe ich dabei:
    PHP-Code:
     $abfrage "SELECT Mitglieder.Mail FROM Mitglieder, HelferPlanung WHERE Mitglieder.Name = HelferPlanung.Rennleiter1 and Mitglieder.Name = HelferPlanung.Rennleiter2 and Mitglieder.Name = HelferPlanung.Zeitnehmer1 and Mitglieder.Name = HelferPlanung.Zeitnehmer2 and Mitglieder.Name = HelferPlanung.Zeitnehmer3 and Mitglieder.Spartenleitung = 1";
     
    $ergebnis mysql_query($abfrage);
     
    $row mysql_fetch_array($ergebnis);
     
    $email$row["Mail"];  
     
    $from=("123@123.de");
     
    $subject="Helfereinteilung für das Rennen";
     
    $arr runner_mail(array('to' => $email'subject' => $subject'body' => $body)); 
    allerdings erhalte ich als Absender die Serveradresse und die Mail geht nur an die Adresse, die beim dem mitglied hinterlegt ist, das in der Tabelle Helfer als Rennleiter1 eingetragen ist.
    Kann mir einer Helfen, wo der Fehler liegt.

    Gruß Mollyman

  • #2
    Bitte nochmal? Was genau läuft falsch? Werden überhaupt die richtigen Emailadressen aus der Datenbank ausgelesen? Du liest anscheinend nur EINE EINZIGE Emailadresse aus, ist das so richtig? Ansonsten müsstest du die Email natürlich in einer Schleife versenden.

    Hinweis:
    [!] Bitte verwende nicht mail() sondern eine entsprechende Mailer Klasse! Viele Probleme lassen sich dadurch beheben.
    Hier findest du einen Überblick von robo47 zu verschiedenen Mailer Klassen: Mail() ist tot, es lebe mail()

    Kommentar


    • #3
      ist ja auch kein Wunder, dass nur einer die E-Mail bekommt, wenn du nur den ersten ausgelesenen Datensatz verarbeitest!

      Auch kommt mir dein Where Clause ein wenig spanisch vor... es werden nur die genommen, dessen namen dem von Rennleiter1, 2, Zeitnehmer1, 2, 3 UND Sparentenplanung entspricht ?!?

      alles etwas abstrus

      Kommentar


      • #4
        ok damit scheint das eine Problem erkannt zu sein.

        Er soll es an alle Email-Adressen senden die er in dem Zuge ermittelt und nicht nur an einen.

        das zweite Problem ist die Absenderadresse die er nicht setzt

        Kommentar


        • #5
          Zitat von Papst Beitrag anzeigen
          ist ja auch kein Wunder, dass nur einer die E-Mail bekommt, wenn du nur den ersten ausgelesenen Datensatz verarbeitest!

          Auch kommt mir dein Where Clause ein wenig spanisch vor... es werden nur die genommen, dessen namen dem von Rennleiter1, 2, Zeitnehmer1, 2, 3 UND Sparentenplanung entspricht ?!?

          alles etwas abstrus
          Ja so soll es sein.

          Ok ich versuche es etwas genauer

          In der Tabelle Mitglieder stehen alle Mitglieder unter anderm mit Name und Mailadresse und dem Kenner ob sie in der Spartenleitung sind. Jetzt Plane ich einen Helfereinsatz.
          Ich möchte dazu dann alle Mitglieder informieren, die eingeteilt sind. Also nur die in Rennleiter1 usw. stehen. Zusätzlich soll die Spartenleitung die gleiche Mail zur Info erhalten. Hintergrund ist das die eingeteilten eine Infor erhalten das sie eingeteilt sind und falls die Einteilung auf falscher Info beruht sich melden können.

          Kommentar


          • #6
            Als erstes musst du das ganze in einer Schleife verarbeiten, bspw. while

            statt:
            PHP-Code:
             $row mysql_fetch_object($ergebnis); 
            machst du:
            PHP-Code:
            while ($mail mysql_fetch_array($ergebnis)) {
             
            $mailaddy $mail->mail;
             
            //Hier nun die E-Mail rein, inklusive dem .send(); 
             // So erhalten die nachricht.
             ///...

            Look at This!
            Digital-Duty.DE
            Für Syntax-Fehler übernehme ich keine Haftung!

            Kommentar


            • #7
              ok

              ich habe die Änderungen gemacht, jetzt habe ich ein undefined offset in Zeile 59

              Hier die ganze Datei:
              PHP-Code:
              <?php

              // List page: Before process
              function BeforeProcessList(&$conn)
              {

              if(@
              $_REQUEST["a"]=="email")
              {
               if(@
              $_REQUEST["selection"])
               {
               
              $body="";
               foreach(@
              $_REQUEST["selection"] as $keyblock)
               {
               
              $arr=split("&",refine($keyblock));
               if(
              count($arr)<1)
               continue;
               
              $keys=array();
               
              $keys["HelfereinsatzID"]=urldecode(@$arr[0]);
               
              $where KeyWhere($keys);
               
              $rs CustomQuery("select * from HelferPlanung where $where");
               
              $data=db_fetch_array($rs);
              $body .= "Veranstaltung: " $data['Veranstaltung'] . "\n";
               
              $body .= "Rennleiter:              " $data['Rennleiter1'] . "\n";
              $body .= "Rennleiter:              " $data['Rennleiter2'] . "\n";
               
              $body .= "Zeitnehmer:              " $data['Zeitnehmer1'] . "\n";
              $body .= "Zeitnehmer:              " $data['Zeitnehmer2'] . "\n";
               
              $body .= "Zeitnehmer:              " $data['Zeitnehmer3'] . "\n";
              $body .= "Hinweise:                 " $data['Hinweise'] . "\n-------dies ist ein test------------\n\n";
               }
               
              // send the email
               
              $abfrage "SELECT Mitglieder.Mail 
              FROM Mitglieder, HelferPlanung 
              WHERE  Mitglieder.Name = HelferPlanung.Rennleiter1 
              and Mitglieder.Name = HelferPlanung.Rennleiter2 
              and Mitglieder.Name = HelferPlanung.Zeitnehmer1 
              and Mitglieder.Name = HelferPlanung.Zeitnehmer2 
              and Mitglieder.Name = HelferPlanung.Zeitnehmer3 
              and Mitglieder.Spartenleitung = 1"
              ;
               
              $ergebnis mysql_query($abfrage);
               while (
              $mail mysql_fetch_array($ergebnis)) 
               
              $mailaddy $mail->mail;
               
              $from=("martin.mollet@t-online.de");
               
              $subject="Helfereinteilung für das Rennen";
               
              $arr runner_mail(array('to' => $mail'subject' => $subject'body' => $body));
              // if error happened print a message on the web page
              if (!$arr["mailed"])
              {
                echo 
              "Error happened: <br>";
                echo 
              "File: " $arr["errors"][0]["file"] . "<br>";
                echo 
              "Line: " $arr["errors"][0]["line"] . "<br>";
                echo 
              "Description: " $arr["errors"][0]["description"] . "<br>";
               }
              }
                }  
              ;
              // function BeforeProcessList
              $arrEventTables["BeforeProcessList"]="HelferPlanung";

              Kommentar


              • #8
                Welches ist die Zeile 59?
                Look at This!
                Digital-Duty.DE
                Für Syntax-Fehler übernehme ich keine Haftung!

                Kommentar


                • #9
                  @mollyman:
                  Nicht einfach alles ohne zu überlegen abschreiben. Und rücke den Code mal bitte ein bisschen ein.

                  @Tholi:
                  Besser aufpassen was du vorschlägst.

                  PHP-Code:
                   while ($mail mysql_fetch_array($ergebnis)) 
                   
                  $mailaddy $mail->mail
                  fetch_array nutzem aber wie bei fetch_object zugreifen. Für eine Sache muss man sich schon entscheiden.

                  PHP-Code:
                  $arr runner_mail(array('to' => $mail'subject' => $subject'body' => $body)); 
                  Wenn die Variable in der while-Schleife schon $mail heißt, kann das hier so auch nicht klappen.

                  PHP-Code:
                  echo "File: " $arr["errors"][0]["file"] . "<br>";
                    echo 
                  "Line: " $arr["errors"][0]["line"] . "<br>";
                    echo 
                  "Description: " $arr["errors"][0]["description"] . "<br>"
                  Ist $arr wirklich so gefüllt?
                  [I]Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)[/I]
                  [I]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/I]

                  Kommentar


                  • #10
                    @dennis81:

                    Ist richtig!, dass ich drauf achten hätte können ob die Variablennamen probleme machen könnten. Hab allerdings voraus gesetzt das ein wenig mit gedacht wird, wenn man Variablen nutzt.
                    Look at This!
                    Digital-Duty.DE
                    Für Syntax-Fehler übernehme ich keine Haftung!

                    Kommentar


                    • #11
                      undefined offset bedeutet i.d.R., daß eine verwendete Index-Bezeichnung in einem Array nicht existiert.

                      PHP-Code:

                      $array 
                      = ('name'=>'Hans Wurst''stadt'=>'Bad Senflingen');
                      echo 
                      $array['strasse']; // undefined offset strasse !!! 
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar


                      • #12
                        PHP-Code:
                          echo "Error happened: <br>";
                          [
                        COLOR="Red"]echo "File: " $arr["errors"][0]["file"] . "<br>";[/COLOR]
                          echo 
                        "Line: " $arr["errors"][0]["line"] . "<br>";
                          echo 
                        "Description: " $arr["errors"][0]["description"] . "<br>";
                        }
                        }
                          }  
                        ;
                        // function BeforeProcessList
                        $arrEventTables["BeforeProcessList"]="HelferPlanung"
                        Die rote Zeile ist 59 zumindest nach dem auszählen

                        Hier die Fehlermeldung:

                        Fehlertyp 8
                        Fehlerbeschreibung Undefined offset: 0
                        URL xxx/xxx/HelferPlanung_list.php?
                        Fehlerdatei /var/www/xxx/xxx/xxx/include/HelferPlanung_events.php
                        Fehlerzeile 59
                        SQL Abfrage select * from HelferPlanung where HelferPlanung.HelfereinsatzID=1

                        Kommentar


                        • #13
                          Wird sich hierauf beziehen:
                          PHP-Code:
                          echo "Description: " $arr["errors"][0]["description"] . "<br>"
                          Laß Dir mal $arr bzw. $arr['errors'] ausgeben (var_dump / print_r).
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                          Kommentar


                          • #14
                            HI
                            ich muss mich wohl als blutigstem PHP Newbie outen.
                            Meine Kenntnisse sind sehr beschränkt, daher nutze ich auch ein Programm wie PHP runner. Ich selbst wäre nicht in Lage solche komplexen Dinge zu programmieren.

                            Daher kann ich mit der aussage von Dennis auch nur bedingt etwas anfangen.

                            90 % des Codes stammen auch aus dem PHPrunner sind also nicht von mir selbst gesetzt. Der Originalcode für das Emailversenden lautet:
                            if(@$_REQUEST["a"]=="email")
                            {
                            if(@$_REQUEST["selection"])
                            {
                            $body="";
                            foreach(@$_REQUEST["selection"] as $keyblock)
                            {
                            $arr=split("&",refine($keyblock));
                            if(count($arr)<1)
                            continue;
                            $keys=array();
                            $keys["OrderID"]=urldecode(@$arr[0]);
                            $where = KeyWhere($keys);
                            $rs = CustomQuery("select * from orders where $where");
                            $data=db_fetch_array($rs);
                            $body .= "OrderID: " . $data['OrderID'] . "\n";
                            $body .= "Customer: " . $data['CustomerID'] . "\n";
                            $body .= "Employee: " . $data['EmployeeID'] . "\n-------------------\n\n";
                            }
                            // send the email
                            $email="test@test.com";
                            $subject="Sample subject";
                            $arr = runner_mail(array('to' => $email, 'subject' => $subject, 'body' => $body));
                            // if error happened print a message on the web page
                            if (!$arr["mailed"])
                            {
                            echo "Error happened: <br>";
                            echo "File: " . $arr["errors"][0]["file"] . "<br>";
                            echo "Line: " . $arr["errors"][0]["line"] . "<br>";
                            echo "Description: " . $arr["errors"][0]["description"] . "<br>";
                            }
                            }
                            }
                            Dieser Code versendet aber nur an eine fest vorgegebene Adresse, ich brauche aber mehrere und unterschiedliche je nach dem was in der Tabelle steht. Daher die Anpassung des Codes

                            Kommentar


                            • #15
                              Die Lösung steht doch schon in den Beiträgen...

                              a) benutze mysql_fetch_assoc richtig
                              b) benutze schleifen richtig (du hast keine { } gesetzt, also passiert etwas, was du nicht möchtest!)

                              ansonsten verweise ich dich mal an diesen Thread: http://www.php.de/php-einsteiger/489...nsammlung.html

                              Kommentar

                              Lädt...
                              X