0

私はデータベースからデータを取得するためにcodeigniterでいくつかの練習をしていますが、これは成功しています。しかし、特定のフィールドのデータを取得したいときに問題が発生します。ローカルホストで次のURLを使用して特定の値を取得するには:

localhost/codeigniter/index.php/news/view/city-news

ここで、ニュースはコントローラー、ビューはコントローラーのメソッド、シティーニュースは引数です。

これが私のコントローラーのコードです

public function view($slug)
    {

        $data['news'] = $this->news_model->get_news($slug);//here i am getting the slug value.
                if (empty($data['news_item']))
            {
        show_404();
            }

        $data['title'] = $data['news_item']['title'];

        $this->load->view('templates/header', $data);
        $this->load->view('news/view', $data);
        $this->load->view('templates/footer');
    }

このメソッドは、モデルnews_modelのメソッドget_news($ slug)を呼び出します。このメソッドのコードは次のとおりです。

public function get_news($slug = FALSE)
   {

    if ($slug === FALSE)
    {
        $query = $this->db->get('news');
        return $query->result_array();
    }
    echo $slug;//here is i m also getting the slug value.
    $query = $this->db->get_where('news', array('slug' => $slug));//i think this is not working properly
    print_r($query->row_array());die;//now i am getting values here.   
    return $query->row_array();
   } 

それでも私のビューには「404ページが見つかりません」と表示されます。私のビューコードは次のとおりです。

<?php
echo '<h2>'.$news_item['title'].'</h2>';
echo $news_item['text'];
?>

今、私がどこで間違っているのか教えてください。

4

5 に答える 5

5

あなたのエラーはあなたが設定$data['news']してテストしていることです$data['news_item']

$data['news'] = $this->news_model->get_news($slug);//here i am getting the slug value.

if (empty($data['news_item'])) // <=== HERE IS THE ERROR
{
    show_404();
}
于 2012-08-24T12:31:25.967 に答える
0

where次のような簡単なクエリで試しましたか

$data = $this->db->where('slug', $slug)->from('news');

で何かを取得する必要があります$data。少なくともmysqlオブジェクトを意味します。行がデータベースで使用可能かどうかは別の部分です。

第二に、私は真と偽について心配しています。私が知っているBoolean通りのINT(1)意味は、0または1のいずれかを意味します。それも確認する必要があります。

でクエリをデバッグできます

$this->db->last_query();

お役に立てれば。

于 2012-08-24T12:13:34.127 に答える
0

コントローラのクリーンアップされたコードは次のとおりです。

public function view($slug)
{

    $news = $this->news_model->get_news($slug);
            if (empty($news))
        {
    show_404();
        }

    $data['title'] =$news['title'];
    $data['text'] = $news['text'];

    $this->load->view('templates/header', $data);
    $this->load->view('news/view', $data);
    $this->load->view('templates/footer');
}

このメソッドは、モデルnews_modelのメソッドget_news($ slug)を呼び出します。

public function get_news($slug = FALSE)
{

if ($slug === FALSE)
{
    $query = $this->db->get('news');
    return $query->result_array();
}
echo $slug;
$query = $this->db->get_where('news', array('slug' => $slug));
print_r($query->row_array());die;//now i am getting values here.   
return $query->row_array();

}

<?php echo '<h2>'.$title.'</h2>'; echo
$text; ?>
于 2012-08-24T12:47:14.100 に答える
0

小さなエラー:ここに

if (empty($data['news_item'])) // <=== put "news" here
{
    show_404();
}

そしてあなたの見解では、次のようにデータを取得してみてください

echo $news;
于 2012-08-27T07:37:23.017 に答える
-1

die()は、代わりにexitを使用する関数です。

スクリプトの最初にこれを設定します

ini_set('display_errors', 1);
error_reporting(E_ALL);

var_dump($ query);も使用します。クエリの呼び出し時に例外または致命的なエラーが発生しなかった場合に結果が返されるかどうかを確認する

配列が空の場合は、このスラッグに関するニュースがdbにないことを意味します。特定のニュースが見つからない場合は、いくつかの条件を設定する必要があります

また、このナメクジの価値は何ですか、それは特別な文字などを含んでいますか?

于 2012-08-24T11:47:37.137 に答える