Bonjour,
j'ai une erreur du style Notice: Undefined variable: connexion in C:\wamp64\www\POO_php_grafikart\Blog\environnement\BDD.php on line 35 et Fatal error: Call to a member function query() on null in C:\wamp64\www\POO_php_grafikart\Blog\environnement\BDD.php on line 40
alors que ma requête dans mon getCategorie ma l'air bonne et ma boucle foreach aussi donc je ne comprend pas voila le code :
Categories.php
merci pour vos futurs
home.php
<ul>
<?php
foreach(\Environnement\Table\Categories::getCategorie() as $categories)
{
?>
<li><a href="<?= $categories->url; ?>"> <?= $categories->nom; ?> </a></li>
<?php
}
?>
</ul>
et
Categories.php
<?php
namespace Environnement\Table;
use Environnement\Environnement;
class Categories
{
private static $tables = 'categories';
public static function getCategorie()
{
return Environnement::getDb()->requete('
select *
from ' . self::$tables .'
', __CLASS__);
}
}
?>
résoudre mon problème sur ce petit problème
Undefined variable: connexion in C:\wamp64\www\POO_php_grafikart\Blog\environnement\BDD.php on line 35
Fatal error: Call to a member function query() on null in C:\wamp64\www\POO_php_grafikart\Blog\environnement\BDD.php on line 40
Bonjour.
Tu retournes une variable, alors que tu es censé retourner la valeur de la propriété.
Il te faut donc remplacer return $connexion;
par return $this->pdo;
.
Bonjour,
Le problème semble venir du fichier BDD.php où il ne trouve pas la variable "connexion".
Peux-t-on voir ce fichier ?
BDD.php
<?php
namespace Environnement;
use \PDO;
class BDD
{
private $db_name, $db_host, $db_pass, $db_user, $pdo;
public function __construct($db_name, $db_host = 'localhost', $db_user = 'root', $db_pass = '') //constructeur pur intialiser
{
$this->db_name = $db_name;
$this->db_host = $db_host;
$this->db_user = $db_user;
$this->db_pass = $db_pass;
}
public function getPDO() //connexion bdd
{
if($this->pdo === null) //si il n'y a pas de connexion
{
$connexion = new PDO('mysql:dbname=test_poo;host=localhost', 'root', ''); //connexion bdd
$connexion ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //gestion d'erreur
$this->pdo = $connexion;
}
return $connexion;
}
public function requete($etat, $nom_classe) //methode pour la requete SQL
{
$resultats = $this->getPDO()->query($etat); //requête
$donnees = $resultats->fetchAll(PDO::FETCH_CLASS, $nom_classe); //éxécution résultats
return $donnees;
}
public function prepare($etat, $attribut, $nom_classe, $unarticle = false)
{
$resultats = $this->getPDO()->prepare($etat); //requête
$resultats->execute($attribut);
$resultats->setFetchMode(PDO::FETCH_CLASS, $nom_classe); //setFetchMode : définit le fetch utilisé
if($unarticle)
{
$donnees = $resultats->fetch(); //un resultat
}
else
{
$donnees = $resultats->fetchAll(); //les resultats
}
return $donnees;
}
}
?>