Menu

Problème php [Résolu/Fermé]

Nils0 330 Messages postés vendredi 12 février 2016Date d'inscription 21 octobre 2017 Dernière intervention - 7 févr. 2017 à 22:01 - Dernière réponse : Nils0 330 Messages postés vendredi 12 février 2016Date d'inscription 21 octobre 2017 Dernière intervention
- 11 févr. 2017 à 23:05
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
Afficher la suite 

9 réponses

jordane45 20537 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 17 avril 2018 Dernière intervention - 8 févr. 2017 à 00:16
0
Utile
8
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 : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Ensuite, pour ce qui est du undefined... regarde ici : http://www.commentcamarche.net/faq/1391-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....
jordane45 20537 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 17 avril 2018 Dernière intervention > Nils0 330 Messages postés vendredi 12 février 2016Date d'inscription 21 octobre 2017 Dernière intervention - 8 févr. 2017 à 12:22
Tu as "tout" corrigé ?
Montre ton code modifié ......
Nils0 330 Messages postés vendredi 12 février 2016Date d'inscription 21 octobre 2017 Dernière intervention - 8 févr. 2017 à 13:46
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
yg_be 5205 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 17 avril 2018 Dernière intervention > Nils0 330 Messages postés vendredi 12 février 2016Date d'inscription 21 octobre 2017 Dernière intervention - 11 févr. 2017 à 19:32
bonsoir, moi je ferais:
$sql = $bdd->prepare('SELECT pseudo FROM membres WHERE id = ?');
$sql->execute(array($m['id_expediteur']));
$p_exp = $sql->fetch();
Nils0 330 Messages postés vendredi 12 février 2016Date d'inscription 21 octobre 2017 Dernière intervention - 8 févr. 2017 à 13:47
Je tiens juste a te remercier pour le nombre de fois que tu m'as aidé ...
Désolé pour le retard, je suis en pleine révision du brevet blanc
Nils0 330 Messages postés vendredi 12 février 2016Date d'inscription 21 octobre 2017 Dernière intervention - 11 févr. 2017 à 23:05
Problème résolu, j'ai refais le code et il n'y a plus d'erreur