0
votes

Controller (blog.php)

<?php
class Blog extends CI_Controller{
    public function index ()
    {
        $this->load->model("blogvisitor");
        $user['users'] = $this->blogvisitor->logvisit();
        // print_r($data);
        $this->load->view("userslist",$user);   
    }   
}
?>

Model (blogvisitor.php)

<?php
class BlogVisitor extends CI_Model {
    public function logvisit()
    {
        return [
["fname"=>"john","lname"=>"doe"],["fname"=>"Johnny","lname"=>"Doe"]
                ];
    }
}

?>

View (userlist.php)

<html lang="en">
<head>
    <title>Users List</title>
</head>
<body>
<h1>Users list</h1>
<table>
    <? foreach($users as $user): ?>
        <tr>
            <td><?= $user['fname'] ?> </td>
            <td><?= $user['lname'] ?></td>
        </tr>   
<? endforeach; ?>
</table>
</body>
</html>

Error

Users list

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: user

Filename: views/userslist.php

Line Number: 10

And

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: user

Filename: views/userslist.php

Line Number: 11

3

3 Answers

0
votes

Change controller to:

<?php
class Blog extends CI_Controller{
    public function index ()
    {
        $this->load->model("BlogVisitor");
        $user['users'] = $this->BlogVisitor->logvisit();
        // print_r($data);
        $this->load->view("userslist",$user);   
    }   
}
?>

And view:

<html lang="en">
<head>
    <title>Users List</title>
</head>
<body>
<h1>Users list</h1>
<table>
    <?php foreach($users as $user): ?>
        <tr>
            <td><?= $user['fname'] ?> </td>
            <td><?= $user['lname'] ?></td>
        </tr>   
<?php endforeach; ?>
</table>
</body>
</html>

You must open and close php like <?php ?> and when refering to a model make sure it is case sensitive.

0
votes

You have to change your view code like this,

this line

<? foreach ($users as $user): ?>

to

<?php foreach ($users as $user): ?>
 ^

And this line

 <? endforeach; ?>

to

 <?php endforeach; ?>
   ^

So final code is

<html lang="en">
    <head>
        <title>Users List</title>
    </head>
    <body>
        <h1>Users list</h1>
        <table>
            <?php foreach ($users as $user): ?>
                <tr>
                    <td><?= $user['fname'] ?> </td>
                    <td><?= $user['lname'] ?></td>
                </tr>   
            <?php endforeach; ?>
        </table>
    </body>
</html>
0
votes

Replace inside your view by below script.Or you can open short tag from your php.ini file.

<html lang="en">
<head>
    <title>Users List</title>
</head>
<body>
<h1>Users list</h1>
<table>
    <?php foreach($users as $user): ?>
        <tr>
            <td><?= $user['fname'] ?> </td>
            <td><?= $user['lname'] ?></td>
        </tr>   
<?php endforeach; ?>
</table>
</body>
</html>