Bonjour,
Voila je rencontre un petit problème avec mon code.
Notice: Undefined variable: pdo in C:\xampp\htdocs\php_poo\Blog\app\database.php on line 29
Fatal error: Call to a member function query() on null in C:\xampp\htdocs\php_poo\Blog\app\database.php on line 34
Décrivez ici votre code ou ce que vous cherchez à faire
database.php
<?php
namespace app;
use \PDO;
class database
{
private $db_name;
private $db_user;
private $db_password;
private $db_host;
private $pdo;
public function __construct($db_name, $db_user='root', $db_password='', $db_host='localhost')
{
$this->$db_name=$db_name;
$this->db_user=$db_user;
$this->db_password=$db_password;
$this->db_host=$db_host;
}
private function getPDO()
{
if($this->pdo === null ){
$pdo = new PDO('mysql:dbname=blog;host=localhost;charset=utf8','root','');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->pdo = $pdo;
}
return $pdo;
}
public function query($statement , $class_name)
{
$req = $this->getPDO()->query($statement);
$datas = $req->fetchAll(PDO::FETCH_CLASS, $class_name);
return $datas;
}
public function prepare($statement, $attributes, $class_name, $one=false){
$req = $this->getPDO()->prepare($statement);
$req->execute($attributes);
$req->setFetchMode(PDO::FETCH_CLASS , $class_name);
if($one)
{
$datas = $req->fetch();
}else{
$datas = $req->fetchAll();
}
return $datas;
}
}
?>
categorie.php
<?php
namespace app\table;
use app\app;
class categorie
{
private static $table='categories';
public static function all()
{
return app::getDB()->query("SELECT * FROM ".self::$table." ",get_called_class());
}
}
?>
home.php
<div class="row">
<div class="col-sm-8">
<?php foreach (app\table\article::getlast() as $post): ?>
<h4>
<a href="<?= $post->url; ?>" class="media-heading">
<?= $post->titre; ?>
</a>
</h4>
<p><em><?= $post->categorie; ?></em></p>
<p> <?= $post->extrait; ?></p>
<?php endforeach; ?>
</div>
<div class="col-sm-4">
<ul>
<?php foreach (app\table\categorie::all() as $categorie): ?>
<li> <a href="<?= $categories->url; ?>"></a><?= $categorie->titre; ?></li>
<?php endforeach; ?>
</div>
</div>
c'est quioi l'erreur de ce code
si tu a un problème sur home pourquoi tu donne database.php si il fonctionne ailleur ? surtout edite ton topic en utilisant la balisse code </>
car la j'ai mal au yeux
Le problème c'est que tu dis
$this->pdo = $pdo
Mais tu ne retourne pas $this->pdo
return $this->pdo;