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

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. $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. ca ne marche pas non plus :/
      0
  2. 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. Enlève les quotes autour de tes noms de champs, je pense que ça vient de là, exemple : 'type_pdt' => type_pdt
      0
    2. 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. Oui, tout à fait !
      0
    4. ca ne change rien alors
      0
    5. Est-ce que ta variable $_POST est une chaîne de caractères qui correspond exactement à une donnée en base ?
      0
  3. 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