PDO, как просмотреть выбранные данные из 4 разных таблиц, а затем с помощью PHP, чтобы просмотреть их на веб-странице - PullRequest
1 голос
/ 11 марта 2019

Я создаю небольшой проект для школы.Я был в состоянии создать функцию, которая выполняет рабочий запрос (проверено с использованием SQL).

Я получаю ошибку;Обратите внимание: я пытаюсь получить свойство 'tourName' необъекта в E: \ Programs \ XAMPP \ htdocs \ Esports \ View \ Tournament.php в строке 34.

, но я получаю это для всех из них?не уверен почему.

Если бы кто-нибудь мог помочь, я был бы благодарен.

Мой код указан ниже.

my DataAccess.php Функция, которая выполняет запрос;

function getAllTourament()
{
    global $pdo; 
    $statement = $pdo ->prepare (' SELECT tournament.tournamentName,
    tournament.console,
    tournament.no_of_players,
    tournament.prize,
    game.gName,
    sponsors.sponsorName,
    venue.venue_name,
    venue.venue_location,
    venue.venue_date,
    venue.venue_time
FROM tournament, game, sponsors, venue
    WHERE tournament.gameID = game.gameID AND tournament.sponsorID = sponsors.sponsorID AND tournament.venueID = venue.venueID
    ORDER by tournament.tournamentName, console, no_of_players, prize , gName , sponsorName , venue_name,venue_location, venue_date, venue_time');
    $statement->execute();
     $result = $statement;
    return $result;   
}

Контроллер

    <?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

require_once ("../Model/dataAccess.php");
require_once ("../Model/Game.php");
require_once ("../Model/Tournament.php");
require_once ("../Model/Sponsor.php");
require_once ("../Model/Venue.php");


$allTournament = getAllTourament();
//$allTournament = getAllT(); 

Просмотр Tournament.php

  <?php
require_once ("../Controller/allTournament.php");

?>

<?php
require "header.php";
?>

<main>
     <table>
                <thead>
                    <tr>
                        <th>Tournament Name</th>
                        <th>Console</th>
                        <th>No Of Players</th>
                        <th>Prize</th>
                        <th>Game Name </th>
                        <th>Sponsor Name </th>
                        <th>Venue Name </th>
                        <th>Venue Location </th>
                        <th>Venue Date </th>
                        <th>Venue time </th>
                    </tr>
                </thead>
                <tbody>
                    <tr> <?php foreach ($allTournament as $Tview): ?>
                        <td><?= $Tview-> tournamentName ?> </td> 
                        <td><?= $Tview-> console ?> </td>
                        <td><?= $Tview-> no_of_players ?> </td> 
                        <td><?= $Tview-> prize ?> </td> 
                        <td><?= $Tview-> gName ?> </td>
                        <td><?= $Tview-> sponsorName ?> </td>
                        <td><?= $Tview-> venue_name ?> </td>
                        <td><?= $Tview-> venue_location ?> </td>
                        <td><?= $Tview-> venue_date ?> </td>
                        <td><?= $Tview-> venue_time ?> </td>

                    </tr><?php endforeach ?>

                </tbody>

            </table>
</main>

<?php
require "footer.php";
?>

МодельTournament.php

class Tournament {
   // private $gameId; 
    private $tournamentName;
    private $console;
    private $no_of_players;
    private $prize;



    /* magic getter and setter */

    function __get($name) 
    {
        return $this->$name;
    }

    function __set ($name, $value)
    {
        $this->$name = $value;
    }



}

Модель Game.php

class Game {
   // private $gameId; 
    private $gName;
    private $rating;
    private $genre;
    private $price;
    private $date;


    /* magic getter and setter */

    function __get($name) 
    {
        return $this->$name;
    }

    function __set ($name, $value)
    {
        $this->$name = $value;
    }  
}

Модель Venue.php

class Venue {
   // private $id; 
    private $venue_name;
    private $venue_location;
    private $venue_time;
    private $venue_date;
    private $venue_seats;



    /* magic getter and setter */

    function __get($name) 
    {
        return $this->$name;
    }

    function __set ($name, $value)
    {
        $this->$name = $value;
    }
}

Модель Sponsor.php

class Sponsor 
{
    private $sponsorName;
    private $sponsorWsite;       
    private $sponsorType;
    private $sponsorLength;
                function __get($name) {
        return $this->$name;
    }

    function __set($name, $value) {
        $this->$name = $value;
    }



}

1 Ответ

0 голосов
/ 11 марта 2019

Доступ к вашим полям с использованием следующего синтаксиса:

$Tview['tournamentName']

Примечание: попытка получить свойство ошибки необъекта

Происходит при попытке получить доступ к свойству объектапока нет объекта.

Типичным примером уведомления об отсутствии объекта будет

$users = json_decode('[{"name": "hakre"}]');
echo $users->name; # Notice: Trying to get property of non-object

В этом случае $users - это массив (поэтому не объект), и онне имеет никаких свойств.

Это похоже на доступ к несуществующему индексу или ключу массива (см. Примечание: неопределенный индекс ).

Этот примерсильно упростилЧаще всего такое уведомление сигнализирует о непроверенном возвращаемом значении, например, когда библиотека возвращает NULL, если объект не существует, или просто неожиданное не-объектное значение (например, в результате Xpath, структуры JSON с неожиданным форматом, XML с неожиданным форматоми т. д.), но код не проверяет такое условие.

Поскольку эти не-объекты часто обрабатываются в дальнейшем, часто возникает фатальная ошибка при вызове метода объекта для не-объекта (см.: Неустранимая ошибка: вызов функции-члена ... для необъекта ) остановка скрипта.

Это можно легко предотвратить, проверив условия ошибок и / или переменнуюсоответствует ожиданию.Вот такое уведомление с примером DOMXPath :

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$divText = $result->item(0)->nodeValue; # Notice: Trying to get property of non-object

Проблема заключается в доступе к свойству (полю) nodeValue первого элемента, пока он не был проверен, существует ли он илине в коллекции $result.Вместо этого стоит сделать код более явным, назначив переменные объектам, над которыми работает код:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$div     = $result->item(0);
$divText = "-/-";
if (is_object($div)) {
    $divText = $div->nodeValue;
}
echo $divText;

Связанные ошибки:

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