Automailer und Geburtstagsfunktion

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

  • Automailer und Geburtstagsfunktion

    Hallo leutz,

    kennt jemand von Euch ein Automailer-Script, das z.B. Geburtstagsdaten aus einer MySQL-DB Spalte ausliest und wenn jemand in z.B. 5 Tagen Geburtstag hat, wird automatisch eine e-mail an jemanden gesendet, in der die Daten von dem Gebutstagskind stehen?

    Oder, kennt jemand von euch ein Script, der die User in einer PHP-Seite anzeigt, die in z.B: 5 Tagen Geburtstag haben.

    d.h. Der User geht auf Page index2.php und sieht dort z.B: 3 User mit Namen, die in 5 Tagen Geburtstag haben.

    Bin sehr gespannt auf eure Antworten!

    Ciao,
    Scott

  • #2
    Ersteres geht zuverlässig nur mit einem sog. cron-job. Musst mit Deinem Provider reden ob er das anbietet. Solltest Du einen eigenen Server haben, kannst Du das selbst einrichten (Stichwort crontab -e).

    Zweite Frage: Die Abfrage ist ganz simpel:

    Gebdat = mysql-DATE-Feld

    $geburtstagskinder = mysql_query("SELECT * FROM personen WHERE GebDat = DATE_ADD(CURDATE(), INTERVAL 5 DAY)");

    while ($geburtstagskind = mysql_fetch_object($geburtstagskinder))
    {
    echo "$geburtstagskind->name $geburtstagskind->telefon<br>";

    }

    Kommentar


    • #3
      Danke Pekka!

      Das hat mir sehr geholfen!

      Schönes Wochenende!

      Kommentar


      • #4
        Hi Pekka,

        ich hab noch eine Frage.

        Es funktioniert leider nicht.

        In der DB hab ich das Feld geb_dat auf Datentyp "date" laufen und z.B. 2003-04-07 eingetragen.

        und eine Geburtstagsbox mit folgendem Inhalt gemacht:

        PHP-Code:
                                      <?php
                                          $sql_geb 
        mysql_query("SELECT * FROM kunden WHERE geb_dat = DATE_ADD(CURDATE(), INTERVAL 7 DAY) ORDER BY geb_dat ASC");
                                        while (
        $kunden_geb_dat mysql_fetch_array($sql_geb))
                                        {
                                    
        ?>
                                            <form name="geb_dat" action="k_display.php" method="post">
                                            <input type="hidden" name="kunden_nr" value="<?php echo $kunden_geb_dat["kunden_nr"]; ?>">
                                            <?php echo $kunden_geb_dat["kunden_nr"]."<br>".$kunden_geb_dat["vorname"]."<br>".$kunden_geb_dat["name"]."<br>".$kunden_geb_dat["geb_dat"];?>
                                            <input type="submit" value="zum Kunden">
                                            </form>
                                    <?php
                                        
        }
                                      
        ?>
        Ich arbeite bei dem Projekt nicht mit Objekten, deshalb hab ich daraus ein Array gemacht

        Kannst Du mir sagen wo der Fehler liegt?

        Ich bekomm gar nichts angezeigt, obwohl ich bei einigen Datensätzen sogar den heutigen Tag eingegeben habe.

        DANKE

        Kommentar


        • #5
          Hmm, mit der Abfrage selektierst Du alle Kunden, die in exakt 7 Tagen Geburtstag haben, und das dürfte nicht alle Tage vorkommen oder?

          Kommentar


          • #6
            Hi,

            achso, ich dachte, ich selektiere alle von JETZT bis in 7 Tagen.

            Wie krieg ich denn das hin?

            Ich hab schon im MySQL-Tut geschaut, danach kam aber gar kein Result mehr

            Kommentar


            • #7
              SELECT * FROM kunden WHERE geb_dat > CURDATE() AND geb_dat < DATE_ADD(CURDATE(), INTERVAL 7 DAY) ORDER BY geb_dat ASC

              Kommentar


              • #8
                Es klappt!

                aber es wird nur ein Geburtstag ausgegeben, der in 2003 ist.

                Ich habe verschiedene Datensätze angelegt z.b:

                1954-04-09
                1969-04-14
                1989-04-10
                2003-04-11

                und nur der 2003er wird ausgegeben.

                Gibts da auch eine Möglichkeit?

                Kommentar


                • #9
                  da das ganze schon form anzunehmen scheint, schiebe ich mal nach sql rüber. es ist ja nun kein gesuch mehr..


                  *VERSCHIEB*
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    und schaue mal hier vorbei. da wirst du geholfen.

                    http://www.mysql.de/doc/de/Date_calculations.html
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Hi Abraxax,

                      ok!

                      Meinst Du, ich soll das mit diesem RIGHT-Befehl machen, also 5 Stellen wegnehmen?

                      Kommentar


                      • #12
                        ja. denn du brauchst das jahr bei einem geb-day natürlich nicht. das bracucht man nur, wenn man wissen will, wie alt die person ist/wird. und dann brauchst du das separat.

                        lies dir doch einfach mal durch, was sich hinter dem link verbirgt. da ist eigentlich alles genau beschrieben.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          Please help:

                          Ich habe mir das durchgelesen und dann folgende Abfrage gemacht:

                          PHP-Code:
                                                            $sql_geb mysql_query("SELECT * FROM kunden WHERE geb_dat > (YEAR(CURRENT_DATE)-YEAR(geb_dat)) - (LEFT(CURRENT_DATE,5)<LEFT(geb_dat,5)) AND geb_dat < DATE_ADD((YEAR(CURRENT_DATE)-YEAR(geb_dat)) - (LEFT(CURRENT_DATE,5)<LEFT(geb_dat,5)), INTERVAL 7 DAY) ORDER BY geb_dat ASC"); 
                          Ich bekomm jetzt keine MySQL-Fehlermeldung, aber die Ergebnismenge ist 0

                          Durch das Query blick ich nicht mehr durch....

                          Kommentar


                          • #14
                            hab mir deine query jetzt mal nicht angesehen, da unübersichtlich.

                            aber ich habe eine query, die mit die heutigen geburtstage liefert.


                            Code:
                            SELECT    Name,
                                      GebDatum,
                                      IF(RIGHT(GebDatum,5)=RIGHT(CURRENT_DATE,5),'yes','no') GebStar
                            
                            FROM      Adressen
                            
                            HAVING    GebStar = 'yes'
                            das gebstar hat einen hintergrund in meiner darstellung. man könnte
                            es durchaus auch so machen.


                            Code:
                            SELECT    Name,
                                      GebDatum
                            
                            FROM      Adressen
                            
                            WHERE     RIGHT(GebDatum,5)=RIGHT(CURRENT_DATE,5)
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Wunderbar!

                              Jetzt wird zwar erstmal nur derjenige ausgegeben, der Heute Geburtstag hat, aber mit dem INTERVAL probier ich es auch jetzt mal.

                              ICH DANKE DIR!!!!

                              (p.s. Gute Idee mit dieser Query-Schreibweise, mach ich jetzt auch immer so...)

                              Kommentar

                              Lädt...
                              X