Я получаю эту досадную ошибку и пока не могу ее исправить.
<b>Fatal error: Class 'Console' not found in /home/serellyn/public_html/HEIM/php/nieuwbeheer/console_overview.php on line 45.</b>
Давайте сначала начнем с такой иерархии.
Index (главная страница) console_overview (раздел страницы) include / connect (подключение к БД) include / console.class (класс)
Index.php требует connect.php и console.class.php и загружает console_overview.php. Вот код:
<?php
require_once('include/connect.php');
require_once('include/console.class.php');
var_dump(file_exists('include/connect.php'));
var_dump(file_exists('include/console.class.php'));
?>
<div id="mainpage" class="main-container inner">
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = "console_overview";
}
?>
</div>
<!-- end: MAIN CONTAINER -->
<script>
var page = "<?php echo $page;?>";
$( "#mainpage" ).load( page + ".php" );
</script>
Я использовал var_dumps, чтобы проверить, существуют ли оба файла (и они есть). Console_overview.php загружается правильно. Теперь в console_overview.php я пытаюсь получить данные из класса Console следующим образом:
<?php
foreach(Console::getAllConsoles() as $aConsole) {
$consoleID= $aConsole->getID();
$consoleName = $aConsole->getName();
$consoleHostname = $aConsole->getHostname();
$consoleGameID = $aConsole->getGameID();
$consolePowerState = $aConsole->getPowerState();
echo "<tr>";
echo "1";
}
?>
Ошибка, которую я получаю, вызвана foreach ... но я не могу понять, что не так ...
Класс Console выглядит так (я вставляю наиболее важные части, иначе код получился бы слишком длинным).
<?php
class Console{
private $ID, $hostname, $mac, $ip, $roomID, $gameID, $register, $powerState, $dateUpdated;
public function Console($tID, $tHostname, $tMac, $tIp, $tRoomID, $tGameID, $tRegister, $tPowerState, $tDateUpdated) {
$this->ID = $tID;
$this->hostname = $tHostname;
$this->mac = $tMac;
$this->ip = $tIp;
$this->roomID = $tRoomID;
$this->gameID = $tGameID;
$this->register = $tRegister;
$this->powerState = $tPowerState;
$this->dateUpdated= $tDateUpdated;
}
...
public static function getAllConsoles() {
$sql = "SELECT * FROM `console` ORDER BY `hostname` ASC";
$result = mysql_query($sql);
$theResults = array();
while ($row = mysql_fetch_array($result)) {
$theResults[] = new Console($row[0],$row[1],$row[2],$row[3],$row[4],$row[5],$row[6],$row[7],$row[8],$row[9],$row[10]);
}
return $theResults;
}
}
?>
Так может кто-нибудь увидеть, в чем проблема? Спасибо за помощь.
Изменить: О, и да, я знаю, что MySQL устарел и будет менять это всякий раз, когда проблема отсутствия консоли будет исправлена =).
1 ответ
Ваш console_overview.php
не содержит необходимых файлов. Когда вы выполняете вызов AJAX с помощью JavaScript от клиента, это отдельный HTTP-запрос к серверу, поэтому вам нужно снова добавить вызов require()
туда:
<?php
require_once('include/connect.php');
require_once('include/console.class.php');
foreach(Console::getAllConsoles() as $aConsole) {
$consoleID= $aConsole->getID();
$consoleName = $aConsole->getName();
$consoleHostname = $aConsole->getHostname();
$consoleGameID = $aConsole->getGameID();
$consolePowerState = $aConsole->getPowerState();
echo "<tr>";
echo "1";
}
?>
echo mysql_error ();
- ваш друг. На этот вопрос ответили снова и снова на SO.
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
ARMARY
Inside php), он создаетMYSQL _ *
Функции, которые вы используете, становятся устаревшими и будут удалены из будущих версий PHP. Вы не должны использовать их для записи нового кода. ИспользуйтеMYSQLI _ *
или PDO вместо этого.