填充数据库中的下拉列表

时间:2014-10-29 11:44:28

标签: php mysql sql oop

我正在尝试使用数据库表中的条目填充下拉列表选择 数据库表

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>

错误我得到了:

  

注意:未定义的属性:View :: $ events

     

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

我对这一切都很陌生,并且非常乐意为您提供任何帮助!谢谢!!

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

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

$ this-&gt; view-&gt; dog_types = $ overview_model-&gt; getEventTypes();

这意味着您要在 dog_types 变量中保存事件,并且您尝试使用事件来访问它。