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データマッパーを使用していますが、それを使用して操作を簡素化する方法はありますか?

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);
    } 
}

デフォルトでは、DatamapperORMはこの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; ?>たとえば、単に呼び出すだけで、「SomeTitle」がエコーされます。

の使用を検討することもできますconfig/constants.php

于 2012-10-04T03:39:58.700 に答える