Jump to content
xt:Commerce Community Forum

Geburtstags reminder


Interruptor

Recommended Posts

Hallo!

Ich habe einen Geburtstags reminder angefangen zu schreiben.

Ist etwas schlampig programmiert aber ich br?uchte in einer anderen art eure Hilfe.

Ich m?chte, dass 10 Tage vor dem Tag X eine Email an den User geschickt wird.

Wie kann ich soetwas automatisieren.

Da muss doch etwas immer automatisch im hintergrund laufen. Oder muss ich da noch ein script ausf?hren, welches durch cron jobs automatisiert wir.

<?php

$id = $_SESSION["customer_id"];

$i = 0;

$del = $_REQUEST['delete'];

echo "<P>";


//Geburtstagstermin aus der Datenbank l?schen//

if ($del != "") {

 mysql_query("Delete from geburtstag_reminder where geb_id = " . $del);

}


//Hinzuf?gen einer Geburtstagserinnerrung//

if (($_REQUEST["name"] != "") && ($_REQUEST["tag"] != "") && ($_REQUEST["monat"] != "") && ($_REQUEST["jahr"] != "")) {

 $name == $_REQUEST["name"];

 $tag == $_REQUEST["tag"];

 $monat == $_REQUEST["monat"];

 $jahr == $_REQUEST["jahr"];

 $datum = $jahr . "." . $monat . "." . $tag;

 mysql_query("insert into geburtstag_reminder (customers_id, geb_name, geb_datum) values ('$id', '$name', '$datum')");

}


//Auflisten der bereits angelegten Geburtstagserinnerungen//

$res = mysql_query("Select * from geburtstag_reminder where customers_id = $id");

echo "<table width='70%'>";

while ($dsatz = mysql_fetch_assoc($res))

{

 $i = $i + 1;

 echo "<tr>";

 echo "<td width='5%'>";

 echo $i;

 echo "</td>";

 echo "<td width='35%'>";

 echo $dsatz["geb_name"];

 echo "</td>";

 echo "<td width='20%'>";

 echo $dsatz["geb_datum"];

 echo "</td>";

 echo "<td width='20%'>";

 $gebid = $dsatz["geb_id"];

 echo "<form name='loeschen' method='post'>";

 echo "<input type='hidden' name='delete' value='$gebid'>";

 echo "<input type='submit' value='löschen'>";

 echo "</form>";

 echo "</tr>";

}

echo "</table>";


?>

<script language="JavaScript" type="text/javascript">


function pruefen()

{

 var Wert = document.birthday.tag.value;

 if(isNaN(Wert) == true || Wert < 0 || Wert > 31)

 {

 alert(Wert + " ist keine Zahl oder kein gueltiger Tag!");

 return false;

 }

 else return pruefen1();

}


function pruefen1()

{

 var Wert = document.birthday.monat.value;

 if(isNaN(Wert) == true || Wert < 1 || Wert > 12)

 {

 alert(Wert + " ist keine Zahl oder kein gueltiger Monat!");

 return false;

 }

 else return pruefen2();

}


function pruefen2()

{

 var Wert = document.birthday.jahr.value;

 if(isNaN(Wert) == true || Wert < 1900 || Wert > 3000)

 {

 alert(Wert + " ist keine Zahl oder kein gueltiges Jahr!");

 return false;

 }

 else return true();

}


</Script>



<p>

<form method="post" name="birthday" onSubmit="return pruefen();">

 <table width="100%">

 <tr>

  <td width="30%">

   <b>Name</b>

  </td>

  <td width="10%">

   <b>Tag</b>

  </td>

  <td width="10%">

   <b>Monat</b>

  </td>

  <td width="10%">

   <b>Jahr</b>

  </td>

  <td width="20%"></td>

  <td width="20%"></td>

 </tr>

 <tr>

 <td width="30%">

  <input type="text" name="name" size="25" length="50">

 </td>

 <td width="10%">

  <input type="text" name="tag" size="2" length="2">

 </td>

 <td width="10%">

  <input type="text" length="2" size="2" name="monat">

 </td>

 <td width="10%">

  <input type="text" length="4" size="4" name="jahr">

 </td>

 <td width="20%">

  <input type="submit" value="speichern">

 </td>

 <td width="20%">

  <input type="reset">

 </td>

</tr>

</table>

</form>

Vielen Dank schonmal :wacko:

Link to comment
Share on other sites

Das w?re nat?rlich auch machbar. Allerdings ?berlass ich das dan den entwicklern, da ich nur ein klein wenig programmiern kann wie man an der programmier art erkennen kann.

Zudem denke ich, dass es im Adminbereich auch noch gut eingepflegt w?re.

Aber ich kann nur den ansporn geben. Ich brauche es jetzt kann dann auch alles hier rein posten. Aber ich weis einfach nicht wie ich das mit dem verschicken der mails machen soll, dass die 10 Tage vorher benachrichtigt werden.

Gr??le

der Interruptor :rolleyes:

Link to comment
Share on other sites

Hallo,

ich hatte mal vor einer Zeit lang, sowas ?hnliches schon gemacht...

und zwar, wenn ich bei mir in den Adminbereich reingehe, werden alle Kunden die Heute und noch in diesem Monat Geburtstag haben angezeigt...

muss es nur noch sortieren (hab ich grad bemerkt)

Ich hatte es auch schon mal hier im Forum gepostet...

Wenns jemand interessiert kann ichs nochmal posten :cool:

Gru?

Steffen

Link to comment
Share on other sites

Nun ja das ist ja alles schon fertig. Was ich brauche ist eine M?glichkeit, wie der shop automatisch 10 tage oder je nach dem wie viel man angiebt vorher die erinnerung per email verschickt, ohne das man dazu in den Adminbereich rein sieht und erst die jenigen ausw?hlen muss.

:wacko:

Link to comment
Share on other sites

Ok dacht ich mir schon. Dachte vieleicht, dass es eine option gibt, dass sich ein script alle 24 Stunden von selbst ausf?hrt. Sprich einmal starten und dann eine Warteschleife von 24 stunden eingebaut wird. Da ist nur die Frage wann es gestartet wird. Den das soll ja alles automatisch gehen *G*.

Aber ich werde es mit cronjob l?sen.

Danke

Link to comment
Share on other sites

So jetzt hab ich etwas in php Programmiert, da f?llt mir doch ein. Wie soll ich den bitte eine php seite als cron einrichten???? Das muss doch mit nem explorer ausgef?hrt werden.

So ein schei?!

Da m?sste ich ein batch script schreiben. Das kann ich nicht wirklich. Kann mir da jemand helfen??

m?sste ja aus mysql ausgelesen werden.

gru?

Interruptor

Link to comment
Share on other sites

  • 2 weeks later...

Hallo,

damit alles beieinander ist, poste ich hier mal meine L?sung...

ich hab jetzt noch die Sortierung eingebaut...

also diesen Code:


<!-- Geburtstage pr?fen - ANFANG -----------------------------------------------

realisiert durch TechWay 2004-2006-->


<p><font face="Verdana" size="2"><b>Geburtstage werden ?berpr?ft!!!</b></font></p>

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-width: 0" bordercolor="#111111" width="100%" id="AutoNumber1">

 <tr>

  <td width="100%" style="border-style: none; border-width: medium" bgcolor="cccccc" colspan="2">

  <p style="margin-left: 5"><font face="Verdana" size="2">Kunden, die heute Geburtstag haben:</font></td>

 </tr>

<?php

$ergebnis=xtc_db_query("SELECT * FROM customers ORDER BY customers_dob");

$i=0;

while($row = mysql_fetch_object($ergebnis))

  {

    $gebdat=strtotime($row->customers_dob);

    $gebjahr=date('Y',$gebdat);  //geburtsjahr z.b. 1980

    $gebmonat=date('n',$gebdat);  //geburtsmonat z.b. 5

    $gebtag=date('j',$gebdat);  //geburtstag  z.b. 20


    if ($gebmonat == date('n') and $gebtag == date('j'))

    {  //Kunde hat heute Geburtstag

      echo '<tr><td width="35%" style="border-style: none; border-width: medium"><p style="margin-left: 5"><font face="Verdana" size="2">';

      echo $row->customers_firstname . " " . $row->customers_lastname;

      echo '</font></td><td width="65%" style="border-style: none; border-width: medium"><font face="Verdana" size="2">';

      echo xtc_date_long($row->customers_dob);

      echo '</font></td></tr>';

    }


    if ($gebmonat == date('n') and $gebtag > date('j'))

    {  //Kunde hat noch in diesem Monat Geburtstag

      //(nur zwischenspeichern und nach der schleife ausgeben)


      $geb_bald[$i][0]=$row->customers_firstname;

      $geb_bald[$i][1]=$row->customers_lastname;

      $geb_bald[$i][2]=$row->customers_dob;

      $i++;

    }

  }

?>

<tr>

  <td width="100%" style="border-style: none; border-width: medium" colspan="2"></td>

 </tr>

 <tr>

  <td width="100%" style="border-style: none; border-width: medium" colspan="2" bgcolor="#CCCCCC">

  <p style="margin-left: 5"><font face="Verdana" size="2">Kunden, die noch in diesem Monat Geburtstag haben:</font></td>

 </tr>

<?php

  //Array sortieren

  // BSP:   1988-03-15 00:00:00

//  zun?chst ein Array bilden welcher nur die Tage beinhaltet:

  $anzahl = count($geb_bald);

  for($i=0; $i<$anzahl; $i++) {

    $geb_bald_sort[$i][0] = $geb_bald[$i][0];

    $geb_bald_sort[$i][1] = $geb_bald[$i][1];

    $geb_bald_sort[$i][2] = substr($geb_bald[$i][2],8,2);

  }

  array_qsort($geb_bald_sort, 2);  //nach Tagen sortieren

  // nun die Reihenfolge in den Array ?bernehmen

  for($i=0;$i<$anzahl;$i++) {

    for($a=0;$a<$anzahl;$a++) {

      if (($geb_bald_sort[$i][0] == $geb_bald[$a][0]) && ($geb_bald_sort[$i][1] == $geb_bald[$a][1]))

        break;

    }

    $geb_bald_sort[$i][2] = $geb_bald[$a][2];

  }

// nun die Liste ausgeben

   for($i=0; $i<$anzahl; $i++) {

     echo '<tr><td width="35%" style="border-style: none; border-width: medium"><p style="margin-left: 5"><font face="Verdana" size="2">';

    echo $geb_bald_sort[$i][0] . ' ' . $geb_bald_sort[$i][1];

    echo '</font></td><td width="65%" style="border-style: none; border-width: medium"><font face="Verdana" size="2">';

    echo xtc_date_long($geb_bald_sort[$i][2]);

    echo '</font></td></tr>';

   }

   echo '</table><br>';

   unset($geb_bald);

   ?>

<!--  Geburtstage pr?fen - ENDE ------------------------------------------------->

in die Datei admin/start.php nach dieser Zeile:

<?php include(DIR_WS_MODULES.FILENAME_SECURITY_CHECK); ?>

einf?gen... au?erdem noch diese Funktion gleich am anfang der start.php nach den require einf?gen:

function array_qsort (&$array, $column=0, $order=SORT_ASC, $first=0, $last= -2)

  {

   // $array - the array to be sorted

   // $column - index (column) on which to sort

   //     can be a string if using an associative array

   // $order - SORT_ASC (default) for ascending or SORT_DESC for descending

   // $first - start index (row) for partial array sort

   // $last - stop index (row) for partial array sort

   // $keys - array of key values for hash array sort


   $keys = array_keys($array);

   if($last == -2) $last = count($array) - 1;

   if($last > $first) {

    $alpha = $first;

    $omega = $last;

    $key_alpha = $keys[$alpha];

    $key_omega = $keys[$omega];

    $guess = $array[$key_alpha][$column];

    while($omega >= $alpha) {

     if($order == SORT_ASC) {

      while($array[$key_alpha][$column] < $guess) {$alpha++; $key_alpha = $keys[$alpha]; }

      while($array[$key_omega][$column] > $guess) {$omega--; $key_omega = $keys[$omega]; }

     } else {

      while($array[$key_alpha][$column] > $guess) {$alpha++; $key_alpha = $keys[$alpha]; }

      while($array[$key_omega][$column] < $guess) {$omega--; $key_omega = $keys[$omega]; }

     }

     if($alpha > $omega) break;

     $temporary = $array[$key_alpha];

     $array[$key_alpha] = $array[$key_omega]; $alpha++;

     $key_alpha = $keys[$alpha];

     $array[$key_omega] = $temporary; $omega--;

     $key_omega = $keys[$omega];

    }

    array_qsort ($array, $column, $order, $first, $omega);

    array_qsort ($array, $column, $order, $alpha, $last);

   }

  } 

das wars. :-)

Viele Gr??e

TechWay

Link to comment
Share on other sites

Hallo zusammen

Da habt ihr ja was spitzenm?ssiges gebastelt - Hut ab! Frage: W?re es m?glich diese Erweiterung zusammen mit dem cron job in eine Beschreibung zu verpacken und als download zu publizieren?

Ich habe ehrlichgesagt keine Ahnung wohin ich das Hauptfile legen muss und wie des heissen soll? Geburtstag.php und dann? Eine detailierte Beschreibung f?r die, die nicht programmieren k?nnen w?re schon Luxus :rolleyes:

Beste Gr?sse

jpx10

Link to comment
Share on other sites

Originally posted by meister-eder@Mar 30 2006, 01:45 PM

bin ebenfalls begeistert - theoretisch. bei mir kommt ein fehler:

die zeile 32 ist die:

$keys = array_keys($array);

wo w?re denn da der hund begraben?

Quoted post

Hallo,

kann es sein dass in diesem Monat keiner Geburtstag bei dir hat?

ich hatte das Problem noch nicht, weil bei mir schon so viele Kunden in der Datenbank sind... :ph34r:

Pr?fe doch mal kurz nach, ob es so ist, dass keiner Geburtstag hat, oder vielleicht nur einer?

Gru?

TechWay

Link to comment
Share on other sites

  • 2 weeks later...

Hallo,

an der Shop-Version liegt es bestimmt nicht, da hast Du recht.

Es liegt aber daran, dass keine Geburtstage an diesem Tag sind und somit das array leer ist und nichts sortiert werden kann.

Also einfach vor die Zeile:

  array_qsort($geb_bald_sort, 2);  //nach Tagen sortieren
folgendes einf?gen:
if ($anzahl > 0)

Und schon klappt alles wunderbar.

Auch von meiner Seite besten Dank f?r das Tool.

Gru?

Michael

Link to comment
Share on other sites

Moin!

Finde das echt toll, das Ihr das so zusammen jetzt hinbekommen habt, aber vielleicht k?nnte einer mal das komplette neue und mit allen ?nderungen versehende Script hier nochmal eben kurz Posten.

Und dann auch mit einer kurzen Erkl?rung, welches Script wo und wie hin soll.

Ist sonst f?r einen Laien, wie schon gelesen, wohl etwas schwierig.

Also schonmal vielen Dank an Euch alle...

Und noch einen sch?nen Ostermontag... ;-}

Link to comment
Share on other sites

  • 2 weeks later...

Hallo zusammen

Bei mir l?uft nun schon seit einiger Zeit die Erweiterung von Techway. L?uft ?brigens einwandfrei!

Ich sende nun jedem der Geburtstag hat einen Rabbat Kuppon mit einem kurzen Text in welchem ich ihm oder ihr gratuliere. Dies mache ich t?glich. Das heisst Text aus dem Rabatt Cupon Kopieren, einen neuen Rabatt Cupon anlegen, text hineinkopieren etc etc. Dies ist ein t?glicher Prozess welcher schon mal vergessen werden kann.

Selbstverst?ndlich w?re es genial wenn man dies automatisieren k?nnte. Hat jemand ein solches Modul im Einsatz. Oder gibts sowas irgendwo zu kaufen?

Danke

jpx10

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...