开发者

newbie problems with codeigniter

i'm trying to learn codeigniter (following a book) but don't understand why the web page comes out empty.

my controller is

class Welcome extends Controller {

    function Welcome()
    {
        parent::Controller();
    }

    function index()
    { 
        $data['title'] = "Welcome to Claudia's Kids";
        $data['navlist'] = $this->MCats->getCategoriesNav();
        $data['mainf'] = $this->MProducts->getMainFeature();
        $skip = $data['mainf']['id'];
        $data['sidef'] = $this->MProducts->getRandomProducts(3, $skip);
        $data['main'] = "home";     
        $this->load->vars($data);
        $this->load->view('template');
    }

th开发者_如何学运维e view is:

<--doctype declaration etc etc.. -->
</head>
<body>
    <div id="wrapper">
        <div id="header">
            <?php $this->load->view('header');?>
        </div>

        <div id='nav'>
            <?php $this->load->view('navigation');?>
        </div>

        <div id="main">
            <?php $this->load->view($main);?>
        </div>

        <div id="footer">
            <?php $this->load->view('footer');?>
        </div>

    </div>
</body>
</html>

Now I know the model is passing back the right variables, but the page appears completely blank. I would expect at least to see an error, or the basic html structure, but the page is just empty. Moreover, the controller doesn't work even if I modify it as follows:

function index()
{ 
    echo "hello.";
}

What am I doing wrong? Everything was working until I made some changes to the model - but even if I delete all those new changes, the page is still blank.. i'm really confused!

thanks, P.


I've isolated the function that gives me problems. here it is:

function getMainFeature()
{
    $data = array();
    $this->db->select("id, name, shortdesc, image");
    $this->db->where("featured", "true");
    $this->db->where("status", "active");
    $this->db->orderby("rand()");
    $this->db->limit(1);
    $Q = $this->db->get("products");
    if ($Q->num_rows() > 0)
    {
        foreach($Q->result_arry() as $row)
        {
            $data = array(
                "id" => $row['id'],
                "name" => $row['name'],
                "shortdesc" => $row['shortdesc'],
                "image" => $row['image'] 
                );
        }
    }
    $Q->free_result();
    return $data;
}

I'm quite convinced there must be a syntax error somewhere - but still don't understand why it doesn't show any error, even if I've set up error_reporting E_ALL in the index function..


First port of call is to run php -l on the command line against your controller and all the models you changed and then reverted.

% php -l somefile.php

It's likely that there is a parse error in one of the files, and you have Display Errors set to Off in your php.ini. You should set Display Errors on for development and off for production, in case you haven't already.

(Edit: in the example above you have missed off the closing } of the class. It might be that.)


Make sure error_reporting in index.php is set to E_ALL and post your code for the model in question.

After looking through your function I suspect it's caused by $this->db->orderby("rand()"); For active record this should be $this->db->order_by('id', 'random');

Note that orderby is deprecated, you can still use it for now but the new function name is order_by


Not sure, but it can be also caused by php's "display_errors" is set to false. You can change it in your php.ini file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜