Bonjour,
Je me sers de ce tutoriel pour récupérer la manière de faire des catégories pour les articles. Tout ce passe bien jusqu'à environ 11min.
J'ai bien les noms des différentes catégories qui s'affichent sous le titre de chaque article . Cependant, pour récupérer toutes les catégories et les afficher, j'ai une belle erreur
"Notice: Undefined variable: pdo in G:\Virtualhosts\Manide\www\app\database.php on line 28"
L'erreur ne vient pas du fichier database mais de ce code qui se trouve sur blog.php:
<?php foreach(\NetFun\table\categorie::all() as $categories): ?>
L'appel de all() se fait vers la page table.php.
<?php
namespace NetFun\table;
use NetFun\App;
class Table{
protected static $table;
public static function all(){
return App::getDb() -> query("SELECT * FROM ".static::$table."", __CLASS__);
}
Quelqu'un aurait une idée? je bute dessus depuis 2h....
Merci d'avance.
Ah...désolé.
Je mets les pages concernées : (édit)
Le problème venait de la classe table.
Class Table (avant correction)
<?php
namespace NetFun\table;
use NetFun\App;
class Table{
protected static $table;
public static function all();
return App::getDb()->query("SELECT * FROM ".self::$table."", __CLASS__);
}
?>
Class Table (après correction)
<?php
namespace NetFun\table;
use NetFun\App;
class Table{
public static function all(){
return App::getDb()->query('SELECT *FROM categories', __CLASS__);
}
?>
Le double quote et ".self::$table." étaient les responsables
Merci pour les aides.
Bonne journée!
Salut essayer cette fonction
<?php
private function getPDO(){
if($this->pdo==null){
$pdo = new PDO('mysql:dbname=********;host=******', '********','*******');
$this->pdo = $pdo;
$this->pdo->exec("SET CHARACTER SET utf8");
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return $this->pdo;
}
Bonjour Tarik,
Merci pour ton aide. Cependant cela ne fonctionne pas, j'ai deux erreurs :
( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1' in G:\Virtualhosts\Manide\www\app\database.php on line 34
( ! ) PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 in G:\Virtualhosts\Manide\www\app\database.php on line 34
Je vais continuer a chercher et si quelqu'un à une illumination, je suis preneur XD.
Ben la il te dit que tu as une erreur de syntax MySql a la ligne 34 de database.php. Elle correspond a quoi cette ligne?
Salut Defy,
A ça :
public function query($statement, $class_name){
l.34 $req = $this->getPDO()->query($statement);
$datas = $req->fetchAll(PDO::FETCH_CLASS, $class_name);
return $datas;
}
J'ai modifié la l.34 comme suit :
$req = $this->pdo->getPDO()->query($statement);
Et maintenant j'ai cette erreur :
Fatal error: Call to a member function getPDO() on a non-object in G:\Virtualhosts\Manide\www\app\database.php on line 34
Et du coup je n'ai plus rien du tout (même les articles ont disparu)