0

リンクの URI セグメントがデータベースから対応するデータをロードするデータベース駆動型サイトで作業しています。このサイトは CodeIgniter 2.1.4 で実行されており、JQuery Mobile は AJAX 経由でページを読み込みます。これが私の URL の例です。

site.com/browse (インデックス機能を実行し、アーティストのリストを読み込みます)

site.com/browse/artist/album (アーティスト関数を実行し、3 番目の URI セグメント アルバムをパラメーターとしてデータ モデルに渡し、そのアーティストのアルバムのリストを読み込みます)

URL からモデルに ID を渡してデータをロードし、そのデータをビューに処理する方法を理解しています。Browse クラスの index 関数を呼び出すと、すべてが正常に機能します。アーティストのリストを作成できます。Artist 関数を呼び出すと、URI セグメントがモデルに渡されてデータが読み込まれますが、$data がビューに渡されていないように見えるため、データを表示しようとすると未定義の変数エラーが発生し続けます。

get_data.php:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Get_data extends CI_Model {

function getAllArtists() {

    $query = $this->db->query('SELECT DISTINCT ARTIST FROM data ORDER BY ARTIST');

    if($query->num_rows() > 0) {
        foreach($query->result_array() as $row){
        $data[] = $row;
        }
        return $data;
    }
}


function getAllAlbums($artist) {
    //Get artist from URI segment
    $artist = urldecode($this->uri->segment(3));
    $query = $this->db->query('SELECT DISTINCT ALBUM, ARTIST FROM data WHERE ARTIST = "'.$artist.'" ORDER BY ALBUM');

    if($query->num_rows() > 0) {
        foreach($query->result_array() as $row){
        $data[] = $row;
        }
        return $data;
    }
}

}

ブラウズ コントローラー:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Browse extends CI_Controller {

public function index(){
    //Page Data
    $data['title'] = 'Site: Browse';
    $this->load->model('get_data');
    $data['rows'] = $this->get_data->getAllArtists();
            $rows = $this->data['rows'];    

    //Page Views
    $this->load->view('t/header', $data);
    $this->load->view('p/browse', $data);
    $this->load->view('t/footer');

}

public function artist($artist){

    //URL Decode
    $artist = urldecode($artist);
    //Page Data
    $data['title'] = 'Site: '.$artist;

    //Load model and retrieve data from database
    $this->load->model('get_data');
    $this->data['rows'] = $this->get_data->getAllAlbums($artist);
    $rows = $this->data['rows'];      

    //Page Views
    $this->load->view('t/header', $data);
    $this->load->view('p/artist', $data);
    $this->load->view('t/footer');


}


public function album($album){

    //Page Data
    $data['title'] = 'site: '.urldecode($album);

    //Load model and retrieve data from database
    $this->load->model('get_data');
    $this->data['rows'] = $this->get_data->getAllSongs($album);
    $rows = $this->data['rows'];

    //Page Views
    $this->load->view('t/header', $data);
    $this->load->view('p/artist', $data);
    $this->load->view('t/footer');


    }



}

ビューを参照します(これは正常に機能します):

<!-- Start content.php -->
<div data-role="page">

<div data-role="header" data-id="header" data-position="fixed">
    <div data-role="navbar">
        <ul>
            <li><a href="http://www.site.com/home" class="" data-transition="fade">Home</a></li>
            <li><a href="http://www.site.com/browse" class="" data-transition="fade">Browse</a></li>
            <li><a href="http://www.site.com/about" class="" data-transition="fade">About</a></li>
            <li><a href="javascript:void(0)"id ="toggle">&#9654;</a></li>
        </ul>
    </div>
</div><!-- /jqm-header -->


<div data-role="content">

<ul id="song_list" data-role="listview" data-filter="true">
<?php foreach ($rows as $r) {?><li data-icon="false"><a data-transition="slide" href="http://www.site.com/browse/artist/<?php echo urlencode($r['ARTIST']); ?>"><?php echo $r['ARTIST']; ?></a></li><?php };?>
</ul>

</div>


<div data-role="footer">
    <h4>site.com</h4>
    <h5><?php echo $this->benchmark->elapsed_time();?></h5>
</div><!-- /jqm-footer -->

アーティストビュー(これによりエラーが発生します:未定義の変数「行」):

<!-- Start content.php -->
<div data-role="page">

<div data-role="header" data-id="header" data-position="fixed">
    <div data-role="navbar">
        <ul>
            <li><a href="http://www.site.com/home" class="" data-transition="fade">Home</a></li>
            <li><a href="http://www.site.com/browse" class="" data-transition="fade">Browse</a></li>
            <li><a href="http://www.site.com/about" class="" data-transition="fade">About</a></li>
            <li><a href="javascript:void(0)"id ="toggle">&#9654;</a></li>
        </ul>
    </div>
</div><!-- /jqm-header -->


<div data-role="content">

<ul id="song_list" data-role="listview" data-filter="true">
<li data-icon="false"><a data-rel="back">Back</a></li>
<?php foreach ($rows as $r) {?><li data-icon="false"><a data-transition="slide" href="http://www.site.com/browse/album/<?php echo urlencode($r['ALBUM']); ?>"><?php echo $r['ALBUM']; ?></a></li><?php };?>
</ul>

</div>


<div data-role="footer">
    <h4>site.com</h4>
    <h5><?php echo $this->benchmark->elapsed_time();?></h5>
</div><!-- /jqm-footer -->

これは私を狂気に駆り立てています。以前は動作していましたが、今は何が問題なのかわかりません。jQuery Mobile AJAX の読み込みを無効にしましたが、それでもこのエラーが発生します。どんな助けでも大歓迎です。ありがとう。

4

0 に答える 0