Проблема с извлечением и отображением данных (пользователей) из базы данных - PullRequest
0 голосов
/ 12 марта 2019

У меня проблемы с попыткой получить и отобразить всех зарегистрированных пользователей из базы данных на странице index.php в проекте php mvc, предназначенном для обучения.Проблема в том, что когда я не вошел в систему, я получаю ошибку

Notice: Undefined variable: users in C:\xampp\htdocs\php\App\Controllers\UserController.php

, но когда я вошел в систему, я получаю ту же ошибку, но тогда неопределенной переменной является 'имя'.Я пытался найти сообщения с похожими ошибками, но мне не удалось решить эту проблему.Любая помощь приветствуется.Вот часть моего кода

UserController

<?php
namespace App\Controllers;

use App\Models\User;
use Core\Controller;

class UserController extends Controller
{
    public function __construct($controller, $action)
    {
        parent::__construct($controller, $action);
        $this->UserModel = $this->load_model('User');
    }

    public function createUserSessionAction($user)
    {
        $_SESSION['user_id'] = $user->id;
        $_SESSION['user_email'] = $user->email;
        $_SESSION['user_name'] = $user->name;
        redirect('home/index');
    }

    public function indexAction()
    {
        if (!empty($_SESSION['user_name'])) {
            $users = $this->UserModel->findAllUsersByName($name);
        }
        $this->view->render('users/index', $users);
    }

Пользователь

<?php
namespace App\Models;

use Core\Database;

class User
{
    private $db;

    public function __construct()
    {
        $this->db = new Database();
    }

    public function findAllUsersByName($name)
    {
        $this->db->query('SELECT * FROM users WHERE name = :name');
        $this->db->bind(':name', $name['name']);
        $row = $this->db->resultSet();
        if ($this->db->rowCount() > 0) {
            return true;
        } else {
            return false;
        }
    }
}

index.php

<?php 

    use App\Models\User;

    $users = new User;

    ?>

    <table class="table table-hover">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($users as $user): ?>
                <tr>
                    <td><?php echo $user->id; ?> </td>                 
                    <td><?php echo $user->name; ?></td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>

Я хотел бы иметь возможностьотображать имена всех зарегистрированных пользователей из базы данных.

1 Ответ

0 голосов
/ 12 марта 2019
public function indexAction()
    {
        if (!empty($_SESSION['user_name'])) {
            $users = $this->UserModel->findAllUsersByName($name);
        }
        $this->view->render('users/index', $users);
    }

В строке 4 вы используете переменную $name, но вы ее нигде не определяли. Но если вы не попали в это условие, переменная $users никогда не будет определена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...