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.
A voir également:

3 réponses

Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   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
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
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   145
 
Enlève les quotes autour de tes noms de champs, je pense que ça vient de là, exemple : 'type_pdt' => type_pdt
0
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
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   145
 
Oui, tout à fait !
0
val
 
ca ne change rien alors
0
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   145
 
Est-ce que ta variable $_POST est une chaîne de caractères qui correspond exactement à une donnée en base ?
0
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   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
val
 
ca ne marche pas non plus :/
0