2014-09-01 3 views
1

Я получаю эту досадную ошибку и еще не смог ее исправить.PHP: Класс не найден

<b>Fatal error: Class 'Console' not found in /home/serellyn/public_html/HEIM/php/nieuwbeheer/console_overview.php on line 45.</b> 

Давайте начнем с иерархии, которая выглядит следующим образом.

индекс (главная страница) console_overview (часть страницы) включают/подключить (подключение к БД) включают в себя/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, чтобы проверить, существуют ли оба файла (и они это делают). Консоль_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"; 
} 
?> 

Ошибка я получаю вызван Еогеаспом ... но я не могу узнать, что неправильный ...

Класс консоли выглядит следующим образом (я вставляю наиболее важные части, иначе код будет слишком длинным).

<?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; 
} 

} 

?> 

Так может ли кто-нибудь понять, в чем проблема? Благодарим вас за помощь.

Редактировать: O и да, я знаю, что MySQL устарел и изменит его, если проблема с поиском консоли не установлена ​​=).

+1

Вы не можете включить файл с яваскрипт и ожидать его чтобы понять, что происходит в PHP. Это два отдельных вызова PHP. Каждый раз, когда вы получаете сайт PHP с сайта (если вы не используете 'require' * внутри * PHP), он создает * новый * запрос к серверу. Вам нужно включить файлы PHP в загружаемые javascript файлы PHP. – h2ooooooo

+0

Боковое примечание: используемые вами функции mysql_ * 'становятся устаревшими и будут удалены из будущих версий PHP. Вы не должны использовать их для написания нового кода. Вместо этого используйте mysqli_ * или PDO. –

+0

Я понял это, и да, Джеральд, спасибо за предупреждение. Я знаю это и нахожусь в моем списке;) – Serellyn

ответ

4

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"; 
} 
?> 
+0

А, хорошо, спасибо! Еще одна вещь, теперь я получаю следующую ошибку: mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, boolean. Это от $ result = mysql_query ($ sql); \t \t $ theResults = array(); \t \t в то время как ($ строка = mysql_fetch_array ($ результат)) { \t \t \t $ theResults [] = новый консоли ($ строки [0], $ строка [1], $ строка [2], $ строка [3] , $ строки [4], $ строки [5], $ строки [6], $ строки [7], $ строки [8], $ строка [9], $ строка [10]); \t \t} Любая идея, почему? – Serellyn

+0

'echo mysql_error();' ваш друг. На этот вопрос снова и снова был дан ответ. –