Probleme avec un script php pdo

Résolu
Physiol Messages postés 89 Statut Membre -  
Physiol Messages postés 89 Statut Membre -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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 ...
    
    

    0
    1. Physiol Messages postés 89 Statut Membre 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
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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 ";
    

    0
    1. Physiol Messages postés 89 Statut Membre 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
      0
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    0
    1. Physiol Messages postés 89 Statut Membre 1
       
      Merci beaucoup j'en été sacrement loin
      je vais décortiquer ça pour mieux comprendre.
      merci beaucoup jordane
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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
      0
    3. Physiol Messages postés 89 Statut Membre 1
       
      oui ah il manque un ; a la ligne 12 c'est pour ceux que le code interesse
      0