Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Html Mail versenden mit Daten aus der Datenbank

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Html Mail versenden mit Daten aus der Datenbank

    Hallo zusammen

    Ich versuche vergeblich mir ein Mail zu senden mit daten die aus der Datenbank kommen

    Folgendes hab ich bisher versucht.
    Dies funktioniert auch so weit dass ich ne Mail erhalte mit dem ganzen Text
    Jedoch wird mir nur das erste Resultat aus der 2. DB Abfrage angezeigt.

    Könnte mir vielleicht jemand helfen wie ich sowas realisieren kann.
    Komme einfach nicht drauf

    PHP-Code:
            $sql "SELECT id,email,first_name,name,classes FROM user WHERE id='15'";
              
    $ergebnis mysql_query($sql);
              while(
    $row mysql_fetch_object($ergebnis))
                 { 
                    
    $id $row->id;
                    
    $first_name $row->first_name;
                    
    $name $row->name;
                    
    $classes $row->classes;
                                    
                    if (
    $classes 0)
                        {
                          
    $empfaenger $row->email;
                          
                                              
    $sql "SELECT file,title,price,views FROM class WHERE user_id='15'";
                                              
    $ergebnis mysql_query($sql);
                                                while(
    $row2 mysql_fetch_object($ergebnis))
                                                    { 
                                                    
    $classis '
                                                      <tr>
                                                        <td>'
    .$row2->file.'</td>
                                                        <td>'
    .$row2->title.'</td>
                                                        <td>'
    .$row2->price.'</td>
                                                        <td>'
    .$row2->views.'</td>
                                                      </tr>
                                                    }'
    ;


                            
    $header  'MIME-Version: 1.0' "\r\n";
                            
    $header .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
            
                            
    // zusätzliche Header
                            
    $header .= 'From: bue.ch <info@bte.ch>' "\r\n";
                            
                        
                            
    $nachricht ='
                                        <html>
                                        <body>
                                          <p>Hallo, '
    .$first_name.' '.$name.'</p>
                                        
                                          <table>
                                            <tr>
                                              <td>
                                             
                                              </td>
                                            </tr>
                                            <tr>
                                              <td>
                                              <table border="0">
                                              <tr>
                                                <th scope="col">Cover</th>
                                                <th scope="col">Buchtitel</th>
                                                <th scope="col">Preis</th>
                                                <th scope="col">Besucht</th>
                                              </tr>
                                              '
    .$classis.'
                                              </table>
                                              </td>
                                            </tr>
                                            <tr>
                                              <td>
                                              
                                              </td>
                                            </tr>
                                          </table><br>
                                            <p></p>
                                            <p></p>
                                            
                                        </body>
                                        </html>
                                        '
    ;
                            
    // Send
                                
    mail($empfaenger'Wo bleiben Sie?'$nachricht$header);
                        }                        
                    
                } 


  • #2
    Jedoch wird mir nur das erste Resultat aus der 2. DB Abfrage angezeigt.
    Du überschreibst dir immer deine Variable $classis in der Schleife:

    Mache vor der Schleife ein $classis = "";
    Und innerhalb $classis .= ...

    Ansonsten: http://php-de.github.io/jumpto/leitfaden/

    Und nutze für den Versand besser eine Mailerklasser, siehe hier, auch mit Beispiel: http://php-de.github.io/jumpto/mail-class/

    LG
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Danke für die Antwort

      Verstehe leider nicht so ganz was du mit dem meinst
      Mache vor der Schleife ein $classis = "";
      Und innerhalb $classis .= ...

      das mit der mail klasse hab ich gelesen würde aber dieses problem hier nicht beheben das problem hätte ich bei der klasse wohl auch

      Ich müsste ja eigentlich die abfrage NR 2 in der variable $nachricht machen geht ja aber nicht ausser mit eval() oder sehe ich das irgendwie falsch

      kann denn die abfrage ausserhalb von $nachricht sein?

      Kommentar


      • #4
        Dann anders erklärt: Du ergänz innerhalb der Schleife deine Variable $classis nicht, sondern überschreibst diese bei jedem Durchlauf, dh alles bisherige wird "gelöscht". Außerdem hast du da noch einen Syntaxfehler drinnen.

        statt dem hier:

        PHP-Code:
        while($row2 mysql_fetch_object($ergebnis))
            { 
            
        $classis '
              <tr>
                <td>'
        .$row2->file.'</td>
                <td>'
        .$row2->title.'</td>
                <td>'
        .$row2->price.'</td>
                <td>'
        .$row2->views.'</td>
              </tr>
            }'

        das hier:

        PHP-Code:
        $classis '';  // Var leer initialisieren, damit du in der Schleife ergänzen kannst

        while($row2 mysql_fetch_object($ergebnis)) { 

            
        // hier ein .= statt einem = denn das ergänzt den String und setzt den nicht neu (=überschreiben!)
            
        $classis .= '
              <tr>
                <td>'
        .$row2->file.'</td>
                <td>'
        .$row2->title.'</td>
                <td>'
        .$row2->price.'</td>
                <td>'
        .$row2->views.'</td>
              </tr>'
        ;
        }  
        // die Klammer gehört ausserhalb des Hochkommas ' 
        Und error_reporting einschalten falls noch nicht geschehen - sollte man immer beim Programmieren.
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          danke

          das hab ich bisher noch nie so gemacht dass mit dem initialisieren.
          Kannst du mir sagen wo ich dazu was nachlesen kann?

          Kommentar


          • #6
            Habe oben ergänzt, versuch das mal so.
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              hab mit dem ; hatte ich gesehen hat so funktioniert
              Würde trotzdem irgendwo gerne nachlesen was es mit dem initialisieren auf sich hat

              Kommentar


              • #8
                Naja, bevor man eine Variable abfragen oder ergänzen kann, muss (sollte) man diese initalisieren, also initial setzen, mehr ist das nicht. Dh wenn du diese in der Schleife nach und nach ergänzt, dann musst diese vorher existieren, sonst gibts ne Notice.

                Funktioniert das oben jetzt? Hast du in der Schleife das auch geändert?
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  ja funktioniert

                  Kommentar

                  Lädt...
                  X