Mailadresse aus einer DB

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

  • Mailadresse aus einer DB

    Hallo an alle,

    ich möchte eine Geburtstagsmail an jeden user meines Forum schicken. Ich habe mir eine SQL geschrieben welches das Gebdatum mit dem heutigen Datum vergleicht.

    Mein Problem ist jetzt wie kann ich die Daten Username, Usermail in eine Automatisierte Mail einfügen.

    hier ist der Code meiner Abfrage der auch so funzt.

    $db = @mysql_connect($mysqlhost,$mysqluser,$mysqlpassword) or die(mysql_error());
    @mysql_select_db($mysqldb,$db);
    $query = "SELECT * FROM apb1_user_table WHERE gebtag=CURDATE() ORDER BY username";
    $result = mysql_query($query,$db);
    if (mysql_query($result)>0);
    {

    while ($db = mysql_fetch_array($result)) {
    echo $db["username"]."<br>\n";
    echo $db["useremail"]."<br>\n";
    echo $db["gebtag"]."<br>\n";
    echo $db["users_may_email"]."<br>\n";
    }
    }

    Besten Dank für eure Hilfe

    Michael

  • #2
    $header ="From: webmaster@it-development.de\n";
    $header .="Reply-To: webmaster@it-development.de\n";
    $header .="Content-Type: text/plain; charset=iso-8859-1\n";
    $betreff= "happy Birthday";
    $message= "happy Birthday";

    $db = @mysql_connect($mysqlhost,$mysqluser,$mysqlpassword) or die(mysql_error());
    @mysql_select_db($mysqldb,$db);
    $query = "SELECT * FROM apb1_user_table WHERE gebtag=CURDATE() ORDER BY username";
    $result = mysql_query($query,$db);
    if (mysql_query($result)>0);
    {

    while ($db = mysql_fetch_array($result)) {
    echo $db["username"]."<br>\n";
    echo $db["useremail"]."<br>\n";
    echo $db["gebtag"]."<br>\n";
    echo $db["users_may_email"]."<br>\n";
    mail($db["username"], $betreff, $message, $header);
    }
    }


    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      Hallo Berni


      danke für deine schnelle Hilfe, allerdings bekomme ich beim ausführen diese Scriptes immer eine Fehlermeldun hier die Meldung.

      Peter... User unknown Michael... User unknown postmaster+84614... User unknown /no/such/directory/dead.letter... cannot open /no/such/directory/dead.letter: No such file or directory postmaster... User unknown MAILER-DAEMON... User unknown postmaster... User unknown MAILER-DAEMON... User unknown Michael Peter

      woran könnte es liegen

      besten dank im voraus

      Michael

      Kommentar


      • #4
        vielleicht liegt hier der Fehler:

        mail($db["useremail"], $betreff, $message, $header);

        anstelle useremail stand da username

        Kommentar


        • #5
          Mail vón DB

          Hallo Berni

          ich bekomme einen eigenartigen Fehler :

          Warning: Supplied argument is not a valid MySQL result resource in /home/strato/www/m-/www.m-peter.de/htdocs/forum/geb/geb.php on line 15

          das ist die While schleifen weißt du was da falsch sein könnte?

          ich weiß einfach nicht weiter anscheinend bin ich doch zu doof

          Besten dank im voraus

          Michael

          Kommentar


          • #6
            Anscheinend stimmt der Query nicht bzw. hat keine Treffer zur Folge -> stimmt denn das Datumsformat von CURDATE() mit deinem Feld "geb" überein?

            Außerdem würde ich anstatt

            if (mysql_query($result)>0) {

            eher

            if ($result) {

            abfragen. Oder

            if (mysql_num_rows($result)>0) {

            vielleicht klappts dann ja...

            Kommentar


            • #7
              Mail von DB

              Hallo BrainBug


              danke für deinen vorschlag ich habe den quellcode geändert und jetzt ist der fehler weg allerdings sendet er jetzt keine Mail und er zeigt auch nicht die betreffenden Datensätze an.

              das Feld gebtag in der db ist '0000-00-00' eingetragen das dürfte also nicht von curdate abweichen.

              Ich weiß einfach keinen rat mehr

              weist du vielleicht noch was man sonst ändern kann ich poste mal den kompletten code.

              <?

              include "vars.inc.php3";
              $header ="From: webmaster@m-peter.de\n";
              $header .="Reply-To: webmaster@m-peter.de\n";
              $header .="Content-Type: text/plain; charset=iso-8859-1\n";
              $betreff= "happy Birthday";
              $message= "happy Birthday";

              $db = @mysql_connect($mysqlhost,$mysqluser,$mysqlpassword) or die(mysql_error());
              @mysql_select_db($mysqldb,$db);
              $query = "SELECT * FROM apb1_user_table WHERE gebtag=CURDATE() ORDER BY username";
              $result = mysql_query($query,$db);
              if ($result) {
              while ($db = mysql_fetch_array($result)){
              echo $db["username"]."<br>\n";
              echo $db["useremail"]."<br>\n";
              echo $db["gebtag"]."<br>\n";
              echo $db["users_may_email"]."<br>\n";
              mail($db["useremail"], $betreff, $message, $header);
              }}
              ?>

              Besten dank im voraus

              Michael

              Kommentar


              • #8
                bau dir doch mal die Fehlerausgabe mehr aus:
                Code:
                <? 
                
                include "vars.inc.php3"; 
                $header ="From: webmaster@m-peter.de\n"; 
                $header .="Reply-To: webmaster@m-peter.de\n"; 
                $header .="Content-Type: text/plain; charset=iso-8859-1\n"; 
                $betreff= "happy Birthday"; 
                $message= "happy Birthday"; 
                
                error_reporting(255);
                $db = @mysql_connect($mysqlhost,$mysqluser,$mysqlpassword) or die(mysql_error()); 
                @mysql_select_db($mysqldb,$db) or die(mysql_error()); 
                $query = "SELECT * FROM apb1_user_table WHERE gebtag=CURDATE() ORDER BY username";
                echo $query."<br>"; 
                $result = mysql_query($query) or die(mysql_error()); 
                if ($result) { 
                while ($daten = mysql_fetch_array($result)){ 
                echo $daten["username"]."<br>\n"; 
                echo $daten["useremail"]."<br>\n"; 
                echo $daten["gebtag"]."<br>\n"; 
                echo $daten["users_may_email"]."<br>\n"; 
                mail($daten["useremail"], $betreff, $message, $header); 
                }} 
                ?>
                HA! Ich habs gerade beim schreiben gemerkt, den Fehler meine ich. Du darfst nicht deine Verbindung, die in $db gespeichert ist, überschreiben in der while-Schleife -> benutze dort eine andere Variable (siehe oben). Ich denke, jetzt könnte es funktionieren...
                P.S.: Zur Erklärung: du hattest die Variable $db in der While-Schleife mit Daten platt gemacht, wobei in $db deine DB-Verbindung gespeichert ist.

                Kommentar


                • #9
                  Mail von DB

                  Hallo BrainBug

                  soweit hat jetzt alles geklappt es kommt keine Fehlermeldung mehr aber muß ich nicht die variablen füllen die du mir mit $Daten geschrieben hast weil ich in diesem teil keine ausgabe bekomme.

                  Oder sehe ich das falsch?


                  Besten Dank

                  Miichael

                  Kommentar


                  • #10
                    nee, eigentlich wird die Variable bzw. Array $daten ja mit den Daten aus dem aktuellen Datensatz der Select-Abfrag gefüllt. Und mit $daten[username] sprichst du den Inhalt des DB-Feldes "username" des aktuellen Datensatzes deines Select-Ergebnisses an.
                    Wenn also nix auftaucht, dann wurde wohl auch nichts selektiert beim Query.
                    Vielleicht solltest du anstatt gebdate=CURDATE() im query erstmal ein festen Wert eintragen -> gebdate='2001-24-07', wo du sicher bist, das da auch jemand wirklich Geburtstag hat. Außerdem, wie willst du das denn überhaupt abfragen? Wenn ich am 24.07.1990 Geburtstag habe, also heute, dann würde der Vergleich mit CURDATE(), also 2001-24-07 mich ja nie selektieren.

                    Kommentar


                    • #11
                      Mail von DB

                      Hallo BrainBug,

                      wenn ich curdate einsetze denke ich hat curdate das format yyyy-mm-tt und ich habe so auch das datum in der DB abgelegt. Es funzt aber wenn ich ein festes Datum eingebe.

                      Kann es sein das ich da einem irrtum aufgesessen bin und das Datum yyyy-tt-mm vom MySQl gefordert wird?

                      Besten Dank

                      Michael

                      Kommentar


                      • #12
                        Mail von DB

                        Hallo BrainBug,

                        ich habe es hinbekomme zwar auf umwegen aber es funktioniert ich habe einfach eine variable als date deklariert.

                        $today = date(" Y-m-d");
                        PRINT "Heute ist der $today <Br>";

                        und die abfrage habe ich so umgeändert

                        $query = "SELECT * FROM geb WHERE $today";

                        und schon funktioniert es, wenn du magst kannst du es dir morgen mal auf meiner Page http://www.m-peter.de anschauen ich habe zusätzlich noch eine anmeldung gebaut die im forum ist nur wenn du dich im forum registriest kannst du dich für die Geburtstagsliste anmelden und bekommst dann automatisch zum Geburtstag eine Mail.

                        Ich möchte mich noch recht herzlich bei dir bedanken für deine Hilfe

                        Kommentar


                        • #13


                          schön, daß es funktioniert, aber ich versteh nicht ganz, warum es das tut.
                          Nochmal: ich gebe an, ich habe am 24.07.1980 Geburtstag, sprich da bin ich zur Welt gekommen -> also in Datenbank wird dann 1980-24-07 stehen. Und du vergleichst diese Datum mit dem aktuellen und bei übereinstimmung wird ne eMail abgeschickt. Also eigentlich dürfte dann niemals eine eMail abgeschickt werden. Du vergleichst doch 1980-24-07 mit 2001-24-07, also stimmt die Jahreszahl doch niemals. Oder habe ich da jetzt ein Denkfehler??? Klär mich mal auf...



                          P.S.: sorry, muß natürlich überall XXXX-07-24 heissen, hatte Tag und Monat vertauscht.

                          P.P.S: Hä? Bei deinem Query stimmt aber was ganz und gar nicht. "where $today" kann nicht so doll funktionieren, oder?! ich kenne eigentlich nur die Variante, daß man ein Feld abfrägt -> "where gebdate=$today" ???? Und nochmal

                          [Editiert von BrainBug am 24-07-2001 um 10:59]

                          Kommentar


                          • #14
                            Mail von DB

                            Hallo BrainBug,

                            kannst ja mal auf meine page gehen http://www.m-peter.de dort im Forum habe ich das teil schon eingebaut.

                            Ich habe bei mysql das datum auf yyyy-mm-dd eingestellt wenn du dich registriest im forum und dann in die Geburtstagsliste einträgst z.b. mit dem heutigen datum dann bekommst du wenn du auf Wer hat Geburtstag klickst sofort eine Mail zum Geburtstag.

                            Ich hatte zuerst den gleichen gedanken wie du das es mit where $today nicht klappen kann aber wenn ich das feld gebtag mit $today vergleiche schickt er zwar ne mail aber die unteren echo felder ignoriert er dann tunlichst, so funzt es jedenfalls wunderbar ich muß nur noch zusehen das ich eine fuktion einbaue so das man nur einmal ne mail verschicken kann, aber ich denke das wird noch werden.

                            Ich habe ganz stark die vermutung das es funzt weil das teil bei strato läuft und der SQl Server macht manchmal die komischten dinger.


                            Bis denne

                            Michael

                            Kommentar


                            • #15
                              konnte leider nirgends ein Geburtsdatum auf deiner Site eingeben. Wo finde ich das denn??

                              Außerdem dauert das ja ewig, bis deine Content-Seite mal geladen ist. Solltest dringend was für die Performance tun.

                              Kommentar

                              Lädt...
                              X