2014-10-29 169 views
0

我想填充数据库表中的条目的下拉选择。
数据库表从数据库填充下拉列表

TABLE `events` (
    `event_id` INT(11) unsigned NOT NULL AUTO_INCREMENT, 
    `event_title` VARCHAR(255) NOT NULL, 
    `event_desc` TEXT, 
    `event_location` VARCHAR(255) NOT NULL, 
    `event_requirements` TEXT DEFAULT NULL, 
    `event_date` DATETIME NOT NULL, 
PRIMARY KEY (`event_id`) 

的代码(在MVC架构):
控制器

function index() 
    { 
     $overview_model = $this->loadModel('Events'); 
     $this->view->dog_types = $overview_model->getEventTypes(); 
     $this->view->render('events/index'); 
    } 

模型

public function getEventTypes() 
    { 
     $sth = $this->db->prepare("SELECT event_id, event_title FROM events"); 
     $sth->execute(); 

     $events = array(); 

     foreach ($sth->fetchAll() as $event) { 
      $events[$event->event_id] = new stdClass(); 
      $events[$event->event_id]->event_title = $event->event_title; 
     } 
     return $events; 
    } 

查看

<select> 
     <?php foreach ($this->events as $event) { 
      echo "<option value='" .$event->event_title. "'>" .$event->event_title."</option>"; 
     }?> 
    </select> 

错误我越来越:

公告:未定义的属性:查看:: $事件

警告:的foreach提供了无效的参数()

我对这一切都非常陌生,对于任何形式的帮助都会很开心!谢谢!!

回答

1

错误很明显。你没有一个名为$ events的属性。您填写一个名为

$this->view->dog_types 

而且在你看来,你将能够访问这样的对象属性:

<select> 
     <?php foreach ($this->dog_types as $event) { //or $events as $event depending what you indexed as 
      echo "<option value='" .$event->event_title. "'>" .$event->event_title."</option>"; 
     }?> 
    </select> 
+0

非常感谢你!我一直在查看代码很长时间,以至于我没有发现它! – Schwesi 2014-10-29 11:53:06

+0

你在使用CI吗?如果不是,我会改变答案 – 2014-10-29 11:55:01

+0

我使用的是https://github.com/panique/php-login – Schwesi 2014-10-29 11:57:27

1

首先我想知道您正在使用的框架? 出现此错误是因为您尚未将事件传递给相应的视图。 当您在此时渲染任何视图时,必须传递要在视图中使用的变量。根据您的陈述

$ this-> view-> dog_types = $ overview_model-> getEventTypes();

这意味着你节省事件dog_types变量,而您正在尝试使用事件来访问它。

+0

啊是啊好点。出于某种原因,我认为CodeIgniter – 2014-10-29 11:54:43

+0

太棒了!谢谢!迈克米勒已经指出了。我只是将dog_types更改为控制器中的事件,现在它可以工作。 – Schwesi 2014-10-29 11:55:34

+0

因为我没有足够的声望,所以我现在无法为您的回应投票,但我会尽快给您答复!谢谢您的帮助! – Schwesi 2014-10-29 12:00:29