Critères de selection dans une base de données
Fermé
SHINTYMAN
Messages postés
114
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
26 décembre 2014
-
10 mars 2014 à 13:42
SHINTYMAN Messages postés 114 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 26 décembre 2014 - 10 mars 2014 à 18:40
SHINTYMAN Messages postés 114 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 26 décembre 2014 - 10 mars 2014 à 18:40
A voir également:
- Critères de selection dans une base de données
- Formules excel de base - Guide
- La base de données de sécurité du serveur n'a pas de compte d'ordinateur pour la relation ✓ - Forum Réseau
- Désolé l'utilisation de la base de données a expiré epic games - Forum Jeux vidéo
- Tnt base de données vide - Forum TNT / Satellite / Réception
- Reinstaller windows sans perte de données - Guide
2 réponses
Utilisateur anonyme
10 mars 2014 à 17:47
10 mars 2014 à 17:47
Bonjour
J'avais pensé que l'astérisque marcherais en tant que 'toutes les entrées'
C'est bien de "penser", mais il y a encore mieux : lire le manuel.
Le caractère générique, c'est % et non pas *, et il s'utilise avec LIKE et non pas =, qui recherche une 'vraie' égalité.
Pour ton prix, il vaut mieux transformer la condition en <= très grand nombre pour qu'elle soit toujours vraie.
Enfin, histoire d'alléger un peu l'écriture, il vaut mieux, dans les cas simples comme celui-ci, utiliser l'opérateur ternaire ? : plutôt que if... else :
J'avais pensé que l'astérisque marcherais en tant que 'toutes les entrées'
C'est bien de "penser", mais il y a encore mieux : lire le manuel.
Le caractère générique, c'est % et non pas *, et il s'utilise avec LIKE et non pas =, qui recherche une 'vraie' égalité.
Pour ton prix, il vaut mieux transformer la condition en <= très grand nombre pour qu'elle soit toujours vraie.
Enfin, histoire d'alléger un peu l'écriture, il vaut mieux, dans les cas simples comme celui-ci, utiliser l'opérateur ternaire ? : plutôt que if... else :
//Pseudo $pseudo= isset($_POST['pseudo']) ? $_POST['pseudo']:'%'; //Type de produit $type= isset($_POST['type']) ? $_POST['type']:'%'; //Prix Max $prix= isset($_POST['prix_max']) ? $_POST['prix_max']:1000000000; $req = $produits->prepare('SELECT nom, prix FROM vente WHERE pseudo LIKE :pseudo AND prix <= :prix AND type LIKE :type'); $req->execute(array('pseudo' => $pseudo, 'prix' => $prix, 'type' => $type));
SHINTYMAN
Messages postés
114
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
26 décembre 2014
153
10 mars 2014 à 18:40
10 mars 2014 à 18:40
Merci beaucoup! J'ai aussi rajouté des lignes pour les champs vides et du coup, maintenant, j'ai ceci :
qui marche!
//Pseudo $pseudo= isset($_POST['pseudo']) ? $_POST['pseudo'] : '%'; $pseudo= ($pseudo == null) ? '%' : $_POST['pseudo']; //Type de produit $type= isset($_POST['type']) ? $_POST['type'] : '%'; $type= ($type == null) ? '%' : $_POST['type']; //Prix Max $prix= isset($_POST['prix_max'])? $_POST['prix_max'] : 1000000000; $prix= ($prix == null) ? 1000000000 : $_POST['prix_max'];
qui marche!