Ankündigung

Einklappen
Keine Ankündigung bisher.

Dynamisch generierter Newsletter

Einklappen

Neue Werbung 2019

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

  • #16
    PHP-Code:
    <?php
    error_reporting
    (E_ALL E_STRICT);

    // ... Datenbankabfrage

    // Initialisierungen 
    $plain "hallo newsletter";
    $email '';
    // enthält Inhalt des Newsletters
    $html '';

    while (
    $myrow mysql_fetch_array($result)) {
      if (
    $email != $myrow['email']) {
        echo 
    '<p>[DEBUG] e-mail wechselt</p>';

        if (
    $email != '') {
          
    $mail->AddAddress $email;
          
    $mail->Subject "Our Newsletter";
          
    $mail->Body $html;
          
    $mail->AltBody $plain;
          
    $mail->Send();
          
    $mail->ClearAddresses();

          echo 
    '<p>[DEBUG] e-mail gesendet</p>';
        }

        
    // neuen Vergleichswert setzen
        
    $email $myrow['email'];
        
    // Inhalt des Newsletters leeren
        
    $html '';
      }

      
    // neuen Datensatz zum Newsletterinhalt hinzufügen
      
    $html .= '<p>' $myrow["stelleID"] . '</p>';
      
    $html .= '<p>' $myrow["stellePosition"] . '</p>';
      
    $html .= '<p>' $myrow["stelleAngebot"] . '</p>';
      
    $html .= '<p>' $myrow["email"] . '</p>';
    }
    Ungetestet!

    Gruß
    [URL]http://hallophp.de[/URL]

    Kommentar


    • #17
      Dank Dir! Es gibt da noch ein paar Fehlermeldungen... welche ich Morgen mit klarem Kopf beheben werde!

      Kommentar


      • #18
        Da hat sich doch noch ein Bugg eingeschlichen. Da die E-Mail Adresse nach dem Wechsel abgefragt wird, wird es an die nächste anstelle der jetzigen E-Mail Adresse gesendet. Ich habe es folgendermassen zu lösen versucht
        PHP-Code:
        $plain "hallo newsletter"
        $email '';
        $vorherigeEmail '';
        $html ''


        while (
        $myrow mysql_fetch_array($result)){ 

            
        $stelleID = ($myrow["stelleID"]); 
            
        $stellePostition = ($myrow["stellePosition"]); 
            
        $stelleAngebot = ($myrow["stelleAngebot"]); 

                if (
        $email == $myrow['email']){
                    
        $vorherigeEmail $email;
                }

             if (
        $email != $myrow['email']) {
                    echo 
        '<p>[DEBUG] e-mail wechselt</p>'
                    
                    if (
        $email != '') {
                
        //$mail->AddAddress($myrow["email"]);
                        
        $mail->AddAddress $vorherigeEmail;
                      
        $mail->Subject "Our Newsletter"
                      
        $mail->Body $html
                      
        $mail->AltBody $plain
                      
        $mail->Send(); 
                      
        $mail->ClearAddresses(); 

              echo 
        '<p>[DEBUG] e-mail gesendet</p>'
            } 
            
            
             
        // neuen Vergleichswert setzen 
            
        $email $myrow['email']; 
            
        // Inhalt des Newsletters leeren 
            
        $html ''
            } 
          
        // neuen Datensatz zum Newsletterinhalt hinzufügen 
          
        $html .= '<p>' $myrow["stelleID"] . '</p>'
          
        $html .= '<p>' $myrow["stellePosition"] . '</p>'
          
        $html .= '<p>' $myrow["stelleAngebot"] . '</p>'
          
        $html .= '<p>' $myrow["email"] . '</p>';     


        echo 
        $html



        Es würde nun auch die richtige E-Mail nehmen, doch irgendwie geht das nicht mit dem versenden, AddAddress habe ich nun mit = var gemacht, aber anscheinend geht dass nicht. Wie muss ich denn dass richtig machen?

        Danke

        Kommentar


        • #19
          OK nun hab ich die richtige Syntax gefunden mit (); das senden funktioniert jetzt wieder, aber nach einem versendeten Newsletter hört er auf...

          Kommentar


          • #20
            Mittlerweile verstehe ich den ganzen Zusammenhang nicht mehr. Ich versuche das mal zusammenzufassen:

            Du hast x verschiedene Berufe und zu diesen Berufen Bewerber. Diese sollen einen Newsletter bekommen mit dem Text, der zu ihrem Beruf passt.

            Wahrscheinlich hast du aber grade nur zu einem Teil der Berufe ein Angebot, sodass nur die Leute, die diesen Beruf haben, den Newsletter bekommen.

            Manche Bewerber können zwei oder mehr Berufe eingegeben haben - dann bekommen sie ggf. auch mehrere Newsletter.

            Soweit richtig oder bin ich komplett falsch?
            [PHP]if ($var != 0) {
            $var = 0;
            }[/PHP]

            Kommentar


            • #21
              Irgendwie verstehe ich gar nicht was Du da machst. Was wird denn da zusammengebaut?
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar


              • #22
                hy

                Ich habe
                verschiedene Berufe
                verschiedene Interessenten

                Die Interessenten schreiben sich für den Newsletter in den Berufen welche Sie interesse habe ein.

                Innerhalb einer Zeitspanne werden dann alle neuen Berufe abgefragt und in einen Newsletter pro Interessent verpackt. das heisst wenn ein Interessent sich für 3 Berufkategorien eingeschrieben hat, dann bekommt er einen Newsletter mit all den neuen Stellen zu den 3 Kategorien...

                Kommentar


                • #23
                  Hallo Nikosch, verstehst du jetzt?

                  Kommentar


                  • #24
                    Habe herausgefunden dass es mir den letzten User nicht mehr verschickt... Und dass ich doppelte Abfragen jobID's / User habe.

                    Kommentar


                    • #25
                      Wie sieht denn deine SQL-Abfrage dazu aus? Ist deine Datenbank normalisiert?

                      Ich meine, Aufteilung ist gut, aber auch nur, wenn sie Sinn macht! Denn man kann es auch übertreiben.
                      Code:
                              JOIN 
                                  stelle_region
                              ON
                                  stelle_region.stelleID=stelle.stelleID
                              JOIN
                                  region
                              ON
                                  region.regionID=stelle_region.regionID
                              JOIN 
                                  stelle_beruf
                              ON
                                  stelle_beruf.stelleID=stelle.stelleID
                              JOIN
                                  beruf
                              ON
                                  beruf.berufID=stelle_beruf.berufID
                              JOIN
                                  newsletter_beruf
                              ON
                                  newsletter_beruf.berufID=stelle_beruf.berufID    
                              JOIN
                                  newsletter
                              ON
                                  newsletter.userID=newsletter_beruf.userID
                      [URL]http://hallophp.de[/URL]

                      Kommentar


                      • #26
                        ich weis nicht wirklich was normalisiert heisst, aber ja die Aufteilung macht leider Sinn. Denn zu jedem Job kann es auch verschiedene und mehrere Arbeitsorte geben.

                        Kommentar


                        • #27
                          OK weis jetzt ungefähr was normalisiert heisst. Ich wüsste wirklich nicht wie ich das ganze runter brechen könnte. Gibt es eine Möglichkeit mit limit in der mysql Abfrage? habe bis jetzt nur Bsp. mit Zahlen gesehen, gibt es auch limit mit Feldnamen?

                          Kommentar


                          • #28
                            Üblicherweise wirst DU einen DB-Ooutput der Art

                            Code:
                            Müller  | mueller@emaxple.com  | Bäcker      | Bäckermeister
                            Müller  | mueller@emaxple.com  | Bäcker      | Bäckerhelfer
                            Müller  | mueller@emaxple.com  | Bäcker      | Konditor
                            Meier   | mmeier@emaxple.com   | Bauarbeiter | Bauarbeiter
                            Schulze | schuschu@emaxple.com | Tonmeister  | Tonmeister
                            Schulze | schuschu@emaxple.com | Tonmeister  | Toningenieur
                            (Interessent | E-Mail | Suche | Angebot)

                            erzeugen. Üblicherweise durchläufst Du das jetzt und sammelst datensatzweise die Daten zusammen. Beim Wechel der E-Mail findet ein sog. Gruppenbruch statt ( Gruppenbruch (Standardverfahren) - PHP.de Wiki ), die Mail musst Du logischerweise vorher (!) absenden. Auch, bevor Du E-Mail und Body neu initialisierst.

                            Wichtig ist auch, dass die Sortierreihenfolge nach dem Gruppenkriterium stimmt.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #29
                              Zitat von nikosch Beitrag anzeigen
                              Wichtig ist auch, dass die Sortierreihenfolge nach dem Gruppenkriterium stimmt.
                              Ok das versteh ich nicht ganz, meinst du damit order by? oder evtl. groupe by?

                              Kommentar


                              • #30
                                Stell dir vor, dass du durch deine Join.-Struktur die Listen bekommst, so wie Nikosch sie da hingeschrieben hat als Beispiel.

                                Am Anfang der Schleife hast du eine leere Mail. Du liest zuerst mueller@emaxple.com und schreibst in die Mail, "Sie sind Bäcker und folgende Stellen gibt es:"
                                Dann schreibst du rein: Bäckermeister
                                Erste Zeile damit erledigt.
                                Dann zweite Zeile. das ist immer noch die gleiche Email, also baust du an der gleichen Mail weiter und schreibst rein, dass es noch die Stelle Bäckerhelfer gibt.
                                Dann dritte Zeile, immer noch die gleiche Email, also geht die Mail weiter mit der Stelle Konditor.

                                In der vierten Zeile passiert nun der Gruppenbruch, weil die Emailadresse wechselst. Du musst nun die fertige Email senden und eine neue, leere beginnen. Dann gehts von vorne los.
                                [PHP]if ($var != 0) {
                                $var = 0;
                                }[/PHP]

                                Kommentar

                                Lädt...
                                X