CodeIgniter / PHP错误消息

时间:2013-08-01 16:41:06

标签: php codeigniter

此应用程序的目标是能够从一个视图单击链接以从另一个视图获取数据。第一个视图效果很好,我也得到了正确的PK。当我点击链接时,我遇到了问题。

从此视图获取'消息:为foreach()提供的参数无效:

<?php
    echo "<h2>View</h2>";
    foreach ($rows as $r){
        echo '<br /><h3>'; echo $r->tHandle; echo'</h3>';
        echo "<li>Sent at:  "; echo $r->content; echo"</li><br />";
        echo'<li>Created:  '; echo $r->created; echo'</li><br />';
    }
?>

这是进行数据库查询的模型和函数:

<?php
class Tweets_model extends CI_Model{

    public function __construct() {

        $this->load->database();

    }

    public function getTweetDetails($id){
    $this->db->select('*')->from('tweets')->where('tweetId', $id);
    $q = $this->db->get();
        if($q->num_rows > 0){

            foreach($q->result() as $row){

                $data[]=$row;

            }
            return $data;

        }

    }
}
?>

控制器:

<?php

class Tweets extends CI_Controller{

    public function __construct() {
        parent::__construct();
        $this->load->model('tweets_model');
    }

    public function details(){

        $data['rows'] = $this->tweets_model->getTweetDetails($this->uri->segment(2));
        $this->load->view('header');
        $this->load->view('tweet_details', $data);
        $this->load->view('footer');
    }
}

?

&GT;

任何人都可以帮我解决错误消息吗?

感谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

查看:

<?php
    echo "<h2>View</h2>";
    foreach ($rows as $r){
        echo '<br /><h3>'; echo $r['tHandle']; echo'</h3>'; // EDIT THIS LINE
        echo "<li>Sent at:  "; echo $r['content']; echo"</li><br />";
        echo'<li>Created:  '; echo $r['created']; echo'</li><br />';
    }
?>

MODEL:

<?php
class Tweets_model extends CI_Model{

    public function __construct() {

        $this->load->database();

    }

    public function getTweetDetails($id){
    $this->db->select('*')
    $this->db->from('tweets')
    $this->db->where('tweetId', $id);
    return $this->db->get()->result_array();

    }
}
?>

控制器:

<?php

class Tweets extends CI_Controller{

    public function __construct() {
        parent::__construct();
        $this->load->model('tweets_model');
    }

    public function details(){

        $data['rows'] = $this->tweets_model->getTweetDetails($this->uri->segment(2));
        $this->load->view('header');
        $this->load->view('tweet_details', $data);
        $this->load->view('footer');
    }
}

?>

<强>更新

细分从左到右编号。例如,如果您的完整网址是:

  

http://example.com/index.php/news/local/metro/crime_is_up

细分数字是这样的:

$this->uri->segment(1) // with return -> news
$this->uri->segment(2) // with return -> local
$this->uri->segment(3) // with return -> metro
$this->uri->segment(4) // with return -> crime_is_up

在您的情况下,$this->uri->segment(2)将返回details。而且查询将返回0行。 只是为了测试,你可以这样做:

public function details(){
            $tweet_id = 1 // for example
            $data['rows'] = $this->tweets_model->getTweetDetails($tweet_id);
            $this->load->view('header');
            $this->load->view('tweet_details', $data);
            $this->load->view('footer');
        }

或者您可以从网址获取,例如:

public function details($id){ // Here you will have the $tweet_id

                $data['rows'] = $this->tweets_model->getTweetDetails($this->uri->segment(3));
                $this->load->view('header');
                $this->load->view('tweet_details', $data);
                $this->load->view('footer');
            }

答案 1 :(得分:0)

您需要在此处进行一些故障排除。所有错误都是因为数据库没有返回任何数据。

  1. 确保tweetId实际上在段2中,段在base_url之后开始计数,所以如果您的基本URL是example.com,那么段2将类似于example.com/tweet/2,其中2是右段。

  2. 传递一条推文,你知道这行中的模型存在:

    $ data ['rows'] = $ this-&gt; tweets_model-&gt; getTweetDetails($ this-&gt; uri-&gt; segment(2));

  3. 类似于:

    $data['rows'] = $this->tweets_model->getTweetDetails(1);