如何使用数组和条件获取表值

时间:2012-10-03 19:48:51

标签: php mysql codeigniter codeigniter-datamapper

我正在学习并决定使用带有后端和前端的CodeIgniter应用程序进行学习,我遇到了以下疑问。 您是否希望从数据库中的表中获取所有数据并放入数组中,之后我想在第1列的值等于我确定的值时显示第2列中的数据。

为了更好地说明我将举例说明的内容,请查看下表。

ID      Option              Value
1       site_name           Test
2       site_description    Example of description site.
3       site_url            http://www.example.com
4       site_author         John Doe
5       site_lang           en

现在假设我想在标签内显示我的页面上的这些数据,例如我会使用“site_name”,因为该网站的描述将是“site_description”,依此类推。最好的方法是什么?

PS:我正在使用ORM Datamapper这个应用程序,有没有办法简化使用它的操作?

1 个答案:

答案 0 :(得分:1)

你的问题很不清楚 - 如果我正确地解释它,如果你正在使用Datamapper ORM你会这样做:

您的控制器 - controllers/sites.php

<?php
class Sites extends CI_Controller{
    function __construct(){
        parent::__construct();
    }

    function get($id){
        $s = new Site($id);
        $data['site'] = $s->to_array();
        $this->load->view('sites', $data);
    }
}

您的型号 - site.php:

<?php
class Site extends Datamapper{
    function __construct($id){
        parent::__construct($id);
    } 
}

默认情况下,Datamapper ORM不支持to_array()方法,您必须启用它。进入config/datamapper.php并将最后一个'extensions'数组元素修改为:$config['extensions'] = array('array');

最后,在您看来 - views/sites.php

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Option</th>
            <th>Value</th>
        </tr>
    </thead>
    <tbody>
        <? foreach($sites as $sK => $sV):?>
            <tr>
                <td><?= $sV['id'];?></td>
                <td><?= $sV['option'];?></td>
                <td><?= $sV['value']?></td>
            </tr>
        <? endforeach;?>
    </tbody>
</table>

然后将http://localhost/yourapp/sites/get/<id>放入浏览器,其中<id>实际上是数据库中的一个合适ID。

评论后编辑:

如果这些是站点范围的全局变量,我建议不要将它们存储在数据库中。没有意义让数据库调用来获取这些信息。只需将其嵌入PHP中即可。我这样做的方法是在前面的define()文件的顶部调用index.php

define('TITLE', "Some Title");
define('DEVELOPER', "Your Name");
define('DEVELOPER_EMAIL', 'youremail@example.com');

然后,您可以在应用程序的任何位置使用这些内容。例如,简单地调用<?= TITLE; ?>将回显“Some Title”。

您还可以考虑使用config/constants.php