Czy w tabeli jest 0 czy 1 i tak wysyła maila. Pewnie zrobiłem prosty błąd którego nie widzę.
// część kodu sprawdzająca wrunek
if($wiersz['done'] == $data['dzis']){
$style = 'style="background-color: #F2F246;"';
if ($wiersz['mail'] == 0) //sprawdzam czy w tabeli jest 1 czy 0
$mailbody = '<html><body>
<FONT face=verdana size=2><p>Dziś mija termin dla:</p></FONT>
<table border=1>
<tr>
<th><FONT face=verdana size=2>Cel: '.$wiersz['workshop'].'</FONT></th>
<th><FONT face=verdana size=2>TYP : '.$wiersz['typ'].'</FONT></th>
<th><FONT face=verdana size=2>MODEL : '.$wiersz['model'].'</FONT></th>
<th><FONT face=verdana size=2>SN : '.$wiersz['sn'].'</FONT></th>
<th><FONT face=verdana size=2>DO : '.$wiersz['done'].'</FONT></th>
</tr>
</table>
<FONT face=verdana size=2><p>Proszę nie odpowiadać na tego maila.</p></FONT>
</body></html>';
mail($mailto, $mailsubj, $mailbody, $mailhead); mysql_query("UPDATE zur SET mail = '1' WHERE done = '$data[dzis]'"); //update pola mail na 1 - mail wyslany }
edit:
ok znalazłem problem, brakowało otwartej klamry po if ($wiersz['mail'] == 0) oraz drugiej zamykającej po mysql_query, po zmianie wygląda że jest ok.
dziękuję za wszystkie sugestie
Jednak nie jest dobrze. O ile kolorowanie wierszy funkcjonuje tak jak chciałem to wysyłanie powiadomień już nie.
Status czy wysłany (1) czy nie (0) działa poprawnie tylko dla ostatniego wyświetlanego rekordu z bazy danych. Zmiana innych uzależniona jest właśnie od niego.
Czemu skrypt się tak zachowuje?
$mailto = "adres mailowy";
$mailsubj = "Kalibracja sprzętu";
$mailhead = "MIME-Version: 1.0\n";
$mailhead .= "Content-type: text/html; charset=UTF-8\n";
$mailhead .= "From: zur@sbe-online.pl\n";
mysql_set_charset('utf8'); //ustawiam kodowanie znaków z bazy na UTF-8
$all=mysql_query("SELECT * FROM zur ORDER BY workshop"); {
$data['dzis'] = date('Y-m-d'); $data['termin'] = date('Y-m-d',strtotime('30 day')); //30 dni od dziś if($wiersz['done'] == $data['dzis']){
$style = 'style="background-color: #F2F246;"';
if ($wiersz['mail'] == 0) { //sprawdzam czy mail był już wysłany 0 - nie, 1 - tak
$mailbody = '<html><body>
<FONT face=verdana size=2><p>Dziś mija termin kalibracji poniższego sprzętu:</p></FONT>
<table border=1>
<tr>
<th><FONT face=verdana size=2>MIEJSCE: '.$wiersz['workshop'].'</FONT></th>
<th><FONT face=verdana size=2>TYP : '.$wiersz['typ'].'</FONT></th>
<th><FONT face=verdana size=2>MODEL : '.$wiersz['model'].'</FONT></th>
<th><FONT face=verdana size=2>SN : '.$wiersz['sn'].'</FONT></th>
<th><FONT face=verdana size=2>DO : '.$wiersz['done'].'</FONT></th>
</tr>
</table>
<FONT face=verdana size=2><p>Proszę nie odpowiadać na tego maila.</p></FONT>
</body></html>';
mail($mailto, $mailsubj, $mailbody, $mailhead); //wysłanie maila na zdefiniowany adres mysql_query("UPDATE zur SET mail = '1' WHERE done = '$data[dzis]'"); //jeżeli mail wysyłany po raz pierwszy dopisuje 1 do kolumny mail w tym konkretnym rekordzie - działa tylko dla ostatniego rekordu z tabeli }
}
elseif($wiersz['done'] <= $data['termin'] || $wiersz['done'] < $data['dzis'])
{
$style = 'style="background-color: #FF5F5F;"';
}
elseif($wiersz['done'] > $data['termin']) //warunek kiedy termin jest odległy
{
$style = 'style="background-color: #9ACD32;"' ;
mysql_query("UPDATE zur SET mail = '0'"); //zmienia status na 0 w kolumnie mail jeżeli data jest odległa od terminu (działa tylko jeżeli warunek dotyczy ostatniego rekordu w tabeli) }