如果函数内的条件不起作用

时间:2016-04-13 10:09:12

标签: php mysql codeigniter

我正在使用codeigniter框架,它将在列中显示日期,其中行将根据其他列上的记录显示不同的日期。

我想要发生的是在日期旁边显示“活跃,几乎已过期,过期”这个词。特别是如果日期从到期日起不到7天就过期了。

例如,表格图片:

enter image description here

型号:common_model.php

function get_insurance_expiration_date($id){


        $query = $this->db->query("SELECT expiry_date FROM ".tbl_insurance." WHERE expiry_date <= NOW() - INTERVAL 1 WEEK");
        if($query == TRUE){

            return $query->row()->expiry_date.','.'Almost Expired' ;

        }else if ($query == FALSE){

            return $query->row()->expiry_date.','.'Active' ;

        }else{

            return $query->row()->expiry_date.','.'Expired' ;
        }

    }

观点:insurance_view.php

<?php
     foreach($cols as $c){
          switch($c){

            //some code here

            case 'expiry_date':                                                                                                 
                echo '<td>'.$this->common_model->get_insurance_expiration_date($record->expiry_date).'</td>';   
            break;


            //some code here

           }
       }
?>

当我尝试运行代码时,它将显示第一行中具有相同信息的所有行, 例如:

过期日期

2016-04-20,几乎已过期

2016-04-20,几乎已过期

2016-04-20,几乎已过期

2016-04-20,几乎已过期

请帮助我,我的条件有问题。我在这个问题上遇到了很多困难。

2 个答案:

答案 0 :(得分:0)

如果您使用的是Codeigniter,则需要计算返回的行数:

$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows(); 

所以,如果$query->num_rows()==0你可以检查它并做你的东西。

答案 1 :(得分:0)

从mysql中获取日期。然后使用datediff函数在php中评估它,以决定将哪个字符串连接到它的末尾。