0

我正在学习并决定制作一个带有后端和前端的 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这个应用程序,有什么方法可以简化使用它的操作吗?

4

1 回答 1

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.

于 2012-10-04T03:39:58.700 回答