Notice: Trying to access array offset on value of type bool in

Résolu
Bonjour,

Avec la nouvelle version de php mon application de séminaire en ligne rencontre des erreurs.

Notice: Trying to access array offset on value of type bool in /home/apache/wseminaire/www/model/ModelAdmin.php on line 23

Notice: Trying to access array offset on value of type bool in /home/apache/wseminaire/www/model/ModelAdmin.php on line 29

Notice: Trying to access array offset on value of type bool in /home/apache/wseminaire/www/model/ModelAdmin.php on line 30

<?php
include_once('src/db/connect.php');
class Admin {

    private $connect;

    public function __construct(){
// Récupération de la connexion à la bdd
            $cnt = new connect;
            $this->connect = $cnt->setConnection();
        }

    public function calendar(){
// Récupération des données événement pour le calendrier
        $req = $this->connect->query('SELECT id, name_ev, date_ev FROM event ORDER BY ID');
        return $req;
    }

    public function nextEv(){
// Récupération des données du prochain événement
       $req = $this->connect->query('SELECT id, name_ev, date_ev FROM event WHERE date_ev > CURRENT_DATE ORDER BY date_ev ASC LIMIT 1');
       $data = $req->fetch();
       $id = $data['id'];
       $req2 = $this->connect->prepare("SELECT COUNT(id) as nbr_participant FROM participant WHERE id_event = :id AND particip = 'oui'");
       $req2->bindParam(':id', $id, PDO::PARAM_INT);
       $req2->execute();
       $data2 = $req2->fetch();
       $particip = $data2['nbr_participant'];
       $nextEv = $data['name_ev'];
       $dateEv = $data['date_ev'];

       $res = ['dateEv' => $dateEv, 'nextEv' => $nextEv, 'particip' => $particip];
       return $res;
    
   
    }


Pouvez-vous m'aider ?
Je vous en remercie par avance

6 réponses

  1. Bonjour,

    A la ligne 22, la méthode fetch() retourne à priori la valeur FALSE (booléen) : l'exécution de la requête doit déclencher une erreur sql (penser à activer l'affichage des erreurs sql).
    La ligne suivante retourne donc une erreur puisqu'on essaye d'accéder à un élément d'un tableau alors que le tableau est un booléen ($data['id']).
    Même chose pour les autres messages d'erreurs.

    Commence par activer et traiter les éventuelles erreurs sql pour comprendre d'où vient le problème avec la requête :
    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    Bonne journée,
    1. C'est pas possible de me faire un code je n'y arrive pas merci
    2. @david76-21Il serait mieux de montrer ce que tu as essayé pour t'aider à progresser.

      L'activation de l'affichage des erreurs se fait au moment de la connexion au serveur sql mais nous n'avons pas accès à ce code.
      Quel est le code de la classe Connect ? (masquer les infos confidentielles comme le mot de passe si il est indiqué)