Reminder zu TV Sendungen!

Kimymoon86

Mitglied
Hallo Programmierer.

Ich würde für mich und meine Mädels gerne ein Programm in PHP schreiben, das es uns möglich macht uns zu erinnern. Es soll mit einer Datenbank verknüpft sein, in der die Teilnehmer stehen. Es wird mit MySQL verwirklicht. Es geht um Fernsehsendungen.

Wichtig wären uns die Funktionen:
Die Sendungen sind in einer DB eingetragen, sowie die Teilnehmer auch, darauf soll dann auch zugegriffen werden. Das Programm sollte die "Teilnehmer" zufällig aus einer Liste auswählen und einer Sendung zuteilen, damit diese ein Feedback bekommt.
Also Lisa soll zum Beipiel die Sendung "Welt der Wunder" anschaun. Dann soll das Programm ihr eine Mail, 2 Tage vor der Sendung, mit entsprechenden Inhalt schicken. Inhalt sollte der Sender, die Uhrzeit und Datum sein.
Wir sind 5 Mädels und das Programm soll, jede mal eine andere Sendung bewerten lassen. Lisa soll auch nicht 2 mal hintereinander drankommen wenn jemand anderes noch nicht bewertet hat.

Mein Problem kommt jetzt mit den Zeiten.
Ich weis nicht genau wie ich die ZeitParameter eintrage, das die Mail rechtzeitig verschickt wird.
Vielleicht etwas kompliziert ausgedrückt. ^^

"Welt der Wunder" läuft beispielsweise an jedem 2, 4, und 5 Montag im Monat zur geleichen Uhrzeit. Dann soll das Programm die Zeit bis zum nächsten Termin berechnen und 2 Tage vorher eine Mail, dan den Entsprechenden Teilnehmer losschicken.

Ein weiteres Problem an dem ich hänge ist nur ein Schönheitspunkt aber dennoch wäre es schön ihn zu verwirrklichen. Wie schaff ich es, dass sich bei der E-Mail die Daten autoomatisch anpassen. Also das Anstatt Teilnehmer der Name der Person da steht die, die Sendung bewerten soll. Oder auch die Daten zur Sendung für jede Sendung automtisch aufgelistet werden?
Ich könnte da bitte eure Hilfe brauchen.

Danke schon mal.
 
Hi,

also das Kernproblem dürfte hier erstmal sein, dein PHP-Script im richtigen Moment aufzurufen. Das ließe sich über einen Task-Scheduler machen? Auf welchem Betriebssystem läuft dein Skript und hast du Zugriff auf das System? Dann könntest du z.B. einmal am Tag dein Skript von dem Scheduler aufrufen lassen und das Skript prüft dann, ob es heute irgendwelche e-mails verschicken muss.

Für das Versenden der E-Mails verwendest du dann wohl am Besten mail() (http://de2.php.net/manual/en/function.mail.php).
Da kannst du den string $message entsprechend preparieren, dass dort die Namen/Daten drin stehen.

also z.B.
$message = 'Hallo, '.$username.'! Schau bitte heute um '.$time.' die Sendung '.$title;

Viele Grüße
 
Bis jetzt hab ich schonmal das hier, hab mir aber schon sagen lassen, dass mein query falsch ist.

PHP:
$verbindung = mysql_connect("localhost","root","**")
or die ("keine Verbindung möglich, Benutzername oder Passwort sind falsch");

mysql_select_db("Sendung_import")
or die ("Die Datenbank existiert nicht.");

$abfrage = "SELECT YARMProgramTable.t1, YARMProgramTable.ModeratorsPKEY 
FROM YARMProgramTable JOIN Moderator ON Moderator.ID = YARMProgramTable.ModeratorsPKEY  
WHERE DATE(FROM_UNIXTIME(YARMProgramTable.t1)) BETWEEN CURRENT_DATE AND DATE_ADD(CURRENT_DATE , INTERVAL 3 DAY)"; 


$ergebnis=mysql_query($abfrage, $verbindung) 
or die(mysql_error());


 while ( $row = mysql_fetch_array($ergebnis)) 

	echo $row['YARMProgramTable.t1'];
 
Zuletzt bearbeitet:
Das ist meine Mail.php

PHP:
$empfaenger = 'a@web.de';
$betreff = 'Feedback_Erinnerung-Mail';

$header = 'From: r@gmx.de'. "\r\n" .
        'Reply-To: ' .$name. "<" .$email. ">\r\n" .
	'Message-ID: <' .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n" .
	'X-Mailer: PHP/' . phpversion();



0 1 * * * find /tmp -atime 3 -exec ls -l {} \; //jeden Tag und jeden Monat zur angegebenen Zeit

$text = 'Hallo lieber Teilnehmer....';

if (@mail($empfaenger, $betreff, $text,  $header) === true) {
 echo 'Die E-Mail wurde erfolgreich versendet';
    } else {
 echo 'Die E-Mail konnten nicht versendet werden';
    }
 
Zuletzt bearbeitet:
Hab leider auch hier ein Problem.

/*Sendestart-/ Sendeendezeit aus der DB holen*/

PHP:
$start_end_zeit = "SELECT YARMProgramTable.t1, YARMProgramTable.t2 
FROM YARMProgramTable JOIN Moderator ON Moderator.ID = YARMProgramTable.ModeratorsPKEY 
WHERE `Record`='CD target port' AND URL5 LIKE '%@%'";


$sendungsname = "SELECT `Description` FROM Moderator WHERE URL5 LIKE '%@%'";
$sendezeit = date("d:m:y h:m", $start_end_zeit);

$ergebnis=mysql_query($sendezeit, $verbindung) 
or die(mysql_error());

Bei der Ausführung bekomm ich die Meldung "Query was empty".
Wie kann ich mir ausgeben lassen, ob meine sendezeit überhaupt eine Ausgabe hat?
 
Zuletzt bearbeitet:
Bitte verwende doch die Code-Tags, im Falle von PHP kannst du [code=php][/code] oder [code=php][/code] verwenden. Das ist besser für die Analyse deines Problems. Aber hier ist der Fall eindeutig:

PHP:
$ergebnis=mysql_query($sendungsname, $verbindung)
or die(mysql_error());

Im Übrigen sollte man mysql-Funktionen nicht mehr verwenden. Benutze doch statt dessen MySQLi oder PDO. Wenn du erstmal mit mysqli weiter machen willst, musst du noch nicht mal viel umbauen:

PHP:
/*Sendestart-/ Sendeendezeit aus der DB holen*/

$start_end_zeit = "SELECT YARMProgramTable.t1, YARMProgramTable.t2
FROM YARMProgramTable JOIN Moderator ON Moderator.ID = YARMProgramTable.ModeratorsPKEY
WHERE `Record`='CD target port' AND URL5 LIKE '%@%'";


$sendungsname = "SELECT `Description` FROM Moderator WHERE URL5 LIKE '%@%'";
$sendezeit = date("d:m:y h:m", $start_end_zeit);

$ergebnis=mysqli_query($sendezeit, $verbindung)
or die(mysqli_error());

Dein mysql_connect() musst du dann natürlich in mysqli_connect() umschreiben. Zu so gut wie jeder mysql_xxx()-Funktion gibt es eine in mysqli_xxx().

EDIT: Ich habe auch den "falschen" String in mysql_query() eingebaut. Daher hier noch mal eine korrekte Version:

PHP:
/*Sendestart-/ Sendeendezeit aus der DB holen*/

$start_end_zeit = "SELECT YARMProgramTable.t1, YARMProgramTable.t2
FROM YARMProgramTable JOIN Moderator ON Moderator.ID = YARMProgramTable.ModeratorsPKEY
WHERE `Record`='CD target port' AND URL5 LIKE '%@%'";


$sendungsname = "SELECT `Description` FROM Moderator WHERE URL5 LIKE '%@%'";
$sendezeit = date("d:m:y h:m", $start_end_zeit);

$ergebnis=mysqli_query($start_end_zeit, $verbindung)
or die(mysqli_error());
 
Zuletzt bearbeitet:
Zurück