Signaler

Problème php [Résolu]

Posez votre question Nils0 303Messages postés vendredi 12 février 2016Date d'inscription 23 février 2017 Dernière intervention - Dernière réponse le 11 févr. 2017 à 23:05 par Nils0
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 
Utile
+0
moins plus
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 16025Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 février 2017 Dernière intervention - 8 févr. 2017 à 12:22
Tu as "tout" corrigé ?
Montre ton code modifié ......
Répondre
Nils0 303Messages postés vendredi 12 février 2016Date d'inscription 23 février 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
Répondre
yg_be 1795Messages postés lundi 9 juin 2008Date d'inscription 23 février 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();
Répondre
Nils0 303Messages postés vendredi 12 février 2016Date d'inscription 23 février 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
Répondre
Nils0 303Messages postés vendredi 12 février 2016Date d'inscription 23 février 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
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !