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.
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
-
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 !
-
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 -
$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