PHP Mysql : probleme de filtrage des données.
val
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
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();
?>
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:
- PHP Mysql : probleme de filtrage des données.
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert - Forum PHP
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
1 réponse
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'])); .........