PHP

Messagerie interne

Résolu

Bonjour,


Je suis en train de suivre d'un tutoriel de Messagerie pour afficher le message avec la requête de SQL que j'ai fait sur phpmyadmin.


Lorsque j'ai copié et coller la requête dans mon code et sur le navigateur j'obtiens messages des erreurs dans la page messagerie.php :


Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':id OR id_receveur = :id) AND statut = 2' at line 3 in C:\xampp\htdocs\EDUTECH\connexionDB.php on line 28


Fatal error: Uncaught Error: Call to undefined method connexionDB::prepare() in C:\xampp\htdocs\EDUTECH\messagerie.php:17 Stack trace: #0 {main} thrown in C:\xampp\htdocs\EDUTECH\messagerie.php on line 17


Voici le code source du fichier messagerie.php


<?php
    session_start();

    include('connexionDB.php');
 
    if(!isset($_SESSION['id'])){
        header('Location: profil.php');
        exit;
    }

     // On récupère les informations de l'utilisateur connecté
    $req = $DB->query("SELECT COUNT(id) AS nb_amis
        FROM relation
        WHERE (id_demandeur = :id OR id_receveur = :id) AND statut = 2");
    $req->execute(array('id' => $_SESSION['id']));

    $req = $DB->prepare("SELECT u.prenom, u.nom, u.id, m.message, m.date_message, m.id_from, m.lu
        FROM(
            SELECT IF(r.id_demandeur = :id, r.id_receveur, r.id_demandeur)id_user, MAX(m.id) max_id
            FROM relation r
            LEFT JOIN messagerie m ON ((m.id_from, m.id_to) = (r.id_demandeur, r.id_receveur) OR (m.id_from, m.id_to) = (r.id_receveur, r.id_demandeur))
            WHERE (r.id_demandeur = :id OR r.id_receveur = :id) AND r.statut = 2
            GROUP BY IF(m.id_from = :id, m.id_to, m.id_from),r.id)AS DM
        LEFT JOIN messagerie m ON m.id = DM.max_id
        LEFT JOIN user u ON u.id = DM.id_user
        ORDER BY m.date_message DESC");
    $req->execute(array('id' => $_SESSION['id']));

    $nb_conversation = $req->fetch();

    //echo $nb_conversation("$nb_amis");

    $afficher_conversations = $req->fetchAll();
       

    // On récupère les informations de l'utilisateur connecté
    $afficher_profil = $DB->query("SELECT *
        FROM user
        WHERE id = ?",
        array($_SESSION['id']));
    $afficher_profil = $afficher_profil->fetch();
 
?>
<!DOCTYPE html>
<html>
<head>
    <title>Messagerie</title>
    <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" type="text/css" href="css/styles.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
</head>
<body style="background-color: #edeef0;">
      <div id="content-wrapper" class="d-flex flex-column">
            <div class="container">
                <div class="row">
                    <div class="col-sm-12">
                        <table>
                            <?php
                                foreach ($afficher_conversations as $ac){
                            ?>
                            <tr>
                                <td>Prenom</td>
                                <td>Lu</td>
                                <td>Message</td>
                                <td>Date message</td>
                            </tr>
                                
                            <?php
                                }
                            ?>
                        </table>
                    </div>
                </div>
            </div>
    </div>
</body>
</html>


La cause de cette erreur je pense qu'il y a une erreur dans le fichier connexionDB.php dans la ligne 28, mais je ne vois pas dans cette ligne de code une erreur.


Voici le code source du fichier connexionDB.php :


<?php
  // Déclaration d'une nouvelle classe
  class connexionDB {
    private $host    = 'localhost';  
    private $name    = 'site';    
    private $user    = 'root';       
    private $pass    = '';       
    private $connexion;
    
    function __construct($host = null, $name = null, $user = null, $pass = null){
      if($host != null){
        $this->host = $host;           
        $this->name = $name;           
        $this->user = $user;          
        $this->pass = $pass;
      }
      try{
        $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
          $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8',
          PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
      }catch (PDOException $e){
        echo 'Erreur : Impossible de se connecter  à la BDD !';
        die();
      }
    }
    public function query($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
      return $req;
    }
    
    public function insert($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
    }
  }
  // Faire une connexion à votre fonction
  $DB = new connexionDB();
   
?>



Merci d'avance pour vos réponses.

976 vues
28 février 2021 à 17:32 (Édité)
Cette pub permet au site de vivre ...

16 commentaires

Re @Flomir


J'ai essayé de corriger cette erreur avec cette ligne code de la requête


 $afficher_profil = $DB->prepare("SELECT *
        FROM user
        WHERE id = ?");
$afficher_profil->execute(array($_SESSION['id']))
$afficher_profil = $afficher_profil->fetch();


Mais ça ne fonctionne pas


Je réfléchis et j'ai compris d'où vient le problème de cette erreur, c'est à cause du code de fichier enseignant-2.php, car je me suis connecté à la profil d'utilisateur avec la requête query.


Donc j'ai modifié et j'ai remplacé le code de fichier enseignant-2.php :

<?php
    session_start();
    $msg = "";

    include("connexionDB.php");

    if(isset($_SESSION['id'])){
        header('Location: user.php');
        exit;
    }

    if(!empty($_POST)){
        extract($_POST);
        $valid = true;
        if(isset($_POST['connexion'])){
            require'connect.php';
            
            $mail = $_POST['mail'];
            $mdp = $_POST['mdp'];

            $sql = $con->query("SELECT * FROM user WHERE mail = '$mail'");
            if($sql->num_rows > 0){
                $data = $sql->fetch_array();
                if(password_verify($mdp, $data['mdp'])){
                    $prenom = $data['prenom'];
                    $_SESSION['prenom'] = $prenom;
                    $id = $data['id'];
                    $_SESSION['id'] = $id;
                    $avatar = $data['avatar'];
                    $_SESSION['avatar'] = $avatar;
                    header('Location: user.php');
                }else{
                    $msg = "Le mail ou le mot de passe est incorrecte";
                }
            }
            if(empty($mdp)){ // Vérification qu'il y est bien un mail de renseigné
                $valid = false;
                $er_mdp = "Il faut mettre un mot de passe";
            }
     
            if(empty($mail)){ // Vérification qu'il y est bien un mot de passe de renseigné
                $valid = false;
                $er_mail = "Il faut mettre un mail";
            }
        }
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title>Connexion</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="css/styles.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <nav class="navbar navbar-expand-lg navbar-light fixed-top nav-green">
        
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav mr-auto">
                <div class="dropdown">
                    <button class="buttons-15 dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Espace membres
                    </button>
                    <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
                        <a class="dropdown-item" href="registration.php">Inscription</a>
                        <a class="dropdown-item" href="enseignant-2.php">Connexion</a>
                    </div>
                </div>
                
            </ul>
            <div class="nav-title">
                <a href="accueil.php">
                    <img class="image2" src="Images/logo.png">
                </a>
            </div>
          
        </div>
    </nav>
    <div id="content">
        <div class="container" style="margin-top: 55px;">
            <div class="row justify-content-md-center">
                <div class="col-sm-12 col-md-8 col-lg-6">
                    <div class="border">
                        
                        <div class="title">
                            <h4 class="under-title">SE CONNECTER</h4>
                        </div>
                        <form method="post">
                            <?php
                                if (isset($er_mail)){
                            ?>
                                <div class="er-message2"><?= $er_mail ?></div>
                            <?php   
                                }
                            ?>
                            <!--label for="mail1">Adresse mail</label>-->
                            <div class="form-group">
                                <input type="email" class="form-control"  id="mail1" placeholder="Adresse mail" name="mail" value="">
                            </div>
                            
                              <?php
                                if (isset($er_mdp)){
                            ?>
                                <div class="er-message2"><?= $er_mdp ?></div>
                            <?php   
                                }
                            ?>
                            <!--label for="mdp1">Mot de passe</label>-->
                            <div class="form-group">
                                <input type="password" class="form-control" id="mdp1" placeholder="Mot de passe" name="mdp" value="">
                            </div>

                            <div class="text">
                                <a class="under-link" href="#">Mot de passe oublié ?</a>
                            </div>
                            
                            
                            <button type="submit" class="btn-2"  name="connexion">Connexion</button>
                        

                            
                            <div class="er-message"><?php if ($msg != "") echo $msg . "<br><br>"; ?></div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <footer>
        <div class="under-footer">
            <p><a class="link-2" href="inscription.php">©</a></p>
            <p class="paragraph-10">Copyright 2021</a></p>
        </div>
    </footer>
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
</body>
</html>


 Par :

<?php
    session_start();
    $msg = "";

    include("connexionDB.php");

    if(isset($_SESSION['id'])){
        header('Location: user.php');
        exit;
    }

    if(!empty($_POST)){
        extract($_POST);
        $valid = true;

        if(isset($_POST['connexion'])){

            $mail = (string) strtolower(trim($mail));
            $mdp = (string) strtolower(trim($mdp));
            
            if(empty($mail)){
                $valid = false;
                $er_mail = "Le mail est incorrecte";
            }else{
                $req = $DB->prepare("SELECT id
                    FROM user
                    WHERE mail = ?");
                    
                $req->execute(array($mail));
                $utilisateur = $req->fetch();
                
                if(!isset($utilisateur['id'])){
                    $valid = false;
                    $er_mail = "Le mail est incorrecte";
                }
            }

            if(empty($mdp)){
                $valid = false;
                $er_mdp = "Le mot de passe est incorrecte";
            }

            $req = $DB->prepare("SELECT id
                FROM user
                WHERE mail = ? AND mdp = ?");
                    
            $req->execute(array($mail, password_hash($mdp, PASSWORD_DEFAULT)));
            $verif_utilisateur = $req->fetch();

            if(!isset($verif_utilisateur['id'])){
                $valid = false;
                $er_mail = "Le mail est incorrecte";
            }

            if($valid){
                $req = $DB->prepare("SELECT *
                    FROM user
                    WHERE id = ?");
                    
                $req->execute(array($verif_utilisateur['id']));
                $verif_utilisateur = $req->fetch();
                
                $_SESSION['id'] = $verif_utilisateur['id'];
                $_SESSION['prenom'] = $verif_utilisateur['prenom'];
                $_SESSION['mail'] = $verif_utilisateur['mail'];
                
                header('Location: user.php');
                exit;
            }

       }
   }
?>
<!DOCTYPE html>
<html>
<head>
    <title>Connexion</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="css/styles.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <nav class="navbar navbar-expand-lg navbar-light fixed-top nav-green">
        
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav mr-auto">
                <div class="dropdown">
                    <button class="buttons-15 dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Espace membres
                    </button>
                    <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
                        <a class="dropdown-item" href="registration.php">Inscription</a>
                        <a class="dropdown-item" href="enseignant-2.php">Connexion</a>
                    </div>
                </div>
                
            </ul>
            <div class="nav-title">
                <a href="accueil.php">
                    <img class="image2" src="Images/logo.png">
                </a>
            </div>
          
        </div>
    </nav>
    <div id="content">
        <div class="container" style="margin-top: 55px;">
            <div class="row justify-content-md-center">
                <div class="col-sm-12 col-md-8 col-lg-6">
                    <div class="border">
                        
                        <div class="title">
                            <h4 class="under-title">SE CONNECTER</h4>
                        </div>
                        <form method="post">
                            <?php
                                if (isset($er_mail)){
                            ?>
                                <div class="er-message2"><?= $er_mail ?></div>
                            <?php   
                                }
                            ?>
                            <!--label for="mail1">Adresse mail</label>-->
                            <div class="form-group">
                                <input type="email" class="form-control"  id="mail1" placeholder="Adresse mail" name="mail" value="">
                            </div>
                            
                              <?php
                                if (isset($er_mdp)){
                            ?>
                                <div class="er-message2"><?= $er_mdp ?></div>
                            <?php   
                                }
                            ?>
                            <!--label for="mdp1">Mot de passe</label>-->
                            <div class="form-group">
                                <input type="password" class="form-control" id="mdp1" placeholder="Mot de passe" name="mdp" value="">
                            </div>

                            <div class="text">
                                <a class="under-link" href="#">Mot de passe oublié ?</a>
                            </div>
                            
                            
                            <button type="submit" class="btn-2"  name="connexion">Connexion</button>
                        

                            
                            <div class="er-message"><?php if ($msg != "") echo $msg . "<br><br>"; ?></div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <footer>
        <div class="under-footer">
            <p><a class="link-2" href="inscription.php">©</a></p>
            <p class="paragraph-10">Copyright 2021</a></p>
        </div>
    </footer>
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
</body>
</html>


Après la modification du code je n'arrive pas à me connecter à profil d'utilisateur puis aller dans la page messagerie.php.


Lorsque je me connecte avec l'adresse mail et mot de passe d'utilisateur il y a un message qui s'affiche que le mail est incorrecte.

L 'adresse mail et le mot de passe d'utilisateurs sont bien enregistrés dans la base de données, car lorsque j'ai créé un compte tous les données de l'utilisateur ont été bien enregistrées dans la base de données.

Re @Epeny !


Ton erreur te dis qu'il ne trouve pas d'objet de ce type, en gros que ta requête ne retourne rien..

Il faudrait exécuter ta requête dans les lignes 37 à 41 😁

$afficher_profil = $DB->prepare("SELECT *
        FROM user
        WHERE id = ?",
        array($_SESSION['id']));
$afficher_profil = $afficher_profil->fetch()


Après changement ça devrait te donner quelques chose de ce type :

$afficher_profil = $DB->prepare("SELECT *
        FROM user
        WHERE id = ?");
$afficher_profil->execute([$_SESSION['id']]);
$afficher_profil = $afficher_profil->fetch()


Re @Flomir:



J'ai remplacé :

<h5 class="text"><?= $afficher_profil['prenom'] ?> <?= $afficher_profil['nom'] ?></h5>
<p class="paragraph-5"><?= $afficher_profil['statut'] ?></p>

Par :

<h5 class="text"><?= $afficher_profil->prenom ?> <?= $afficher_profil->nom ?></h5>
<p class="paragraph-5"><?= $afficher_profil->statut ?></p>


Mais il y a encore d'autres messages des erreurs apparaissant sur le navigateur :


Notice: Trying to get property 'prenom' of non-object in C:\xampp\htdocs\EDUTECH\messagerie.php on line 80

Notice: Trying to get property 'nom' of non-object in C:\xampp\htdocs\EDUTECH\messagerie.php on line 80

Notice: Trying to get property 'statut' of non-object in C:\xampp\htdocs\EDUTECH\messagerie.php on line 81

Re @Epeny:


Remplace lignes 80-81:

 $afficher_profil['prenom']

Par:

$afficher_profil->prenom


Pareillement pour tes autres éléments 😜

Redis moi si ça fonctionne !

Bonjour @Flomir,


J'ai modifié le code connexionDB.php :


<?php
  // Déclaration d'une nouvelle classe
  class connexionDB {
    private $host    = 'localhost';  
    private $name    = 'site';    
    private $user    = 'root';       
    private $pass    = '';       
    private $connexion;
    
    function __construct($host = null, $name = null, $user = null, $pass = null){
      if($host != null){
        $this->host = $host;           
        $this->name = $name;           
        $this->user = $user;          
        $this->pass = $pass;
      }
      try{
        $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
          $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8',
          PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
      }catch (PDOException $e){
        echo 'Erreur : Impossible de se connecter  à la BDD !';
        die();
      }
    }
    public function connexion(){
      return $this->connexion;
    }
    /*public function query($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
      return $req;
    }
    
    public function insert($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
    }*/
  }
  // Faire une connexion à votre fonction
  $BDD = new connexionDB();
  $DB = $BDD->connexion();
?>


Après j'ai remplacé tous les requêtes PHP le query par des prepare :


 $req = $DB->prepare



Maintenant l'interface la page de messagerie s'affiche bien, mais cette fois-ci il y a un autre message d'erreur qui apparaît sur le navigateur :


Notice: Trying to access array offset on value of type bool in C:\xampp\htdocs\EDUTECH\messagerie.php on line 80

Notice: Trying to access array offset on value of type bool in C:\xampp\htdocs\EDUTECH\messagerie.php on line 80

Notice: Trying to access array offset on value of type bool in C:\xampp\htdocs\EDUTECH\messagerie.php on line 81


Voici le code de fichier messagerie.php


<?php
    session_start();

    include('connexionDB.php');
 
    if(!isset($_SESSION['id'])){
        header('Location: profil.php');
        exit;
    }

     // On récupère les informations de l'utilisateur connecté
    $req = $DB->prepare("SELECT COUNT(id) AS nb_amis
        FROM relation
        WHERE (id_demandeur = :id OR id_receveur = :id) AND statut = 2");
    $req->execute(array('id' => $_SESSION['id']));

    $req = $DB->prepare("SELECT u.prenom, u.nom, u.id, m.message, m.date_message, m.id_from, m.lu
        FROM(
            SELECT IF(r.id_demandeur = :id, r.id_receveur, r.id_demandeur)id_user, MAX(m.id) max_id
            FROM relation r
            LEFT JOIN messagerie m ON ((m.id_from, m.id_to) = (r.id_demandeur, r.id_receveur) OR (m.id_from, m.id_to) = (r.id_receveur, r.id_demandeur))
            WHERE (r.id_demandeur = :id OR r.id_receveur = :id) AND r.statut = 2
            GROUP BY IF(m.id_from = :id, m.id_to, m.id_from),r.id)AS DM
        LEFT JOIN messagerie m ON m.id = DM.max_id
        LEFT JOIN user u ON u.id = DM.id_user
        ORDER BY m.date_message DESC");
    $req->execute(array('id' => $_SESSION['id']));

    $nb_conversation = $req->fetch();

    //echo $nb_conversation("$nb_amis");

    $afficher_conversations = $req->fetchAll();
       

    // On récupère les informations de l'utilisateur connecté
    $afficher_profil = $DB->prepare("SELECT *
        FROM user
        WHERE id = ?",
        array($_SESSION['id']));
    $afficher_profil = $afficher_profil->fetch();
 
?>
<!DOCTYPE html>
<html>
<head>
    <title>Messagerie</title>
    <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" type="text/css" href="css/styles.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
</head>
<body style="background-color: #edeef0;">
     <div id="wrapper">
        <div class="sidebars border-right" id="sidebar-wrapper">
            <div class="list-group list-group-flush">
                <ul class="sidebar1">
                    <?php
                        if(isset($_SESSION['id'])){
                            ?>
                                <a href="user.php"><img class="image-1" src="Images_utilisees_MTS/icone.png"></a>
                                <li class="nav-item">
                                    <div class="photo">
                                        <?php
                                            if(file_exists("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']) && isset($_SESSION['avatar'])){
                                        ?>
                                            <img class="rounded-circle" src="<?= "public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']; ?>"/>
                                        <?php
                                            }else{
                                        ?>
                                            <img class="img-profile2"  src="public/avatars/defaults/photo.png"/>
                                        <?php
                                            }
                                        ?>
                                    </div>
                                    <div class="img-borders">
                                        <a href="avatars.php"><img class="img-camera" src="Images/camera.svg"></a>
                                    </div>
                                </li>
                                <h5 class="text"><?= $afficher_profil['prenom'] ?> <?= $afficher_profil['nom'] ?></h5>
                                <p class="paragraph-5"><?= $afficher_profil['statut'] ?></p>
                                <hr class="new1">
                                <!--li class="nav-item">
                                    <a class="nav-link" style="color: #FFFFFF;"><?= $afficher_profil['statut'] ?></a>
                                </li>-->
                                <li class="nav-item items-6">
                                    <img class="img-users2" src="Images/user-2.svg">
                                    <a class="nav-link links-6" style="color: #FFFFFF;"  href="modifier.php">Profil</a>
                                </li>
                               
                                <li class="nav-item items-2">
                                    <img class="img-note" src="Images/list-2.svg">
                                    <a class="nav-link links-2" style="color: #FFFFFF;"  href="liste.php">Listes des élèves</a>
                                </li>
                                <li class="nav-item items-3">
                                    <img class="img-users" src="Images/folder-2.svg">
                                    <a class="nav-link links-3" style="color: #FFFFFF;"  href="#">Documents</a>
                                </li>
                                <li class="nav-item items-8">
                                    <img class="img-users" src="Images/mail.svg">
                                    <a class="nav-link links-8" style="color: #FFFFFF;"  href="#">Messagerie</a>
                                </li>
                                <li class="nav-item items-4">
                                    <img class="img-observations" src="Images/clipboard-2.svg">
                                    <a class="nav-link links-4" style="color: #FFFFFF;"  href="#">Observations</a>
                                </li>
                                <li class="nav-item items-5">
                                    <img class="img-forum" src="Images/message-square-2.svg">
                                    <a class="nav-link links-5" style="color: #FFFFFF;"  href="forum-enseignant.php">Forum</a>
                                </li>
                                <li class="nav-item">
                                    <img class="img-calendar" src="Images/calendar-2.svg">
                                    <a class="nav-link links-1" style="color: #FFFFFF;"  href="agenda.php">Agenda</a>
                                </li>
                                <hr class="new2">
                                <li class="nav-item items-7">
                                    <a class="nav-link links-7" style="color: #FFFFFF;"  href="deconnexion-2.php">Se deconnecter</a>
                                </li>
                            <?php
                        }else{
                            /*?>
                                <li class="nav-item">
                                    <a class="nav-link" style="color: #FFFFFF;" href="inscription.php">Inscription</a>
                                </li>
                            <?php*/
                        }
                    ?>
                </ul>
            </div>
        </div>
        <div id="content-wrapper" class="d-flex flex-column">
            <div class="container">
                <div class="row">
                    <div class="col-sm-12">
                        <table>
                            <?php
                                foreach ($afficher_conversations as $ac){
                            ?>
                            <tr>
                                <td>Prenom</td>
                                <td>Lu</td>
                                <td>Message</td>
                                <td>Date message</td>
                            </tr>
                                
                            <?php
                                }
                            ?>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>


Je pense que j'obtiens ce message d'erreur à cause de cette ligne de code où j'affiche le prénom, nom et statut d'utilisateur :


<h5 class="text"><?= $afficher_profil['prenom'] ?> <?= $afficher_profil['nom'] ?></h5>
<p class="paragraph-5"><?= $afficher_profil['statut'] ?></p>



Hello @Epeny 😁!


Remplace ou modifie ton code connexionDB.php par celui-ci. Après cela tu devras remplacer de toutes tes requêtes PHP le query par des prepare.

Ex:

$req = $DB->query     

DEVIENDRA

$req = $DB->prepare


Page connexionDB.php:

<?php
//Déclaration d'une nouvelle classe
class connexionDB {
  private $host = 'localhost';
  private $name = 'site';
  private $user = 'root';
  private $pass= '';
 
 
function __construct($host = null, $name = null, $user = null, $pass = null){
  if($host != null) {
    $this->host = $host;
    $this->name = $name;
    $this->user = $user;
    $this->pass = $pass;
  } try {
    $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
    $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8MB4',
    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
  } catch (PDOException $e){
    echo 'Erreur : Impossible de se connecter à la BDD !';
    die();
}
}
 
public function connexion(){
return $this->connexion;
}
}
 
$BDD = new connexionDB;
$DB = $BDD->connexion();
?>


Déjà fait ça et on voit après !


@Flomir 😀

Cette pub permet au site de vivre ...
1
2