Cette erreur me j'arrive pas trouver une solution

Résolu
hagualshaikh Messages postés 21 Statut Membre -  
hagualshaikh Messages postés 21 Statut Membre -
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>

4 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, as-tu essayé
    print_r($_GET);
    ?
    0
    1. hagualshaikh Messages postés 21 Statut Membre
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > hagualshaikh Messages postés 21 Statut Membre
         
        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
  2. hagualshaikh Messages postés 21 Statut Membre
     
    <!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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ce n'est pas le code source html de la page. dans chrome, faire control-U.
      0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  4. hagualshaikh Messages postés 21 Statut Membre
     
    merci j'ai executer le code qui vous ma corrige mais c'a me doner :
    Aucun Billet selectionné !Array ( )
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
    2. hagualshaikh Messages postés 21 Statut Membre
       
      http://localhost/php/commentaire.php
      ca le ligne
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > hagualshaikh Messages postés 21 Statut Membre
         
        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
    3. hagualshaikh Messages postés 21 Statut Membre
       
      http://localhost/phpmyadmin/sql.php?db=teste&table=cmmonente&pos=0
      0
    4. hagualshaikh Messages postés 21 Statut Membre
       
      meeci jai resoler le probleme
      0