datenbank auslesen und in email einfügen

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

  • datenbank auslesen und in email einfügen

    hi,

    ich hab ein problem, wie kann ich mehrere variablen aus einer tabelle (datenbank) auslesen, und diese in die funktion 'mail()' einfügen?

    vermutlich mit einer schleife, aber ich kann ja keine schleife innerhalb der funktion 'mail()' aufrufen!

    tja, ich hoffe ihr könnt mir helfen?!


    Sir Holmes

  • #2
    hi sir holmes,

    du musst zu diesem Zweck auch keine Schleife innerhalb von mail() ausführen, sondern mail() innerhalb einer Schleife ausführen.

    Das sieht dann irgendwie so aus:

    Mache solange noch was da ist
    mail()
    fange wieder von vorne an

    oder auf deutsch:

    $result=ergebnismenge der Datenbank mit z.B. 100 Zeilen
    while ($row = mysql_fetch_array($result))
    {
    mail(DatenDiesesDatensatzes);
    }

    Hoffe, Dir ein bisschen geholfen zu haben.

    Viele Grüße, Patrick

    Kommentar


    • #3
      hi,


      die idee hatte ich auch schon, das probelem ist aber, dass in der mail auch text stehen soll, der nicht bei jedem ausführen der schleife ausgegeben werden soll.
      z.B.:

      Vielen Dank für Ihren Einkauf.

      Sie haben folgende Artikel gekauft:

      ######### Dieser Teil soll aus der Datenbank ausgelsen werden. #########

      1x Produkt 1, gr. xl, Preis: xx.xx DM
      .. .... ... ...

      ####### Jetzt wieder normaler Text #######



      ... hoffe du hast verstanden, was ich meine!

      danke Sir Holmes

      Kommentar


      • #4
        hi !!!

        das ist schon ein bisschen schwieriger, aber mit einer verschachtelten Schleife auch nicht so schwer:


        LaufeDurchAlleOffenenBestellungen

        Text=""

        LaufeDurchAlleBestellpositionenDieserBestellung
        Text= Text + Bestellposition
        EndeSchleife2

        mail( Text );

        EndeSchleife1

        Ist das klar soweit ?? oder drücke ich mich undeutlich aus ??

        Grüße, Patrick

        Kommentar


        • #5
          hi,

          ich schon wieder also damit hab ich ja so meine probleme, das funktioniert beim besten willen nicht!

          tja, kannst dir ja mal den code ansehen, vielleicht weisst du ja, wie man daraus eine email generiert!? wie das aussehen soll, steht ja im beitrag weiter oben.


          if ($result2=mysql_db_query($db,"SELECT item,anzahl FROM $t_warenkorb WHERE id='$vid'")){ // items aus warenkorb auslesen

          if (mysql_num_rows($result2)) {
          while($row=mysql_fetch_array($result2)) {

          $item = $row['item']; //item ist die artikelnummer
          $anzahl = $row['anzahl'];

          if ($result3=mysql_db_query($db,"SELECT artikel_marke,artikel_name,artikel_preis FROM $t_artikel WHERE artikel_nr='$item'")){ // item-details auslesen

          if (mysql_num_rows($result3)) {
          while($row=mysql_fetch_array($result3)) {

          $artikel_marke = $row['artikel_marke'];
          $artikel_name = $row['artikel_name'];
          $artikel_preis = $row['artikel_preis'];

          } // sql3: fetch_array
          } // sql3: num_rows
          } // sql3: db_query
          } // sql2: fetch_array
          } // sql2: num_rows


          // Summe bilden

          if ($result4=mysql_db_query($db,"SELECT SUM(anzahl * preis) AS 'summe' FROM $t_warenkorb WHERE id='$vid'")){

          if (mysql_num_rows($result4)) {
          $row=mysql_fetch_array($result4);

          $zwischensumme = $row['summe'];
          $f_zwischensumme = number_format($zwischensumme,2,"",".");
          $versandkosten = "8.00";
          $total = $zwischensumme+$versandkosten;
          $f_total = number_format($total,2,"",".");

          } // sql4: num_rows
          } // sql4: summe bilden, db_query
          } // sql2: items aus warenkorb auslesen


          Sir Holmes

          Kommentar


          • #6
            hi holmes,

            finde ich teilweise ein bisschen kompliziert, weil du - meines Erachtens - zuviele Ergebnismengen von der Datenbank holst. Eine einzige tuts auch. Das würde dann wirgendwie so aussehen:


            if ($result1=mysql_db_query($db,"SELECT item,anzahl, artikel_marke, artikel_name, artikel_rpeis FROM t_warenkorb inner join t_artikel on t_artikel.artikelnr=t_warenkorb.item WHERE t_warenkorb.id='$vid'"))
            {
            $Emailtext = "Hallo lieber Kunde. Sie haben folgendes bestellt:
            $zwischensumme = 0;
            while($row=mysql_fetch_array($result1))
            {
            $artikel_preis = $row['artikel_preis']*row$[anzahl];
            $Emailtext = $Emailtext." ArtikelNr:$row[item] Menge: $row[anzahl] preis: $artikel_preis";
            $zwischensumme = $zwischensumme + $Artikel_Preis;
            }

            $Emailtext = $Emailtext." Zwischensumme: ".number_format($zwischensumme,2,"",".")." DM";
            $Emailtext = $Emailtext." Versandkosten: 8 DM"
            $Zwischensumme = $Zwischensumme + 8;
            $Emailtext = $Emailtext." Zwischensumme: ".number_format($zwischensumme,2,"",".");

            mail($Emailtext);

            }

            Achtung !!! Ich habe das blind programmiert, es kann also sein, dass noch jede Menge Fehler drin sind.

            Bitte melde dich nochmal, wenn du nicht zurechtkommst.

            Grüpße, Patrick

            Kommentar


            • #7
              tja,

              sieht gut aus! vielen dank, nur stimmt da was mit dem sql-query nicht. bei deinem vorschlag weiss mysql ja nicht, aus welcher tabelle welche spalte ausgelesen werden soll.

              ich dachte so könnte es vielleicht klappen ... leider nicht. ne idee, woran das liegt?

              SELECT w.item,w.anzahl,a.artikel_marke,a.artikel_name,a.artikel_preis FROM t_myshop_warenkorb AS w, t_myshop_artikel AS a inner join t_myshop_artikel on a.artikel_nr=w.item WHERE w.id='$vid'"

              Kommentar


              • #8
                hi holmes,

                meines erachtens müsste es trotzdem funktionieren, insbesondere wenn nur Felder beteiligt sind, die entweder in der einen oder anderen Tabelle eindeutig sind, wenn das nicht so ist, bietet sich aber folgende Syntax an:

                SELECT w.item,w.anzahl,a.artikel_marke,a.artikel_name,a.artikel_preis FROM t_myshop_warenkorb AS w inner join t_myshop_artikel as a on a.artikel_nr=w.item WHERE w.id='$vid'"

                ich bin leider grad an meinem Arbeitsplatz und habe kein mysql zur verfügung, um das auszuprobieren.

                Grüße, patrick

                Kommentar


                • #9
                  selfchat man, jetzt habe ich erst deine seite gesehen...da lag ich oben ja nicht unrichtig..deine seite hat aber auch mehr platz.

                  habe mein uraltes bookmark wiedergefunden:
                  http://www.php-resource.de/forum/sho...?threadid=1412

                  meintest du das so? mail in schleife?

                  oder so in der art?
                  $r=mysql_db_query($dbname,"SELECT * FROM $dbwk WHERE ipnr = '$remote_addr' ");
                  while($ausgabe=mysql_fetch_object($r))
                  {
                  $nr =$ausgabe->nr;
                  $art =$ausgabe->Artikel;
                  echo "<tr><td>$nr</td><td>$art</td></tr>";
                  }

                  oder so:
                  <tr>
                  <td align=left>".$row[itemnr]."</td>
                  <td align=left>".$row[Weinsorte]."</td>
                  <td align=center>".$row[Menge]."</td>
                  <td align=right>".$row[SPrice]." €</td>
                  <td align=right>".$row[GPrice]." €</td>
                  </tr>

                  habe dich nicht verstanden weil ich doch 1. seite oben, genauso wie ganz oben variablen an variablen weitergebe und nicht echo ausgebe.
                  ps.: finde echo "<tr>" nicht so relevant..

                  mucho gusto
                  Zuletzt geändert von mucho gusto; 30.09.2004, 22:46.

                  Kommentar


                  • #10
                    posten kannst du auch nicht vernünftig, was hat denn das hier verloren

                    ** trennen und zusammenführen **

                    Kommentar

                    Lädt...
                    X