Cette erreur me j'arrive pas trouver une solution

Résolu/Fermé
hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019 - Modifié le 17 sept. 2018 à 18:18
hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019 - 18 sept. 2018 à 20:28
Notice: Undefined index: billet in C:\xampp\htdocs\php\commentaire.php on line 26
le
Commentaires

Notice: Undefined index: billet in C:\xampp\htdocs\php\commentaire.php on line 50
###### ci-join mon code de "commentaire.php
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Mon blog</title>
 <link href="osama/style.css" rel="stylesheet" /> 
    </head>
        
    <body>
        <h1>Mon super blog !</h1>
        <p><a href="iddexs.php">Retour à la liste des billets</a></p>
 
<?php
// Connexion à la base de données
try
{
 $bdd = new PDO('mysql:host=localhost;dbname=teste;charset=utf8', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

// Récupération du billet
$req = $bdd->prepare('SELECT id, titres, countenu, DATE_FORMAT(date_creations, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creations_fr FROM billet WHERE id = ?');
$req->execute(array($_GET['billet']));
$donnees = $req->fetch();
?>

<div class="news">
    <h3>
        <?php echo htmlspecialchars($donnees['titres']); ?>
        <em>le <?php echo $donnees['date_creations_fr']; ?></em>
    </h3>
    
    <p>
    <?php
    echo nl2br(htmlspecialchars($donnees['countenu']));
    ?>
    </p>
</div>

<h2>Commentaires</h2>

<?php
$req->closeCursor(); // Important : on libère le curseur pour la prochaine requête

// Récupération des commentaires
$req = $bdd->prepare('SELECT auteurs, commentaires, DATE_FORMAT(date_commentaires, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaires_fr FROM cmmonente WHERE id_billets = ? ORDER BY date_commentaires');
$req->execute(array($_GET['billet']));

while ($donnees = $req->fetch())
{
?>
<p><strong><?php echo htmlspecialchars($donnees['auteurs']); ?></strong> le <?php echo $donnees['date_commentaires_fr']; ?></p>
<p><?php echo nl2br(htmlspecialchars($donnees['commentaires'])); ?></p>
<?php
} // Fin de la boucle des commentaires
$req->closeCursor();
?>
</body>
</html>


##############
et voi-ci mon code de "iddexs.php
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Mon blog</title>
 <link href="osama/style.css" rel="stylesheet" /> 
    </head>
        
    <body>
        <h1>Mon super blog !</h1>
        <p>Derniers billets du blog :</p>
 
<?php
// Connexion à la base de données
try
{
 $bdd = new PDO('mysql:host=localhost;dbname=teste;charset=utf8', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

// On récupère les 5 derniers billets
$req = $bdd->query('SELECT id, titres, countenu, DATE_FORMAT(date_creations, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creations_fr FROM billet ORDER BY date_creations DESC LIMIT 0, 5');
<code html>
while ($donnees = $req->fetch())
{
?>
<div class="news">
    <h3>
        <?php echo htmlspecialchars($donnees['titres']); ?>
        <em>le <?php echo $donnees['date_creations_fr']; ?></em>
    </h3>
    
    <p>
    <?php
    // On affiche le contenu du billet
    echo nl2br(htmlspecialchars($donnees['countenu']));
    ?>
    <br />
    <em><a href="commentaire.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
    </p>
</div>
<?php
} // Fin de la boucle des billets
$req->closeCursor();
?>
</body>
</html>
A voir également:

4 réponses

yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mars 2025 Ambassadeur 1 570
17 sept. 2018 à 18:22
bonjour, as-tu essayé
print_r($_GET);
?
0
hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019
17 sept. 2018 à 19:09
oui je le essayer mais les erreures sont laNotice: Undefined index: billet in C:\xampp\htdocs\php\commentaire.php on line 26
Array ( )
le
Commentaires

Notice: Undefined index: billet in C:\xampp\htdocs\php\commentaire.php on line 51
0
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mars 2025 1 570 > hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019
17 sept. 2018 à 19:13
comme tu remarques, tu n'as pas de variable $_GET.
analysons maintenant pourquoi: peux-tu partager le code source html de la page qui est affichée par iddexs.php ?
0
hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019
Modifié le 17 sept. 2018 à 20:09
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Mon blog</title>
 <link href="osama\style.css" rel="stylesheet" /> 
    </head>
        
    <body>
        <h1>Mon super blog !</h1>
        <p>Derniers billets du blog :</p>
 
<?php
// Connexion à la base de données
try
{
 $bdd = new PDO('mysql:host=localhost;dbname=teste;charset=utf8', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

// On récupère les 5 derniers billets
$req = $bdd->query('SELECT id, titres, countenu, DATE_FORMAT(date_creations, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creations_fr FROM billet ORDER BY date_creations DESC LIMIT 0, 5');

while ($donnees = $req->fetch())
{
?>
<div class="news">
    <h3>
        <?php echo htmlspecialchars($donnees['titres']); ?>
        <em>le <?php echo $donnees['date_creations_fr']; ?></em>
    </h3>
    
    <p>
    <?php
    // On affiche le contenu du billet
    echo nl2br(htmlspecialchars($donnees['countenu']));
    ?>
    <br />
    <em><a href="commentaire.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
    </p>
</div>
<?php
} // Fin de la boucle des billets
$req->closeCursor();
?>
</body>
</html>
######### ca toute mon cod de " iddexs.php"


EDIT : Ajout des balises de code
0
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mars 2025 1 570
17 sept. 2018 à 20:31
ce n'est pas le code source html de la page. dans chrome, faire control-U.
0
jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 mars 2025 4 741
17 sept. 2018 à 20:26
Bonjour,

Ta question concernant le PHP et non la base de données... j'ai déplacé ta discussion dans le bon forum.

Ensuite, en ce qui concerne ton souci.. cela vient du fait que ta variable GET n'existe pas lorsque tu affiches ta page.
Je t'invite à lire ceci :
https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index

De plus, vu que tu codes en PDO, je te conseille vivement d'appliquer ce qui est marqué là :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

puis.. d'une manière plus générale.. à t'inspirer fortement de ce qui est préconisé ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code


Et enfin.. ton code revu et corrigé :
<?php
/**
* Fichier commentaire.php
*/

//affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


// Connexion à la base de données (une seule suffit ! )
try{
$bdd =new PDO('mysql:host=localhost;dbname=teste; charset=utf8', 'root', '');
// Activation des erreurs PDO
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}


//recupération PROPRE des variables AVANT de les utiliser
$billet = !empty($_GET['billet'])? $_GET['billet'] : NULL;


// Récupération du billet
if($billet){
  $sql = 'SELECT id
              , titres
              , countenu
              , DATE_FORMAT(date_creations, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creations_fr 
          FROM billet 
          WHERE id = ?';
  $datas = array($billet);

  //Execution de la requete
  try{
    $req = $bdd -> prepare($sql) ;
    $req->execute($datas) ;
    $donnees = $req->fetch();
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
     echo " Les datas : " ;
     print_r($datas);
  }   
  $req->closeCursor(); // Important : on libère le curseur pour la prochaine requête
  
        // Récupération des commentaires
  
  $sql = 'SELECT auteurs, commentaires, DATE_FORMAT(date_commentaires, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaires_fr 
          FROM cmmonente 
          WHERE id_billets = ? 
          ORDER BY date_commentaires';
  $datas = array($billet);
  //Execution de la requete
  try{
    $req = $bdd -> prepare($sql) ;
    $req->execute($datas) ;
    $commentaires = $req->fetchAll(); // on stocke le resultat dans un array
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
     echo " Les datas : " ;
     print_r($datas);
  }   
  $req->closeCursor(); // Important : on libère le curseur pour la prochaine requête
  
}else{
   echo  "Aucun Billet selectionné !";
   //le temps des tests :
   print_r($_GET);


   exit();
}

?>
<!DOCTYPE html>
<html>
    <head>
      <meta charset="utf-8" />
      <title>Mon blog</title>
      <link href="osama/style.css" rel="stylesheet" /> 
    </head>
    <body>
      <h1>Mon super blog !</h1>
      <p><a href="iddexs.php">Retour à la liste des billets</a></p>
      <div class="news">
        <h3>
          <?php echo htmlspecialchars($donnees['titres']); ?>
          <em>le <?php echo $donnees['date_creations_fr']; ?></em>
        </h3>  
        <p>
        <?php
          echo nl2br(htmlspecialchars($donnees['countenu']));
        ?>
        </p>
      </div>
      <h2>Commentaires</h2>
      <?php
      if(!empty($commentaires)){
        foreach($commentaires as $donnees ){
          echo '<p><strong>'. htmlspecialchars($donnees['auteurs']).'</strong> le '.$donnees['date_commentaires_fr'].'</p>
          <p>'.nl2br(htmlspecialchars($donnees['commentaires'])).'</p>';
        }
      }
    ?>
  </body>
</html>

0
hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019
18 sept. 2018 à 19:13
merci j'ai executer le code qui vous ma corrige mais c'a me doner :
Aucun Billet selectionné !Array ( )
0
jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 mars 2025 4 741
18 sept. 2018 à 19:33
Cela signifie que ton lien ne contient aucune variable GET.
Pourrais tu nous donner l'URL qui apparait dans la barre de navigation de ton navigateur ?
Je pense que soit tu n'a pas la variable 'billet' .. soit elle est vide ....
Si elle est vide.. c'est que ton code qui est sensé générer le lien ne fonctionne pas non plus.
Inspire toi du code que je t'ai donné pour le réécrire...
0
hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019
18 sept. 2018 à 20:07
http://localhost/php/commentaire.php
ca le ligne
0
jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 mars 2025 4 741 > hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019
18 sept. 2018 à 20:08
Donc c'est normal qu'il t'affiche ce message....
Tu y accèdes comment à cette page ? Tu passes bien par ton lien
<em><a href="commentaire.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>

???
Car sinon.. ça ne risque pas de marcher...
0
hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019
18 sept. 2018 à 20:08
http://localhost/phpmyadmin/sql.php?db=teste&table=cmmonente&pos=0
0
hagualshaikh Messages postés 21 Date d'inscription lundi 17 septembre 2018 Statut Membre Dernière intervention 2 février 2019
18 sept. 2018 à 20:28
meeci jai resoler le probleme
0