PHP Mysql : probleme de filtrage des données.

Fermé
val - 20 mars 2012 à 21:34
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 20 mars 2012 à 22:22
Bonjour a tous,


Très chers camarades, je reviens vers vous avec un problème que je n'arrive pas à résoudre, j'essaie de filtrer les données de ma requête SQL mais cela ne fonctionne pas. :/

J'ai tout testé, les virgules les espaces... je n'arrive pas à régler ce problème.


Lorsque ce que je n'ai pas de filtre tout marche, mais dès que je fais appel à une information exterieur plus rien ne marche.

Merci pour votre aide.


//test sur les variables:

If ($_POST['post_type']==NULL){$_POST['post_type']='*';}
If ($_POST['post_categorie']==NULL){$_POST['post_categorie']='*';}

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

//Filtre 1
elseif($_POST['post_type']=='*')
{
$reponse = $bdd->prepare("SELECT * FROM produit WHERE categorie_pdt = :categorie");
$bdd->execute(array('categorie'=>$_POST['post_categorie']));
}
//filtre 2
elseif($_POST['post_categorie']=='*')
{
$reponse = $bdd->prepare("SELECT * FROM produit WHERE type_pdt= :type");
$bdd->execute(array('type' => $_POST['post_type']));
}


//filtre 1&2
else
{

$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']));


while ($donnees = $reponse->fetch())
{
?>
<tr>
<td><form method="post" action="modif_produit.php" name="id_modif" value="<?php echo $donnees['ref_pdt'];?>"><?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>
<td><input type="submit" value="modifier"/></td>
</tr>

<?php
}
$reponse->closeCursor();

?>
A voir également:

1 réponse

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 mars 2012 à 22:22
Voilà essayes comme ça, ( il y a peut être plus simple ?)

?php
//pourquoi passer par une valeur intermediaire '*' ?

//pas de filtre
if(empty($_POST['post_type']) AND empty($_POST['post_categorie']))
{
$reponse = $bdd->query('SELECT * FROM produit');
}

//Filtre 1
elseif(empty(($_POST['post_type']) AND !empty($_POST['post_categorie']))
{
$reponse = $bdd->prepare("SELECT * FROM produit WHERE categorie_pdt = :categorie");
$bdd->execute(array(':categorie'=>$_POST['post_categorie']));
}
//filtre 2
elseif(empty($_POST['post_categorie']) AND !empty($_POST['post_type']))
{
$reponse = $bdd->prepare("SELECT * FROM produit WHERE type_pdt= :type");
$bdd->execute(array(':type' => $_POST['post_type']));
}
//filtre 1&2
else
{

$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']));


.........

0