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)
    0
    1. Modérateur
      Montre ton code modifié
      0
  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!
    0
    1. Modérateur
      Y'a pas de modifs...
      Où as tu utilisé la gestion des erreurs pdo ?
      0
  3. La gestion des erreurs pdo se trouve ligne 92 et 93
    0
    1. Bonjour,

      $req = execute(...

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


      Xavier
      0
      1. Bonjour, merci pour la correction, j'essaye et je te dis
        0
        1. Même en changeant -> pour =, ça ne fonctionne pas. J'ai des erreurs ligne 51 et 85
          0
        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.
          0
      2. 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
        0
        1. Modérateur
          Montre ton code corrigé que l'on puisse voir où ça pêche
          0
        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.
          0