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

Fermé
tabibi - Modifié le 12 avril 2022 à 11:45
jordane45 Messages postés 38041 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 février 2024 - 25 avril 2022 à 01:43
Bonjour,

J'essaye d'afficher des données de ma bdd en php mais j'ai ce message d'erreur "Notice: Trying to access array offset on value of type bool"
pourtant la requête est bonne (je l'ai tester dans ma bdd)
je n'arrive pas à comprendre d'où vient l'erreur.
Pouvez-vous m'aider je ne suis que novice en développement

voici le code
 <?php session_start();

header('Access-Control-Allow-Origin: *');
header('Content-Type: text/html; charset=utf-8');
require_once ('../Controller/dbController.php');

//$sql = "SELECT batiment, nomPorte FROM portes";
//$query = mysql_query($sql) or die (mysql_error());

$dbcontroller = new DBController();
$stmt = mysqli_prepare($dbcontroller->getConn(), "SELECT  batiment, nomPorte FROM portes");
$data = $dbcontroller->executeQueryMSQL($stmt);
$dbcontroller->closeConnMSQL();


?>

<table width="50%" cellpadding="5" cellspace="5">
    <tr>
        <td>Batiments</td>
        <td>Portes</td>
    </tr>
<?php while ($data){ ?>
    <tr>
    <td><?php $data['batiment'] ?></td>  (c'est ici que ça bloque)
    <td><?php $data['batiment'] ?></td>
    </tr>
<?php } ?>

</table>

EDIT : Ajout des balises de code !

Configuration: Windows / Chrome 100.0.4896.75

2 réponses

jordane45 Messages postés 38041 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 février 2024 4 622
12 avril 2022 à 11:49
Bonjour,

Ton code semble étrange.
Tu as à la fois un controller (dont on ne sait rien..) et en même temps tu essaies de faire du "pur" mysqli ...

Et puis.. ton message d'erreur doit contenir le numéro de la ligne concernée...
il serait bien de nous la donner.

Bref, donnes nous le numéro de ligne et partages nous le code de ton controller.

NB: Pour poster ton code sur le forum, tu dois utiliser les balises de code.
Explications ( à lire ENTIEREMENT !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

0
voici le code du controller :

class DBController {
    private $conn;

    //Le constructeur renvoie une instance de la base de données qui sert à lancer les requêtes.
    function __construct(){
        $connection = $this->connectDBMSQL();
        if (!empty($connection)) {
            $this->conn = $connection;
        } else {
            echo("Connexion impossible à la base de données MYSQL");
        }
    }

    function connectDBMSQL(){
        include '../Connection/SqlConn.php';
        $connection = mysqli_connect($hostMSQL, $loginMSQL, $passwordMSQL, $databaseMSQL);
        return $connection;
    }
	
    function getConn(){
        return $this->conn;
    }

    function executeQueryMSQL($stmt) {
        return $stmt->execute();
    }

    function executeSelectQueryMSQL($stmt) {
        $stmt->execute();
        $meta = $stmt->result_metadata();
        while ($field = $meta->fetch_field()) {
            $params[] = &$row[$field->name];
        }
        call_user_func_array(array($stmt, 'bind_result'), $params);
        while ($stmt->fetch()) {
            foreach ($row as $key => $val) {
                $c[$key] = $val;
            }
            $resultset[] = $c;
        }
        $this->freeStatementMSQL($meta);
        if (!empty($resultset)) {
            return $resultset;
        } else {
            return null;
        }
    }

    function closeConnMSQL(){
        mysqli_close($this->conn);
    }

    function freeStatementMSQL($query) {
        mysqli_free_result($query);
    }
}


ensuite ça indique que le problème se trouve ligne 26, 27
0
class DBController {
    private $conn;

    //Le constructeur renvoie une instance de la base de données qui sert à lancer les requêtes.
    function __construct(){
        $connection = $this->connectDBMSQL();
        if (!empty($connection)) {
            $this->conn = $connection;
        } else {
            echo("Connexion impossible à la base de données MYSQL");
        }
    }

    function connectDBMSQL(){
        include '../Connection/SqlConn.php';
        $connection = mysqli_connect($hostMSQL, $loginMSQL, $passwordMSQL, $databaseMSQL);
        return $connection;
    }
	
    function getConn(){
        return $this->conn;
    }

    function executeQueryMSQL($stmt) {
        return $stmt->execute();
    }

    function executeSelectQueryMSQL($stmt) {
        $stmt->execute();
        $meta = $stmt->result_metadata();
        while ($field = $meta->fetch_field()) {
            $params[] = &$row[$field->name];
        }
        call_user_func_array(array($stmt, 'bind_result'), $params);
        while ($stmt->fetch()) {
            foreach ($row as $key => $val) {
                $c[$key] = $val;
            }
            $resultset[] = $c;
        }
        $this->freeStatementMSQL($meta);
        if (!empty($resultset)) {
            return $resultset;
        } else {
            return null;
        }
    }

    function closeConnMSQL(){
        mysqli_close($this->conn);
    }

    function freeStatementMSQL($query) {
        mysqli_free_result($query);
    }
}


cst le code du controller
et les lignes indiqué par l'erreur sont ligne ligne 26 et 27
0