2012-01-31 105 views
0

我想发送邮件,当产品从过去和过时和过后的日期,在php中我用的是使用php的日期和mysql函数,但如果产品过期日期来像31-1 -2012,在不同的值不适合我的编码,plz帮助如何解决它, 这是我的编码PHP邮件发送时产品到期

<?php 

$sql = mysql_query("SELECT * FROM supplier_product_det"); 
$results = mysql_num_rows($sql); 
//echo '<script>alert("'.$results.'")</script>'; 
if ($results > 0) 
{ 

     for($i=0;$i<$results;$i++) 
     { 
      while($rows = mysql_fetch_array($sql)) 
      { 
      /* print_r($rows['expired_on']);?><br /> <?*/ 
      $exdate = $rows['expired_on']; 
      $curdate = date('Y-m-d'); 
      $datedif = mysql_query("select datediff('".$curdate."','".$exdate."')"); 
      while($date = mysql_fetch_array($datedif)) 
      { 
       //echo $date['0']; 
       //echo $rows['pro_code']; 
       if (($date['0'])== 1) 
       { 

        if(($rows['mailcount'])!== $curdate) 
        { 
         $to = $rows['supplier']; 
         $subject = "Product Expire Intimation"; 
         $message = "Dear Mr/Miss/Mrs 
         The Following Your Product Expired 
         Product Code:".$rows['pro_code']." 
         Product Name:".$rows['product_name']." 
         Product Expire Date:".$rows['expired_on']."";    
         $from = "[email protected]"; 
         $headers = "From:" . $from; 
         mail($to,$subject,$message,$headers); 
         $checkdate = mysql_query("update supplier_product_det set mailcount ='".$curdate."' where id='".$rows['id']."'") or die(mysql_error()); 
        } 


        //echo $rows['supplier']; 

       } 
        if (($date['0'])== 0) 
       { 
        if(($rows['mailcount'])!== $curdate) 
        { 
         $to = $rows['supplier']; 
         $subject = "Product Expire Intimation"; 
         $message = "Dear Mr/Miss/Mrs 
         The Following Your Product Expired 
         Product Code:".$rows['pro_code']." 
         Product Name:".$rows['product_name']." 
         Product Expire Date:".$rows['expired_on'].""; 
         $from = "[email protected]"; 
         $headers = "From:" . $from; 
         mail($to,$subject,$message,$headers); 
         $checkdate = mysql_query("update supplier_product_det set mailcount ='".$curdate."' where id='".$rows['id']."'") or die(mysql_error()); 
        } 


        //echo $rows['supplier']; 

       } 
        if (($date['0'])== -1) 
       { 
        if(($rows['mailcount'])!== $curdate) 
        { 
         $to = $rows['supplier']; 
         $subject = "Product Expire Intimation"; 
         $message = "Dear Mr/Miss/Mrs 
         The Following Your Product will Expire Today 
         Product Code:".$rows['pro_code']." 
         Product Name:".$rows['product_name']." 
         Product Expire Date:".$rows['expired_on'].""; 
         $from = "[email protected]"; 
         $headers = "From:" . $from; 
         mail($to,$subject,$message,$headers); 
         $checkdate = mysql_query("update supplier_product_det set mailcount ='".$curdate."' where id='".$rows['id']."'") or die(mysql_error()); 
        } 


        //echo $rows['supplier']; 

       } 
      } 

      } 

     } 

} 
?> 
+0

数据库的模式是什么?另外,是否有一个原因,你没有推迟到数据库的处理? (毕竟,您可以修改第一个查询以仅返回那些即将到期的行,以便您不必执行第二个查询来执行日期比较) – 2012-01-31 08:50:32

+0

您的第二个选择不需要。将一列添加到您现在将返回的第一条语句() - expired_on – alfasin 2012-01-31 08:56:12

+0

感谢您的回复 – tamildinesh 2012-01-31 09:23:04

回答

0

尝试这样的事情...

PHP: $now = date('Y-m-d', strtotime('now')); 

-

SQL: WHERE $now >= DATE_FORMAT(expires, "%Y-%m-%d") 
1

写你的第二个选择查询如下

SELECT DATEDIFF($exdate, CURRENT_DATE) as diff; 

而且,不需要编写单独的选择查询你可以在第一查询本身相同之列

SELECT column1, column2, column3, DATEDIFF(expired_on, CURRENT_DATE) as diff 
FROM supplier_product_det 

您可能需要改变位置expired_on和CURRENT_DATE得到正确的差异值