2013-05-21 2 views
0

Я новичок в PHP и CodeIgniter, и увидел, что есть много вопросов, которые упоминают об этом, и пытались их всех, но ничего не работает. Все загружается автоматически в конфигурации, работает база данных и работает функция для публикации в базу данных, но запись на страницу просмотра вообще не работает. За исключением отображения имени пользователя, но для этого я создаю новую переменную на странице просмотра.message undefined variable: news on view page

Контроллер

public function ShowNews() 
{ 
    $data = array(); 
    $this->load->model('user'); 
    $data['news'] = $this->user->getNews(); 
    $this->load->vars($data); 
} 

Модель

function getNews(){ 
    $q = $this->db->get('News'); 
    if($q->num_rows() > 0){ 
     return $q->result(); 
    } 
    return FALSE; 
} 

Посмотреть

<?php foreach($news as $row) : ?> 

<li><?php echo $row->Title; ?> </li> 
<li><?php echo $row->Date; ?></li>  

<?php endforeach; ?> 

Это ошибка EDIT VES к новости

A PHP Error was encountered 

Severity: Notice 

Message: Undefined variable: news 

Filename: admin/Pocetna.php 

Line Number: 64 
A PHP Error was encountered 

Severity: Warning 

Message: Invalid argument supplied for foreach() 

Filename: admin/Pocetna.php 

Line Number: 64 

Использование WAMP, NetBeans с CodeIgniter. Я видел, что это должно быть что-то с передачей данных от контроллера для просмотра, но я не могу понять это и пробовать несколько дней, но всегда имеет проблемы.

+0

1) 'ves' не установлен нигде. и 2) Вы не предоставили массив массив объектов в вашем foreach. –

+0

ves на моем родном языке, я меняю ves на новости при копировании здесь – DarkTemplar

+0

, пожалуйста, напишите призыв к функции Shownews –

ответ

1

Вы не пропустите $data на ваш взгляд. Ваш контроллер должен быть таким:

public function show_news() 
{ 
    $this->load->model('user'); 

    $data = []; 
    $data['news'] = $this->user->get_news(); 

    $this->load->view('news', $data); 
} 

Ваше мнение также следует проверить, если $news является FALSE, потому что вы будете иметь некоторые проблемы с foreach, если цикл по значению FALSE. Ваша модель также должна возвращаться result_array не result, зацикливание foreach cam't над объектами ..

public function get_news() 
{ 
    $q = $this->db->get('News'); 

    return($q->num_rows() > 0) ? $q->result_array() : FALSE; 
} 

Ваше мнение должно выглядеть примерно так:

<?php 
    if($news !== FALSE) 
    { 
     foreach($news as $row) 
     { 
      echo "<li>{$row['title']}</li>"; 
      echo "<li>{$row['date']}</li>"; 
     } 
    } 
    else 
    { 
     echo "No news to see here!"; 
    } 
?> 

Ваше название также не связывает с ошибка в сообщении, так что это решение для одного в заголовке.

+0

Я забыл изменить ves на новости при копировании здесь, потому что переменная ves на моем родном языке, поэтому я меняю ее, чтобы вы могли лучше понять ...... Все еще получая ту же ошибку сейчас в двух строках – DarkTemplar

+0

Вы заменили представление и код модели, также? –

+0

Да, все, как вы сказали – DarkTemplar