Je reçois cette erreur ennuyante et je n'ai pas encore réussi à la réparer.PHP: Classe non trouvée
<b>Fatal error: Class 'Console' not found in /home/serellyn/public_html/HEIM/php/nieuwbeheer/console_overview.php on line 45.</b>
Commençons d'abord par la hiérarchie qui est comme ceci.
index (page principale) de console_overview (section de la page) include/connecter (se connecter à DB) comprennent/console.class (la classe)
Le index.php exige la connect.php et la console.class.php et charge le fichier console_overview.php. Voici le code:
<?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>
J'ai utilisé var_dumps pour vérifier si les deux fichiers existent (et ils le font). Le fichier console_overview.php se charge correctement. Maintenant, dans le console_overview.php je suis en train d'obtenir des données de la classe Console, comme suit:
<?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";
}
?>
L'erreur que je reçois est causée par le foreach ... mais je ne peux pas savoir ce qui est mauvais ...
La classe console ressemble à ceci (je colle les parties les plus importantes, sinon le code serait trop long).
<?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;
}
}
?>
Alors, peut-on voir quel est le problème? Nous vous remercions de votre aide. Edit: O et oui, je sais que MySQL est obsolète et changera cela chaque fois que le problème de ne pas trouver la console est résolu =).
Vous ne pouvez pas inclure un fichier avec le javascript et attendre pour comprendre ce qui se passe en PHP. Ce sont deux appels PHP séparés. Chaque fois que vous obtenez un site PHP sur un site web (sauf si vous utilisez 'require' * dans PHP), il crée une nouvelle requête vers le serveur. Vous devez inclure les fichiers PHP dans les fichiers PHP chargés en JavaScript. – h2ooooooo
Note: Les fonctions 'mysql_ *' que vous utilisez deviennent obsolètes et seront supprimées des futures versions de PHP. Vous ne devriez pas les utiliser pour écrire du nouveau code. Utilisez 'mysqli_ *' ou PDO à la place. –
Je l'ai maintenant, et oui Gerald, merci pour l'avertissement. Je sais ceci et est sur ma liste à faire;) – Serellyn