danke Rotor für den ersten (offensichtlichen) bug im script. hab ihn in zeile 27 behoben. (s.u.) aber ich muss mich nochmal an Euch wenden. irgendwo stimmt's noch nicht.
zur erklärung: es dreht sich um die tipp-erinnerungs-mail bei einem online-tippspiel. ich habe versucht eine funktion zu schreiben, die nach zeitüberprüfung zum einen eine email an alle diejenigen rausschickt, die noch nicht getippt haben und zum anderen die tabelle "erinnern" ein update bekommt (SET erinnert = 1) updated.
das tabellenupdate funktioniert einwandfrei. aber es wird keine mail verschickt.
1 function reminder() {
2 $abfrage = sprintf("SELECT Spieltag, datum_erinnern, datum_erinnert FROM erinnern WHERE erinnert = 0 and datum_erinnern < '%s'", date("Y-m-d H:i:s"));
3 $ergebnis = mysql_query($abfrage);
4 while($row = mysql_fetch_object($ergebnis))
5 {
6 $abfrage = sprintf("SELECT MAX(Anzahl) as Anzahl, Alias FROM Tipps_count WHERE Spieltag = %d GROUP BY Alias", $_SESSION['spieltag']);
7 $ergebnis1 = mysql_query($abfrage);
8 while($row1 = mysql_fetch_object($ergebnis))
9 {
10 if ($row1->Anzahl == 0):
11 $abfrage = sprintf("SELECT real_name, email FROM users WHERE login = '%s'", $row->Alias);
12 $ergebnis2 = mysql_query($abfrage);
13 while($row2 = mysql_fetch_object($ergebnis2))
14 {
15 $realname = $row2->real_name;
16 $email = $row2->email;
17 $header = "From: ***** <*****@*****.**>\n";
18 $header .= "MIME-Version: 1.0\n";
19 $header .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";
20 $subject = "Tipp-Erinnerung für den ";
21 $subject .= $_SESSION['spieltag'];
22 $subject .= ". Spieltag";
23 $body = "<b>Hallo " . $realname . "</b>,<br><br>";
24 $body .= "Du hast noch keinen Tipp für den " . $_SESSION['spieltag'] . ". Spieltag abgegeben!<br>";
25 $body .= "Bis zum Anpfiff am Freitag (bei Englischer Woche ist der Freitag ein Dienstag) ist das noch möglich. Am besten gleich <a href="http://www.*****.**/*****/login.php">hier klicken</a> und tippen.<br>";
26 $body .= "Gut Tipp!!";
27 mail($email, $subject, $body, $header);
28 }
29 endif;
30 }
31 $abfrage = sprintf("UPDATE erinnern SET erinnert = 1, datum_erinnert = '%s', user = '%s' WHERE Spieltag = %d", date("Y-m-d H:i:s"), $_SESSION['user'], $row->Spieltag);
32 $ergebnis3 = mysql_query($abfrage);
33 }
34 }
müsste es in zeile 8 nicht hinten "$ergebnis1" heißen. wenn ich das aber schreibe, gibt er mir den fehler 404.
ich bin mir sicher einer von Euch "programmier-gurus" hat schon die lösung. ;)