Probleme avec un script php pdo

Résolu
Bonjour,
Voilà c'est mon script et je rencontre des difficultés je n'ai aucun resultat
<html>
<body>
<?php
if (isset($_POST['Numolice'])){
$Numolice = $_POST['Numolice'];

    try
{
 $bdd = new PDO('mysql:host=localhost;dbname=x2012;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

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

$reponse = $bdd-> prepare('SELECT Numpolice,Commentaire FROM ezod Like :Numolice ORDER BY id DESC '); 
$donnees = $reponse->fetch();

      echo $donnees['Numpolice']; 
      echo $donnees['Commentaire'];
        
  

$reponse->closeCursor(); // Termine le traitement de la requête
}
?>      
</body>
</html>


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

3 réponses

  1. Modérateur
    Bonjour,

    Entre le prepare... et le fetch ... il te manque le EXECUTE... et l'array de parametres....

    $sql = "SELECT Numpolice,Commentaire
               FROM ezod Like :Numolice
                ORDER BY id DESC ";
    
    $params = array(":Numolice"=> $Numolice );
    
    $reponse = $bdd-> prepare($sql); 
    $reponse->execute($params);
    $donnees = $reponse->fetch();
    
    


    ... au passage ... n'écrit pas le code de connexion directement dans ton script ... mais place le dans un fichier à part que tu n'auras qu'à inclure dans tes pages....
    //Fichier cnxBDD.php
    <?php
    try{
       $bdd = new PDO('mysql:host=localhost;dbname=x2012;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    
    }catch(Exception $e){
            die('Erreur : '.$e->getMessage());
    }
    ?>
    

    et dans ton code.. pour l'inclure ..
    <?php 
    require_once('cnxBDD.php');
    ?>
    <html>
    <body>
    <?php
    if (isset($_POST['Numolice'])){
    $Numolice = $_POST['Numolice'];
    
    // le reste de ton code ...
    
    

    1. Merci beaucoup. Je vais largement transformer le code. Mais je voulais resoudre ce probleme avec php.
      j'ai toutefois ce message d'erreur je ne vois pas à quelle erreur mysql il peut correspondre

      Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Like '0001'' at line 2' in C:\wamp\www\search\zebra.php on line 23
  2. Modérateur
    Vu que c'est une recherche exacte que tu veux faire .. n'utilises pas LIKE .. mais (=) EGALE
    De plus... il manque un WHERE dans ta requête....

    $sql = "SELECT Numpolice,Commentaire
               FROM ezod 
               WHERE Numpolice=:Numolice
                ORDER BY id DESC ";
    

    1. Merci jordan Maintenant j'espere juste que tu ne m'en voudras pas de poser la question à la base je souhaiterais afficher tout les resultats correspondant à une meme police.

      Une police peut avoir plusieurs commentaires
  3. Modérateur
    A la place d'un fetch .. tu peux utiliser un fecthall ...
    ce qui stockera le résultat dans un ARRAY....
    Ensuite.. tu n'auras plus qu'à boucler dessus à l'aide d'un foreach par exemple.

    $sql = "SELECT Numpolice,Commentaire
               FROM ezod 
               WHERE Numpolice=:Numolice
                ORDER BY id DESC ";
    $params = array(":Numolice"=> $Numolice );
    
    $reponse = $bdd-> prepare($sql); 
    $reponse->execute($params);
    $donnees = $reponse->fetchall();
    
    // Affichage des resultats dans un tableau
    echo "<table>";
    echo "<thead><tr><th> Num. </th><th>Commentaire</th></tr></thead>";
    echo "<tbody>";
    foreach($donnees  as $R){
       echo "<tr>";
        echo "<td>".$R['Numpolice']."</td>"; 
        echo "<td>".$R['Commentaire']."</td>"; 
      echo "</tr>";
    
    }
    
    echo "</tbody></table>";
    


    EDIT : Correction requete
    EDIT2 : Correction ; manquant ligne 12
    1. Merci beaucoup j'en été sacrement loin
      je vais décortiquer ça pour mieux comprendre.
      merci beaucoup jordane
    2. Modérateur
      Si la question est résolue..
      Merci de ne pas oublier de clôturer le sujet
      (en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

      Cordialement,
      Jordane
    3. oui ah il manque un ; a la ligne 12 c'est pour ceux que le code interesse