2015-06-05 5 views
1

Мой вопрос связан с mysql, php, html. У меня есть MVC,Показывать «Нет данных» или пустым, когда в таблице mysql нет данных, php, html

Ниже мой контроллер,

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;?> 

Ожидаемые результаты когда имеются данные в базе данных, означает модель получить некоторые строки из БД,

Но когда нет никаких данных, то мои просматривать страницы показывает сообщение об ошибке, как показано ниже,

A PHP Error was encountered 

Severity: Notice 

Message: Trying to get property of non-object 

Filename: user/view_home.php 

Line Number: 115 

Как мы можем показать никаких данных или пустой когда нет доступных строк для показа?

Благодаря передовому,

+0

Можете ли вы показать нам свою модель? – Craig

+0

@Craig, добавлена ​​модель для view_latestnews(), – rjcode

+1

'if (isset ($ latestnews-> news_content))'? Я думаю, что 'if ($ lastnews)' тоже будет работать, IIRC CI возвращает null, если запись не найдена, но не работает с ней некоторое время –

ответ

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; 
} 

Надеется, что это помогает ...

0

уборщице решения (с небольшим модом на ответе @Gopakumar GOPALAN в)

Было бы проверить, существует ли $newsrow, если так возвращаются $newsrow в противном случае возвращать false примерно так:

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

Это вернет false если newsrow пуст, таким образом, давая вам значение для работы.

В своем коде, показывая последние новости:

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

Просто проверка на falsy значения решает проблему. P.S.

У меня нет опыта использования codeIgniter, возможно, функция ->row() возвращает пустой объект, если строка пуста. Если это так, то модификация, которую я сделал, не будет работать, поскольку она все равно будет значением, которое оценивается как true.

Удачи вам!

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(); 
    } 
1

На ваш взгляд, просто используйте:

if (is_object($latestnews)) { 
echo $latestnews->newscontent; 
} 
Смежные вопросы