Problème php

Résolu/Fermé
Utilisateur anonyme - 7 févr. 2017 à 22:01
 Utilisateur anonyme - 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
A voir également:

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
8 févr. 2017 à 00:16
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 8/02/2017 à 00:18
C'est marrant... il me semble que je radote....
Regarde ta précédente question ....https://forums.commentcamarche.net/forum/affich-34226035-probleme-pour-transformer-un-code-en-pdo#1
0
Utilisateur anonyme
8 févr. 2017 à 11:42
Ouais c'est vrai ...
0
Utilisateur anonyme
8 févr. 2017 à 12:00
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Utilisateur anonyme
8 févr. 2017 à 12:22
Tu as "tout" corrigé ?
Montre ton code modifié ......
0
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