Erreur dans mon code

Résolu
Bonjour, je viens vers vous car j'ai une erreur dans mon code php mais je n'arrive pas à la corriger!
Voici l'extrait de mon code où l'erreur se présente

<?php

    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=reza;charset=utf8', 'root', ''); // Connexion à la base de données
    }

    catch(Exception $e)
    {

        die('Erreur : '.$e->getMessage());
    }

// Récupération de la poésie

        $req = $bdd->prepare('SELECT id, theme, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM poesie WHERE id = ?');

        $req->execute(array($_GET['poesie']));

        $donnees = $req->fetch();
 $req->closeCursor();
 ?>

<div class="news">

    <h3>

        Commentaires sur le razal n° <?php echo $donnees['id']; ?> sur <?php htmlspecialchars($donnees['theme']); ?>

        <em>le <?php echo $donnees['date_creation_fr']; ?></em> >!-- affiche seulement le html! -->

    </h3>

    

    <p><?php echo nl2br(htmlspecialchars($donnees['contenu'])); ?></p> <!-- n'affiche rien -->

    

</div>


<?php
// Récupération des commentaires

$req = $bdd->prepare('SELECT auteur, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaire_fr FROM commentaires WHERE id_poesie = ? ORDER BY date_commentaire');

$req->execute(array($_GET['poesie']));


while ($donnees = $req->fetch())

{

?>

<p><strong><?php echo htmlspecialchars($donnees['auteur']); ?></strong> le <?php echo $donnees['date_commentaire_fr']; ?></p>

<p><?php echo nl2br(htmlspecialchars($donnees['commentaire'])); ?></p>

<?php

} // Fin de la boucle des commentaires

    if(isset($_POST['submit']))
    {
        // traite tes valeurs POST
        $auteur = strip_tags($_POST['auteur']);
        $commentaire = strip_tags($_POST['commentaire']);
        // Vérification de tes champs
         
        // Si valide..
        $req = $bdd->prepare('INSERT INTO commentaires(id_poesie, auteur, commentaire, date_commentaire) VALUES (:id_poesie,:auteur,:commentaire,NOW())');
        $req = execute(array(
            ':id_poesie'=>$_GET['id'], // Numéroro à récupérer dans l'url
            ':auteur'=>$auteur, 
            ':commentaire'=>$commentaire
        )); // n'écrit rien, ni sur la page, ni dans la base
        
        $req->closeCursor();
    }
?><br />

<h1>Laisser un commentaire ?</h1>
  
<form method="post" action="comments.php?poesie=<?php echo $_GET['poesie'] ?>">
    <p><label for="auteur">Nom : </label><input type="text" name="auteur" /></p>
    <p><label for="commentaire">Commentaires : </label><textarea name="commentaire" /></textarea></p>
    <p><input type="submit" name="submit" value="Envoyer" /></p>
</form>


J'ai pour erreur un " calll underfine function execute() line 107"

Merci de votre aide

Les forumeurs ne sont pas des devins, en tout cas, moi non!
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

8 réponses

  1. Bonjour, même avec les erreurs pdo activé, ça ne donne rien de plus (et je ne sais pas si je m'en suis bien servi, je débute)
    1. Modérateur
      Montre ton code modifié
  2. Voici mon code

    <?php error_reporting(E_ALL); ?>
    <!DOCTYPE html>
    
    <html>
    
        <head>
    
            <meta charset="utf-8" />
    
            <title>Commenter</title>
    
        <link href="style.css" rel="stylesheet" /> 
    
        </head>        
    
        <body>
            <header>
        <p>
            <div id="logo">Logo papillon+bougie</div>
        </p>
    
          <h1>L'Apothéose</h1>
    
            <p><a href="ghazal.php" rel="nofollow" target="_blank">Retour à la liste des poésies</a></p>
    
        
    </header>
    <section>
        
        <?php include("include\liens.php"); ?>
    
    <article>
    
    <?php
    error_reporting(E_ALL);
        try
        {
            $bdd = new PDO('mysql:host=localhost;dbname=reza;charset=utf8', 'root', ''); // Connexion à la base de données
        }
    
        catch(Exception $e)
        {
    
            die('Erreur : '.$e->getMessage());
        }
    
    // Récupération de la poésie
    
            $req = $bdd->prepare('SELECT id, theme, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y\') AS date_creation_fr FROM poesie WHERE id = ?');
    
            $req->execute(array($_GET['poesie']));
    
    
            $donnees = $req->fetch();
     $req->closeCursor();
     ?>
    
    <div class="news">
    
        <h3>
    
            Commentaires sur le razal n° <?php echo $donnees['id']; ?> sur <?php htmlspecialchars($donnees['theme']); ?>
    
            <em>le <?php echo $donnees['date_creation_fr']; ?></em> <!-- affiche seulement le html! -->
    
        </h3>
    
        
    
        <p><?php echo nl2br(htmlspecialchars($donnees['contenu'])); ?></p> <!-- n'affiche rien -->
    
        
    
    </div>
    
    
    <?php
    // Récupération des commentaires
    
    $req = $bdd->prepare('SELECT auteur, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaire_fr FROM commentaires WHERE id_poesie = ? ORDER BY date_commentaire');
    
     $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    
    $req->execute(array($_GET['poesie']));
    
    
    while ($donnees = $req->fetch())
    
    {
    
    ?>
    
    <p><strong><?php echo htmlspecialchars($donnees['auteur']); ?></strong> le <?php echo $donnees['date_commentaire_fr']; ?></p>
    
    <p><?php echo nl2br(htmlspecialchars($donnees['commentaire'])); ?></p>
    
    <?php
    
    } // Fin de la boucle des commentaires
    
        if(isset($_POST['submit']))
        {
            // traite tes valeurs POST
            $auteur = strip_tags($_POST['auteur']);
            $commentaire = strip_tags($_POST['commentaire']);
            // Vérification de tes champs
             
            // Si valide..
            $req = $bdd->prepare('INSERT INTO commentaires(id_poesie, auteur, commentaire, date_commentaire) VALUES (:id_poesie,:auteur,:commentaire,NOW())');
            $req = execute(array(
                ':id_poesie'=>$_GET['id'], // Numéro à récupérer dans l'url
                ':auteur'=>$auteur, 
                ':commentaire'=>$commentaire
            )); // n'écrit rien, ni sur la page, ni dans la base
            
            $req->closeCursor();
        }
    ?><br />
    
    <h1>Laisser un commentaire ?</h1>
      
    <form method="post" action="comments.php?poesie=<?php echo $_GET['poesie'] ?>">
        <p><label for="auteur">Nom : </label><input type="text" name="auteur" /></p>
        <p><label for="commentaire">Commentaires : </label><textarea name="commentaire" /></textarea></p>
        <p><input type="submit" name="submit" value="Envoyer" /></p>
    </form>


    En fait, l'article sera affiché avec les commentaires et en fin, il y a un formulaire pour en laisser mais il n'apparait pas!

    Les forumeurs ne sont pas des devins, en tout cas, moi non!
    1. Modérateur
      Y'a pas de modifs...
      Où as tu utilisé la gestion des erreurs pdo ?
  3. Bonjour,

    $req = execute(...

    devrait être
    $req->execute(...


    Xavier
    1. Bonjour, merci pour la correction, j'essaye et je te dis
      1. Même en changeant -> pour =, ça ne fonctionne pas. J'ai des erreurs ligne 51 et 85
      2. OK, donc « " calll underfine function execute() line 107" » est bien corrigé ?
        Il faut nous donner les autres messages d'erreur (et nous dire à quelle ligne ça correspond...) pour pouvoir aider.
    2. Bonjour, pardon pour le retard de ma réponse. J'ai plus d'erreur ligne 107, c'est seulement 51 et 85 avec undefine index poesie pour les deux. J'ai en plus undefine index poesie line 103call stark #TimeMemoryFunctionLocation 10.0730141056 {main}
    3. J'ai traité les erreurs, j'en ai plus. C'est juste pour les requêtes, ça ne fonctionne pas! Impossible de laisser un commentaire (pas d'insertion dans la base) et pas de lecture
      1. Modérateur
        Montre ton code corrigé que l'on puisse voir où ça pêche
      2. Je me répond moi-même. J'ai mal appliqué la correction des erreurs PDO. Je me suis finalement aidé de ce cours avec un exemple de l'utilisation car je l'avais mis au mauvais endroit.