0

問題を解決するのが非常に難しいです。基本的に私は部屋を検索し、基準に一致する部屋のリスト(ページネーションを含む)を表示します。部屋の画像を呼び出そうとすると、問題が発生します。最初の画像は表示されますが、残りは表示されません。エラーが発生します。

PHPエラーが発生しました重大度:通知

メッセージ:未定義のオフセット:0

ファイル名:views / search_view.php

行番号:27

PHPエラーが発生しました重大度:通知

メッセージ:非オブジェクトのプロパティを取得しようとしています

ファイル名:views / search_view.php

行番号:27

これは私がこれまでにしたことです

私のモデル:

function get_room_image($rid)
{
    $q = $this->db
        ->where('room_id',$rid)
        ->limit(1)
        ->get('room_image');

    return $q->result();

}

function search_rooms() 
{
    $q = $this->db
        ->where('features', $this->input->post('features'))
        ->get('rooms');

    $room['results'] = $q->result();

    return $room['results'];
}

私のコントローラー:

function search()
{
    $data['main_content'] = 'search_view';
    $data['page_title'] = 'Search';

    $data['results'] = $this->site_model->search_rooms();

    $this->load->view('includes/template',$data);
}

私の見解:

...    
<?php foreach ($results['results'] as $room) { 

    $room_images = $this->site_model->get_room_image($room->id); ?>
        <div class="col2 bot">

            <div class="col_head"></div>
                <div class="col_info">
                <table border="0" cellpadding="5" cellspacing="5">
                <tr><td> 
                <img src="<?php echo base_url() . 'room/' . $room_images[0]->image_name; ?>" border="0" class="imgbox" />
                </td> 
...

27行目は、実際にはimgタグが付いた行です。

要求に応じてvar_dumpを実行すると、次のようになります。

array(1) {
  [0]=>
  object(stdClass)#27 (3) {
    ["id"]=>
    string(1) "1"
    ["room_id"]=>
    string(1) "1"
    ["image_name"]=>
    string(36) "1614d828817ac5b396660621048b167a.jpg"
  }
}

array(0) {}
array(0) {}
array(0) {}
...

したがって、各反復でget_room_image関数が正しく実行されていないようです。

どんなアドバイスでも大歓迎です。

よろしく、

4

2 に答える 2

3

まず、ビュー内からモデルを呼び出すべきではないと思います。コントローラ内からモデルを呼び出して、ビューに渡す必要があります。それについて話している別のSO投稿:https ://stackoverflow.com/a/1733309/1260593

モデル内のテーブルで結合を実行してみてください。

モデル:

function search_rooms() 
{
$q =  $this->db
 ->select('*')
 ->from('rooms')
 ->where('features', $this->input->post('features'))
 ->join('room_image', 'rooms.id = room_image.room_id');

return $q;
}

コントローラ:

$data['main_content'] = 'search_view';
$data['page_title'] = 'Search';

$data['results'] = $this->site_model->search_rooms();

$this->load->view('includes/template',$data);

意見:

<?php foreach ($results->result() as $room) { 

   $image = $room->image_name;
    <div class="col2 bot">

        <div class="col_head"></div>
            <div class="col_info">
            <table border="0" cellpadding="5" cellspacing="5">
            <tr><td> 
            <img src="<?php echo base_url() . 'room/' . $image; ?>" border="0" class="imgbox" />
            </td> 
}
于 2012-06-22T06:00:21.043 に答える
0

「;」を追加するのを忘れたため、問題は解決しました。データベースクエリ文字列内の行に

于 2012-06-22T12:39:36.167 に答える