Autor Zpráva
Ben
Profil *
Ahoj, vytvářím script pro cron na kontrolu vypršení aukce a následným odesláním emailu, pokud je datum konce aukce menší než momentální datum. Problém je v tom, že se mi cyklus provede jenom jednou i když v MySQL mám 3 odpovídající záznamy, které vyhovují podmínce pro odeslání. ta samá podmínka je použita pro výpis ukončených aukcí a vypíše záznamy 3.
Nějaké nápady?
<?php

error_reporting(e_all);
//conecting to MySQL
include"config.php";

//funkce na zjisteni zbyvajiciho casu
function get_time_difference($start, $end){
  $uts['start'] = strtotime($start);
  $uts['end'] = strtotime($end);
  if($uts['start'] !== -1 && $uts['end'] !== -1){
    if($uts['end'] >= $uts['start']){
      $diff = $uts['end'] - $uts['start'];
      if($days = intval((floor($diff / 86400))))
        $diff = $diff % 86400;
      if($hours = intval((floor($diff / 3600))))
        $diff = $diff % 3600;
      if($minutes = intval((floor($diff / 60))))
        $diff = $diff % 60;
        $diff = intval($diff);            
    return(array('days'=>$days, 'hours'=>$hours, 'minutes'=>$minutes, 'seconds'=>$diff));
    }
    else{
    //trigger_error("Konečný datum a čas je starší než počáteční!", E_USER_WARNING);
    }
  }
  else{
    //trigger_error("Zjištěno neplatné datum nebo čas!", E_USER_WARNING);
  }
  return(false);
}

$result = mysql_query("SELECT * FROM aukce ORDER BY id ASC");

while($row = mysql_fetch_array($result)){
  //$row["end"] je datum konce a musi byt ulozena v numerickem formatu YYYY-MM-DD-HH-MM-SS
  $datum = explode("-", $row["end"]);
  $rok = $datum[0];
  $mesic = $datum[1];
  $den = $datum[2];
  $hodina = $datum[3];
  $minuta = $datum[4];
  $sekunda = $datum[5]; 
  $arr = get_time_difference("now", "$rok-$mesic-$den $hodina:$minuta:$sekunda");
    
  if($arr == false){
    //echo $row["end"]."<br>";
    //echo "Prodáno";
    function autoUTF($s){
      // detekce UTF-8
      if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
      return $s;
      // detekce WINDOWS-1250
      if (preg_match('#[\x7F-\x9F\xBC]#', $s))
      return iconv('WINDOWS-1250', 'UTF-8', $s);
      // předpoklad ISO-8859-2
      return iconv('ISO-8859-2', 'UTF-8', $s);
    }

    function cs_mail ($to, $predmet, $zprava, $head = ""){
      $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?=";
      $head .= "MIME-Version: 1.0\n";
      $head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
      $head .= "Content-Transfer-Encoding: base64\n";
      $zprava = base64_encode (autoUTF ($zprava));
      return mail ($to, $predmet, $zprava, $head); 
    }

    $zprava = "Dobrý den,\n
               právě jste úspěšně vydražil/a předmět ".$row["manufacturer"] .$row["tip"]."za částku ".$row["price"]."&Euro;.\n
               Vydražený předmět je pro vás připraven k vyzvednutí na centrále v IT oddělení. Platba proběhne formou srážky z platu následující měsíc.\n
               V případě jakýchkoli dotazů nás kontaktujte.\n\n

               Gratulujeme k vyhrané aukci!\n\n
              ";
    $mail = $row["last_bid_from"]."@amrest.eu";
    $predmet = "Aukce - ".$row["manufacturer"] .$row["tip"];
    $kon = cs_mail ($mail, $predmet, $zprava, "From: $_POST[odesilatel] \n");

    if ($kon)
      echo "<p class=\"box\"><strong>Zprava byla odeslana.</strong></p>";
                 
    else
      echo "<p class=\"error\"><strong>Zpravu se nepodarilo odeslat.</strong></p>";
  }
}  

?>

Tori
Profil
Dejte ty definice funkcí mimo cyklus. Pokud o redeklaraci existující funkce vyhodí Fatal Error.
Ben
Profil *
Tori Supr, děkuju moc, už to valí, tak jak má.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0