Problème php

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour, j'ai une erreur dans mon code php mais je n'arrive pas a trouver où ...
Voici le code :
<?php
error_reporting(E_ALL);
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=aide-systeme', 'root', '');
if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) {
   if(isset($_GET['id']) AND !empty($_GET['id'])) {
      $id_message = intval($_GET['id']);
      $msg = $bdd->prepare('SELECT * FROM messages WHERE id = ? AND id_destinataire = ?');
      $msg->execute(array($_GET['id'], $_SESSION['id']));
      $msg_nbr = $msg->rowCount();
      $m = $msg->fetch();
      $p_exp = $bdd->prepare('SELECT pseudo FROM membres WHERE id = ?');
      $p_exp->execute(array($m['id_expediteur']));
      $p_exp = $p_exp->fetch();
      $p_exp = $p_exp['pseudo'];
?>

<!DOCTYPE html>
<html>
<head>
   <title></title>
   <meta charset="utf-8" />
</head>
<body>
   <a href="reception.php" rel="nofollow noopener noreferrer" target="_blank">Boîte de réception</a>
   <a href="envoi.php?r=<?php echo $p_exp; ?>&o=<?php echo $m['objet']; ?>">Répondre</a>
   <a href="supprimer.php?id=<?php echo $m['id']; ?>">Supprimer</a><br /><br /><br />

   <h3 align="center">Lecture du message #<?php echo $id_message; ?></h3>
   <div align="center">
      <?php if($msg_nbr == 0) { 
         echo "Erreur"; 
      } else { ?>
         <b><?php echo $p_exp; ?></b> vous a envoyé: <br /><br />
         <b>Objet:</b> <?php echo $m['objet']; ?>
         <br /><br />
         <?php echo nl2br($m['message']); ?><br />
      <?php } ?>
   </div>
</body>
</html>
<?php 
      $lu = $bdd->prepare('UPDATE messages SET lu = 1 WHERE id = ?');
      $lu->execute(array($m['id']));
   }
} ?>


et voici l'erreur :
Notice: Use of undefined constant - assumed ' ' in C:\wamp\www\site\lecture.php on line 45

Merci d'avance
Nils0

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Commence par placer le code de connexion à ta BDD dans un fichier à part que tu n'auras qu'à inclure au besoin.
    Actives-y les erreurs PDO.
    Comme ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    Ensuite, pour ce qui est du undefined... regarde ici : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index

    PS : au passage ... n'utilise pas le ->rowCount(); comme indiqué dans le manuel php .. ce n'est pas fiable. Mieux vaut faire un fetchAll et un COUNT dessus....
    0
    1. Utilisateur anonyme
       
      Ouais c'est vrai ...
      0
    2. Utilisateur anonyme
       
      J'ai cherché, j'ai aussi modifié le code comme tu me l'a dit, mais je ne trouve toujours pas d'où provient l'erreur
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Utilisateur anonyme
       
      Tu as "tout" corrigé ?
      Montre ton code modifié ......
      0
    4. Utilisateur anonyme
       
      Voilà le code :
      <?php
      session_start();
      try{
         $bdd = new PDO('mysql:host=127.0.0.1;dbname=aide-systeme', 'root', '');
         $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
      } catch(PDOException $e) {
          die('Erreur : ' . $e->getMessage());
      }
      
      if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) {
         if(isset($_GET['id']) AND !empty($_GET['id'])) {
            $id_message = intval($_GET['id']);
            $msg = $bdd->prepare('SELECT * FROM messages WHERE id = ? AND id_destinataire = ?');
            $msg->execute(array($_GET['id'], $_SESSION['id']));
            $msg_nbr = count($msg);
            $m = $msg->fetch();
            $p_exp = $bdd->prepare('SELECT pseudo FROM membres WHERE id = ?');
            $p_exp->execute(array($m['id_expediteur']));
            $p_exp = $p_exp->fetch();
      ?>
      
      <!DOCTYPE html>
      <html>
      <head>
         <title></title>
         <meta charset="utf-8" />
      </head>
      <body>
         <a href="reception.php" rel="nofollow noopener noreferrer" target="_blank">Boîte de réception</a>
         <a href="envoi.php?r=<?php echo $p_exp['pseudo']; ?>&o=<?php echo $m['objet']; ?>">Répondre</a>
         <a href="supprimer.php?id=<?php echo $m['id']; ?>">Supprimer</a><br /><br /><br />
      
         <h3 align="center">Lecture du message #<?php echo $id_message; ?></h3>
         <div align="center">
            <?php if($msg_nbr == 0) { 
               echo "Erreur"; 
            } else { ?>
               <b><?php echo $p_exp['pseudo']; ?></b> vous a envoyé: <br /><br />
               <b>Objet:</b> <?php echo $m['objet']; ?>
               <br /><br />
               <?php echo nl2br($m['message']); ?><br />
            <?php } ?>
         </div>
      </body>
      </html>
      <?php 
            $lu = $bdd->prepare('UPDATE messages SET lu = 1 WHERE id = ?');
            $lu->execute(array($m['id']));
         }
      } ?>
      

      et voilà la nouvelle erreur :
      Fatal error: Cannot use object of type stdClass as array in C:\wamp\www\site\lecture.php on line 21
      0