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

  • Dynamisch generierter Newsletter

    Hallo, ich zerbrich mir gerade den Kopf über eine mysql - Abfrage und komm irgendwie nicht weiter.

    Ich habe also

    table
    newletter mit userID und email

    table
    newsletter_beruf mit userID und berufID

    table
    beruf mit berufID und berufName

    table
    stelle_beruf mit stelleID und berufID

    und zu guter letzt einen table
    stelle mit stelleID und mehr.

    Nun möchte ich eigentlich eine Anfrage starten welche mir den Newsletter jeweils dynamisch zusammen stellt.

    nimm die erste userID von newsletter, check welche berufID für diese userID eingetragen sind, gib mir die Ausgabe, erstelle den Newsletter und sende diesen.

    Das ganze ist sehr abstrakt in meinem Kopf, ich glaube jeder Tip der mich in die richtige Richtung bringt würde mir helfen.

    Danke, für eure Tipps. Rilana


  • #2
    Ich versteh dein Problem nicht ganz, aber hört sich nach JOIN an?
    http://dev.mysql.com/doc/refman/5.1/de/join.html
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #3
      was frag ich ab wenn ich alles joined habe? hatte das probiert...

      PHP-Code:
      where newsletter_beruf.berufID stelle_beruf.berufID 
      irgendwie ist mir einfach der Weg noch nicht ganz klar.

      Kommentar


      • #4
        hatte das probiert...
        SOrry, aber viel gelesen zu JOINs kannst DU dann nicht haben.

        Einführung in Joins

        Nach 156 Postings hier hast DU sicher schon mal gelesen, dass wir Wert darauf legen, dass man sich erst informiert und dann fragt.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Auf die Gefahr hin dass ich mich wieder lächerlich mache, frag ich nun trotzdem nach. Danke für den Link nikosch, ich hab die Abfrage nun zu Stande gebracht, aber wenn ich das ganze mit PHPMailer versende, dann geschieht eigentlich was logisches, es wird pro pro JobID ein Mail verschickt, eigentlich möchte ich aber die Liste (User möchte alle Technishen Jobs auf einem Newsletter erhalten). Bin am Hirnen wie ich das anders machen muss, aber irgendwie kann ich mir nicht selber helfen. Gebt mir doch bitte einen Denkanstoss.

          PHP-Code:
          #loop through e-mail addresses

          // Make a MySQL Connection
          $con mysql_connect("""""") or die(mysql_error());
          mysql_select_db("") or die(mysql_error());
           
          mysql_query("SET NAMES 'UTF8'");  

          $query "SELECT
                      *
                  FROM 
                      stelle 
                  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
                      
                  WHERE newsletter_beruf.userID=newsletter.userID order by email"

               
          $result mysql_query($query,$con);
          while (
          $myrow mysql_fetch_array($result)){
                  
          $mail->AddAddress($myrow["email"]);
          $mail->Subject "Our Newsletter";
          $mail->Body $html;
          $mail->AltBody $plain;
          $mail->Send();
          $mail->ClearAddresses();


          Die Ausgabe sieht so aus smart personal gmbh | Karriere

          Danke

          Kommentar


          • #6
            Sammel alle Informationen zum Beispiel in einem Array oder in einem String und schick die Mail erst ab, wenn sich die Emailadresse im Vergleich zum vorigen Datensatz ändert. Da du bereits nach der Mailadresse sortierst, verschickst du dann pro Adresse nur einen Newsletter.

            Das hat gewisse Ähnlichkeiten mit dem Gruppenbruch (Standardverfahren) - PHP.de Wiki.

            Gruß
            http://hallophp.de

            Kommentar


            • #7
              hört sich gut an, danke, ich probiers mal aus!

              Kommentar


              • #8
                ich versteh nur Bahnhof, aber versuch mit durch zu kämpfen!

                Kommentar


                • #9
                  Hehe, das habe ich hier auch noch nicht gelesen. Normalerweise hört der Satz nach
                  ich versteh nur Bahnhof
                  auf.
                  aber versuch mit durch zu kämpfen!
                  Prima, wenn du konkrete Fragen hast, kannst du auch gerne wieder fragen. Daran soll es dann nicht scheitern.

                  Gruß
                  http://hallophp.de

                  Kommentar


                  • #10
                    glaub bin auf keinem schlechtem Weg, aber es ist mir doch nicht ganz klar wo ich nun sagen soll newsletter senden....

                    PHP-Code:
                    $result mysql_query($query,$con);
                    $first = (mysql_fetch_array($result));

                    $firstEmail = ($first["email"]);
                    echo 
                    $firstEmail;

                    while (
                    $myrow mysql_fetch_array($result)){
                    $plain "hallo newsletter";    


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


                    if (
                    $realEmail != $firstEmail) {
                            echo 
                    'e-mail wechselt';
                            
                    $firstEmail $realEmail;
                        }
                     
                        
                    // neuen Vergleichswert setzen
                       

                    $html "<p>$stelleID <br> $stellePostition <br> $stelleAngebot  <br> $realEmail</p>";

                    echo 
                    $html

                    Kommentar


                    • #11
                      Ok also das funktioniert schon mal nicht, weis jemand weshalb?

                      PHP-Code:
                      $result mysql_query($query,$con);
                      $first = (mysql_fetch_array($result));

                      $firstEmail = ($first["email"]);
                      echo 
                      $firstEmail;

                      while (
                      $myrow mysql_fetch_array($result)){
                      $plain "hallo newsletter";    


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

                      $html "<p>$stelleID <br> $stellePostition <br> $stelleAngebot  <br> $realEmail</p>";


                      if (
                      $realEmail != $firstEmail) {
                          echo 
                      'e-mail wechselt';
                          
                      #add subscribers address as the recipient
                          
                      $mail->AddAddress $realEmail;
                          
                      #the subject of the email
                          
                      $mail->Subject "Our Newsletter";
                          
                      #the HTML content of the email
                          
                      $mail->Body $html;
                          
                      #the plain text version
                          
                      $mail->AltBody $plain;

                          
                      #sends the newsletter
                          
                      $mail->Send();
                          
                      #clears the recipient address
                          
                      $mail->ClearAddresses();

                          
                      // neuen Vergleichswert setzen
                          
                      $firstEmail $realEmail;
                          }
                       
                         


                      echo 
                      $html;



                          





                      Kommentar


                      • #12
                        Sieht schon nicht schlecht aus!

                        Die Mail sendest du genau hier:
                        Code:
                        if ($realEmail != $firstEmail) {
                          echo 'e-mail wechselt';
                          $firstEmail = $realEmail;
                        }
                        Die Variable $html solltest du aber vor der Schleife initialisieren
                        Code:
                        $html = '';
                        
                        while ($myrow = mysql_fetch_array($result)) { 
                          // ...
                        }
                        und immer um Informationen erweitern
                        Code:
                        $html .= $neuerDatensatz;
                        und dann innerhalb der genannten Abfrage - nach dem Versenden der Mail - wieder leeren, damit Platz für den nächsten Newsletter ist.

                        Es gibt noch ein paar kleinere Stellen, die optimiert werden könnten. Zum Beispiel musst du den ersten Datensatz nicht bereits vor der Schleife abfragen.
                        Du kannst auch zunächst die Variable $firstEmail mit einem leeren String initialisieren.
                        Code:
                        $firstEmail = '';
                        Innerhalb der Schleife musst du dann nur etwas aufpassen, da sofort deine Bedingung greift und du ja nicht möchtest, dass eine Mail an eine leere Adresse gesendet wird.

                        Gruß
                        http://hallophp.de

                        Kommentar


                        • #13
                          Danke für deine Hilfe, aber irgendwie versteh ich da was nicht

                          PHP-Code:
                          $html .= $neuerDatensatz
                          Also wenn ich die $html var aus der Schlaufe nehme, dann bekomme ich ja nicht alle jobs muss ich dann ne neue Schlaufe vorne dran setzen? dann hätte ich ja wieder das gleiche Problem... ? was genau heisst .= habe versucht selber drauf zu kommen aber irgendwie versteh ich diese Erkärung x.=y dazu nicht.

                          Sorry, hab wirklich Wissenslücken!

                          Kommentar


                          • #14
                            String-Operator

                            Du solltest $html nur vor der Schleife initialisieren. Die Zuweisung der Datensätze erfolgt innerhalb der Schleife. Im Moment überschreibst du bei jedem Durchlauf den Inhalt der Variablen.
                            http://hallophp.de

                            Kommentar


                            • #15
                              Ok ich versteh da wieder mal was nicht...

                              PHP-Code:
                              $result mysql_query($query,$con); 
                              $first = (mysql_fetch_array($result)); 

                              $firstEmail = ($first["email"]); 
                              echo 
                              $firstEmail

                              $neuerDatensatz "<p>$stelleID <br> $stellePostition <br> $stelleAngebot  <br> $realEmail</p>"

                              while (
                              $myrow mysql_fetch_array($result)){ 
                              $plain "hallo newsletter";     

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


                              $html .= $neuerDatensatz;

                              if (
                              $realEmail != $firstEmail) { 
                                  echo 
                              'e-mail wechselt'
                                  
                              $mail->AddAddress $realEmail
                                  
                              $mail->Subject "Our Newsletter"
                                  
                              $mail->Body $html
                                  
                              $mail->AltBody $plain
                                  
                              $mail->Send(); 
                                  
                              $mail->ClearAddresses(); 

                                  
                              // neuen Vergleichswert setzen 
                                  
                              $firstEmail $realEmail
                                  } 
                              echo 
                              $html

                              so ist die var html leer, denn wenn ich diese vor der Schlaufe definiere, dann
                              gibt es ja noch keine Werte... vor der Schlaufe
                              PHP-Code:
                              $neuerDatensatz "<p>$stelleID <br> $stellePostition <br> $stelleAngebot  <br> $realEmail</p>"
                              In der Schlaufe
                              PHP-Code:
                              $html .= $neuerDatensatz
                              Kannst du mir bitte noch mal auf die Sprünge helfen?

                              Kommentar

                              Lädt...
                              X