显示没有数据'当mysql表,php,html中没有数据时,或者空白

时间:2015-06-05 13:51:46

标签: php html mysql codeigniter

我的问题与mysql,php,html有关。 我有我的MVC,

以下是我的控制器,

public function index(){
    $this->load->model('user/model_user');
    $this->load->model('admin/model_admin');
    $view_all['news_array'] = $this->model_user->view_news();
    $view_all['users_array'] = $this->model_admin->view_users();
    $view_all['latestnews'] = $this->model_user->view_latestnews();
    $view_all['newscomments'] = $this->model_user->view_newscomments($view_all['latestnews']->news_id);
    $view_all['newstags'] = $this->model_user->view_newstags($view_all['latestnews']->news_id);
    $this->load->view('user/view_home',$view_all);
}

以上所有数组数据都是通过我的模型获取的 下面是模型

function view_latestnews()
{
    $this->db->join('sc_users', 'sc_users.user_id = sc_news.news_postedby');
    $this->db->where('news_postedon = (SELECT max(news_postedon) FROM  sc_news)', NULL, FALSE);
    return $this->db->get('sc_news')->row();
}
下面的

是我视图中的一行(html),

<?php echo $latestnews->news_content;?>

当数据库中有数据时,这意味着工作,意味着模型从DB中获取一些行,

但是当没有数据时,我的视图页面会显示如下所示的错误信息,

A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object

Filename: user/view_home.php

Line Number: 115

如果没有可显示的行,我们如何才能显示数据或空白?

谢谢高级,

4 个答案:

答案 0 :(得分:1)

稍微修改您的模型功能

function view_latestnews()
{
  $this->db->join('sc_users', 'sc_users.user_id = sc_news.news_postedby');
  $this->db->where('news_postedon = (SELECT max(news_postedon) FROM  sc_news)', NULL, FALSE);
  $newsrow = $this->db->get('sc_news')->row();
  $nonews = new stdClass();
  $nonews->news_content = 'No news found';
  return ($newsrow) ? $newsrow : $nonews;
}

希望这会有所帮助......

答案 1 :(得分:1)

在您看来,只需使用:

if (is_object($latestnews)) {
echo $latestnews->newscontent;
}

答案 2 :(得分:0)

一个更清洁的解决方案(在@Gopakumar Gopalan的答案上有轻微模式)

检查$newsrow是否存在,如果存在,则返回$newsrow,否则返回false,如下所示:

function view_latestnews() {
    ...
    return $newsrow ? $newsrow : false;
}

如果新闻报道为空,这将返回false,从而为您提供值。

在显示最新消息的代码中:

<?php
if (!$newsrow) { //no news found
    echo '<div class="no-news">No news found!</div>'
} else {
    //Do stuff here with news object.
}
?>

只需检查虚假值即可解决您的问题。 P.S。

我没有使用codeIgniter的经验,如果行为空,->row()函数可能会返回一个空对象。如果是这种情况,那么我所做的修改将无效,因为它仍然是一个评估为真的值。

祝你好运!

答案 3 :(得分:0)

希望这会给你一些想法:

public function check_user($user_id=NULL)
    {
        $query = null; //emptying in case 
        $query = $this->db->get_where('api_users', array(//making selection
            'id' => $user_id,
        ));

        $count = $query->num_rows(); //counting result from query
         //when $count has rows then return your result otherwise 0 or any thing 
        if ($count === 0) {
           return 0;
        }
           return $query->row_array();
    }