为什么我的foreach循环会创建单独的下拉列表?

时间:2014-10-22 00:37:47

标签: php drop-down-menu pdo

我使用下面的函数getAllMifs(),它使用PDO :: FETCH_OBJ返回一个名为$ mifs的stdClass对象。

这是我的模特:

public function getAllMifs()
{
    $sql = "SELECT id, color, L, A, B FROM pantonePlus2010";
    $query = $this->db->prepare($sql);
    $query->execute();
    return $query->fetchAll();
}

这是我的控制器:

Class Mifs extends Controller
{
    public function index()
    {

        echo 'Message from Controller: You are in the Controller: Mifs, using the method index().';

        $mifs_model = $this->loadModel('MifsModel');
        $mifs = $mifs_model->getAllMifs();


        // load views. within the views we can echo out $mifs and $amount_of_mifs easily
        require 'application/views/_templates/header.php';
        require 'application/views/mifs/index.php';
        require 'application/views/_templates/footer.php';
    }

这是我的查看文件:

<div>
    <?php foreach ($mifs as $mif) { ?>
        <form name="mifselect" action="<?php echo URL . 'mifs/downloadmif/' . $mif->id; ?>">
            <select name="mifselect">
                <option value="<?= $mif->id ?>"><?= $mif->color ?></option>                    
            </select>
            <input type="submit" value="Submit">
        </form>
    <?php } ?>
</div>

我无法弄清楚的问题是如何将结果放入一个下拉菜单中。我试图附上一个显示stdClass数组的屏幕截图和foreach($ mifs为$ mif)创建的五个下拉列表,但这是我的第一篇文章,而Stackoverflow.com要求我有10个声誉来发布图像...

我用PDO_ASSOC以及PDO_OBJ尝试了这个,但我仍然得到了五个下拉列表。

这一定是问题:id?&gt;&#34;&gt; color?&gt;代码,但我无法找到更正来获得一个下拉列表。

感谢任何帮助,提前谢谢!

1 个答案:

答案 0 :(得分:1)

请仅在循环内放置选项

<div>
    <form name="mifselect" action="<?php echo URL . 'mifs/downloadmif/' . $mif->id; ?>">
    <select name="mifselect">
    <?php foreach ($mifs as $mif) { ?>    
                <option value="<?= $mif->id ?>"><?= $mif->color ?></option>                    

    <?php } ?>
    </select>
    <input type="submit" value="Submit">
    </form>
</div>