0

だから私はコントローラにこのコードブロックを持っています(私は知っています、dbのものはモデルにあるはずです..私はそれをそこに転送します)。データベースで「サブスクリプション」を検索し、ビューにエコーします。それはうまくいきます。ただし、私の見解では、以下の 2 番目のコード ブロックのような IF ステートメントを追加したいと考えていますが、機能していません。提案?つまり、ビューに IF ステートメントをどのように記述しますか? queryその部分が間違っていることは確かです...

    // displays current subscription in view
    $userid = $this -> session -> userdata('user_id');

    $this -> db -> select('subscription');
    $this -> db -> where ('id', $userid);
    $query = $this -> db -> get('subscriptions');

    if($query -> result() == TRUE) // if subscription exists for user, display:
    {
        foreach ($query->result() as $row)
        {
            $data['packagename'] = $row->subscription;
        } 
    } 

ビューで:

    <?php if($query -> result() == TRUE) : ?>
    <? echo $packagename; ?>
    <?php endif ?>
4

3 に答える 3

5

$query->result()ブール値を返しません。配列obオブジェクトを返します。

クエリが結果を返したかどうかを確認するには、を使用しますnum_rows()

if($query->num_rows() > 0){
    foreach ($query->result() as $row){
    }
}

また、オブジェクトをビューに渡さないでください$query。代わりにisset、変数が存在するかどうかを確認するために使用してください。

<?php if(isset($packagename)): ?>
    <?php echo $packagename; ?>
<?php endif ?>
于 2012-11-08T16:38:19.583 に答える
5

DBロジックをビューから遠ざけてください。それがモデルの目的です。すでに $packagename をビューに渡している場合は、単純にテストしてみませんか?

<?php if ( isset($packagename) ) : ?>
    <? echo $packagename; ?>
<?php endif; ?>

または、short_open_tags を使用できる場合:

<? if ( isset($packagename) ) : ?>
    <?= $packagename ?>
<? endif; ?>
于 2012-11-08T16:39:07.973 に答える
1

私があなたのコードから見たものに基づいて、コントローラーで使用する変数がビュー内で自動的に利用可能になるとあなたが考えているように感じます。これはそうではありません。コントローラーで変数を設定してロジックを実行し、表示したいものをビューに渡す必要があります。

コントローラーは次のようになります。

// displays current subscription in view
$userid = $this -> session -> userdata('user_id');

$this -> db -> select('subscription');
$this -> db -> where ('id', $userid);
$query = $this -> db -> get('subscriptions');

if($row = $query -> result()) // if subscription exists for user, display:
{
        $data['packagename'] = $row->subscription;
}

$this->load->view("yourview", $data);

ID でプルしているため、 は必要ありません。必要なforeachレコードは 1 つだけです。

次に、ビューで、次のように表示します。

<?php if (!empty($packagename)) echo $packagename;?>
于 2012-11-08T16:41:47.857 に答える