Spiele vorschau via mail versenden

hallo zusammen,

ich würde gerne eine wöchentliche vorschau-email automatisiert versenden.

alle spielpaarungen meines vereins (heim, sowie auswärtsspiele) der gesamten saison sind in der datenbank gespeichert und werden immer wieder auf aktualität geprüft.

so nun zu dem was ich gerne haben würde bzw. erstmal möchte ich natürlich wissen ob sowas überhaupt machbar ist, und wenn ja, dann wie.

so: ich würde gerne jeden samstag ca. 15uhr eine email an gewisse personen verschicken, die die heimspiele der kommenden woche beinhalten und nur die heimspiele (und auch nur die an dienstagen und freitagen).

wie kann man sowas realisieren?
also dass mit immer samstags 15 uhr ist ja sicher mit einem cronjob realisierbar der eine datei automatisch aufruft.
aber wie ist es möglich dass ich dann immer den zeitraum der kommende woche machen kann?

vielen dank schon mal im voraus.

mfg tobsp

Wenn du ein PHP-Script hast, welches die Mail versendet, und das Problem nur noch ist, dieses zu einem bestimmten Zeitpunkt aufrufen zu lassen, dann lautet dein Stichwort Cronjob. Der ist hier zwar nicht direkt möglich, aber es gibt externe Anbieter, die das über einen HTTP-Abruf simulieren, bspw. cronjob.de/
(Nur darum, dass das Script nicht von anderswo aufgerufen wird und dann die Mails noch mal versendet, sollte man sich noch kümmern, bzw. darum, dass es dies zu ungewünschten Zeitpunkten unterlässt.)

chrisb hat da ein interessantes thema angesprochen …
wenn das script am ende so aussieht:
-Daten auslesen
-Mail versenden
Kann jeder, der den dateipfad kennt diese E-Mail zum beliebigen Zeitpunkt herauslassen. Also sollte im Skript zunächst überprüft werden, ob es denn etw 15 Uhr am Samstag ist.

Dein Problem ist nun aber dass der Zeitram der nächsten woche auszulesen ist…
Dann lass uns doch mal wissen, wie du die Daten (vor allem das Datum eines Spiels) in der DB abspeicherst. Is das ein DATETIME Feld?

mfg Joey

Mit Datetime wird das sehr aufwändig - ich empfehle dir, wenn es noch änderbar ist oder wenn du es noch nicht so haben solltest, einen Timestamp zu nehmen. Damit kann man um einiges einfacher umgehen, da man dort eine Zahl hat, die mit früheren Zeitpunkten entsprechend kleiner wird. So könntest du den Timestamp für diesen Sonntag, also jetzt (aus der Sicht deines Scriptes), und den nächsten Sonntag, 15 Uhr, ausrechnen lassen und alle Datensätze abrufen, die eine Zahl für Timestamp haben, die größer als der erste und kleiner als der zweite Timestamp sind.

Das wäre die Funktionsweise theoretisch. Nun müsste man sie in die Praxis anwenden, also erstens die Datenbankstruktur anpassen und dann den Text in logische Programmiersprache fassen - das dürfte nicht allzu schwierig sein, da die Schritte schon in der Arbeitsweise des Skriptes angegeben sind.

erstmal danke für so viele rückmeldungen.

hier habe ich mal schnell 2 auschnitte vom code welchen ich zum ermitteln aller spielpaarungen meines vereines habe.

// Datum bestimmen
$spielstr=substr($spielstr,strpos($spielstr,">")+1);
if (substr($spielstr,0,strpos($spielstr,"<"))!=="&nbsp;") {
$datum = trim(substr($spielstr,0,strpos($spielstr,"<")));
}
$spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);

// Uhrzeit bestimmen
$spielstr=substr($spielstr,strpos($spielstr,">")+1);
$uhrzeit = substr(trim($spielstr),0,5);
mysql_query("INSERT INTO spielergebnisse
(wochentag, spielzeit, zusatzinfo, spielklasse, heimmannschaft, gastmannschaft, heimergebnis, gastergebnis)
VALUES
('$wochentag', '$datetimestr', '$zusatzinfo', '$spielklasse', '$heimmannschaft', '$gastmannschaft', '$heimergebnis', '$gastergebnis')")
or die(mysql_error());

in der db steht das dann folgendermassen:
spielzeit
2009-09-21
18:20:00

mfg tobsp

Da müsstest du die Datetimeangaben in Timestamps ändern. Dazu kannst du die Funktion strtotime() verwenden. Anschließend könntest du mit date() das Datum beim Abschicken der E-Mail herausfinden, das in einen Timestamp umwandeln und anschließend diesen Timestamp um den Timestamp von sieben Tagen erhöhen und schon hast du den zweiten Zeitpunkt, zwischen denen die gewünschten Spiele liegen.

Welche Funktionen du da genaz brauchst, weiß ich so nicht. Da muss ich mal näher mit beschäftigen morgen.

d.h. ich sollte das datum anderester in der db speichern. damit es später beim auslesen einfacher ist

Was vielleicht auch noch ganz interessant sein kann, ist, dass man bei Cronjobs auch Postdaten mitsenden kann, du kannst dann den “Nutzer” verifizieren und somit überprüfen ob er überhaupt Daten versenden kann, das is dann wie n Login, dann brauchste nicht die Uhrzeit überprüfen halt ich für eher unschön?!

[quote]d.h. ich sollte das datum anderester in der db speichern. damit es später beim auslesen einfacher ist[/quote] Oder damit es überhaupt funktioniert, genau.