Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je suis actuellement sur la formation PHP POO du site au chap 14: https://www.grafikart.fr/tutoriels/tp-tables-567
A environ 13mn, on doit faire une deuxieme connexion à la BDD pour afficher les catégories.
A ce moment là j'ai une erreur : Notice: Undefined variable: pdo in C:\wamp64\www\tp_blog_grafikart\app\Database.php on line 29

Je pense ( de mon avis de débutant :p ) qu'il n'arrive pas à faire 2 connexion à deux table differentes ... car si je met mon appel qui bug sans faire le 1er appel, j'ai aucun soucis ...

Pour le code je peux mettre le code sur github, car tout mettre ici serais beaucoup trop long. Apres si quelqu'un à les fichiers de ce chapitre qui fonctionne, ca me permettra de voir d'où viens mon erreur.

Désolé de pas etre tres claire, je reste disponible pour vous donnez le plus d'info possible

6 réponses


Carouge10
Réponse acceptée

Dans la functio getPDO c'est "return $this->pdo" car quand $this->pdo n'est pas null alors il cherche à retourner $pdo qui n'existe pas

Bonjour,
Il nous faudrait le code en question et à mon avis il y a un problème de portée des variables.

Eolynas
Auteur

J'aurais du poster directement le code :p
Le voici: https://github.com/Eolynas/grafikart_poo

Sinon voici les deux erreurs que j'ai:

Notice: Undefined variable: pdo in C:\wamp64\www\tp_blog_grafikart\app\Database.php on line 29
Fatal error: Call to a member function query() on null in C:\wamp64\www\tp_blog_grafikart\app\Database.php on line 33

Merci pour ton aide ;)

Eolynas
Auteur

J'ai essayé de le modifier, mais j'ai une erreur qui s'affiche et qui bloque tout:

Catchable fatal error: Object of class PDO could not be converted to string in C:\wamp64\www\tp_blog_grafikart\app\Database.php on line 29

Le truc le plus etrange est que dans mon fichier home.php j'ai ca:

<div class="row">

    <div class="col-8">
        <h1> Je suis la home page </h1>
        <?php foreach (App\Table\Article::getLast() as $post): ?>

            <h2><a href="<?= $post->url ?>"><?= $post->title ?></a></h2>
            <p><em><?= $post->category ?></em></p>
            <?= $post->extrait ?>
        <?php endforeach; ?>
    </div>

    <div class="col-4">
        <ul>
        <?php foreach (App\Table\Category::all() as $category): ?>
            <?php var_dump($category); ?>
            <li><?= $category->title ?></li>
        <?php endforeach; ?>
        </ul>
    </div>

</div>

Si je le laisse comme ca, mon affichage de mes articles fonctionne, ca bloque au niveau du 2eme foreach.
Par contre si je met:

<div class="row">

    <div class="col-4">
        <ul>
        <?php foreach (App\Table\Category::all() as $category): ?>
            <?php var_dump($category); ?>
            <li><?= $category->title ?></li>
        <?php endforeach; ?>
        </ul>
    </div>

</div>

Ca fonctionne tres bien

Eolynas
Auteur

Ohhhh, c'est bon ....
J'avais essayer plusieurs fois en mettant $this->$pdo ...
Bon bah merci encore, etre bloqué toute une journée pour ca ...
Du coup ce qui se passé c'est que la 1er fois je rentrais dans mon if, et la 2eme, vu qu'il était pas nul, il me retourné une erreur c'est ca ?

oui c'est ça