Problème d'affichage sur une requète SQL php

val -  
 val -
Bonjour,



Je voudrais afficher ma base de données sous forme de tableau, cependant en effectuant cette requête, mon site ne m'affiche que la première ligne (ref_pdt=1) et s'arrête là.

Auriez-vous une idée sur la cause du problème?

<?php

If($_POST['post_type']=='*' AND $_POST['post_categorie']=='*')
{
$reponse = $bdd->query('SELECT * FROM produit');
}

while ($donnees = $reponse->fetch())
{
?>
<tr>
<td><?php echo $donnees['ref_pdt'];?></td>
<td><?php echo $donnees['nom_pdt'];?></td>
<td><?php echo '<img height="50" width="50" src="'.$donnees['photo'].'"/>';?></td>
<td><?php echo $donnees['description'];?></td>
<td><?php echo $donnees['type_pdt'];?></td>
<td><?php echo $donnees['categorie_pdt'];?></td>
<td><?php echo $donnees['prix'];?></td>
</tr>

<?php

$reponse->closeCursor();
}

?>

Merci pour votre aide.

3 réponses

  1. Autumn`Tears Messages postés 1247 Statut Membre 145
     
    Salut,

    Je pense que le souci vient tout simplement de ton $reponse->closeCursor(); qui n'est pas placé au bon endroit. Il devrait être après la boucle !
    0
  2. val
     
    Merci beaucoup,

    C'était juste ca :)

    J'en profite pour poser une deuxième question alors :

    J'essaie de filtrer les résultats affichés en utilisant des champs POST:

    elseif($_POST['post_type']=='*')
    {
    $reponse = $bdd->prepare('SELECT * FROM produit WHERE 'categorie_pdt' = :categorie');
    $req->execute(array('categorie'=>$_POST['post_categorie']));
    }

    elseif($_POST['post_categorie']=='*')
    {
    $reponse = $bdd->prepare('SELECT * FROM produit WHERE 'type_pdt'= :type');
    $req->execute(array('type' =>$_POST['post_type']));
    }
    else
    {
    $reponse = $bdd->prepare('SELECT * FROM produit WHERE 'type_pdt' = :type AND 'categorie_pdt' = :categorie');
    $req->execute(array('type' =>$_POST['post_type'],'categorie' =>$_POST['post_categorie']));
    }

    Lorsque je m'en sert, aucun résultats ne sort

    Les champs POST proviennent d'une liste et son donc normalement conforme à ce que je dois avoir dans ma BDD
    0
    1. Autumn`Tears Messages postés 1247 Statut Membre 145
       
      Enlève les quotes autour de tes noms de champs, je pense que ça vient de là, exemple : 'type_pdt' => type_pdt
      0
    2. val
       
      arf non, c'etait un test de ma part pour voir si cela changeait quelque chose

      (on parle bien des guillemets WHERE 'type_pdt' = :type et pas des guillemets execute(array('type' =>$_POST['post_type']??)
      0
    3. Autumn`Tears Messages postés 1247 Statut Membre 145
       
      Oui, tout à fait !
      0
    4. val
       
      ca ne change rien alors
      0
    5. Autumn`Tears Messages postés 1247 Statut Membre 145
       
      Est-ce que ta variable $_POST est une chaîne de caractères qui correspond exactement à une donnée en base ?
      0
  3. maka54 Messages postés 721 Statut Membre 80
     
    $reponse = $bdd->prepare('SELECT * FROM produit WHERE 'type_pdt' = :type AND 'categorie_pdt' = :categorie');
    $reponse->execute(array(':type' =>$_POST['post_type'],':categorie' =>$_POST['post_categorie'])); 


    essaye comme çà, j'ai ajouté ":" devant type et categorie dans le array de execute

    --------------------------

    autre chose, tu peux remplacer :
    while ($donnees = $reponse->fetch())
    { 
    ...
    }


    par
    $donnees = $reponse->fetchAll();


    $donnees est un tableau des enregistrements que tu peux parcourir avec un foreach
    0
    1. val
       
      ca ne marche pas non plus :/
      0