Lister éléments d'une BDD
a70m
Messages postés
2763
Date d'inscription
Statut
Contributeur
Dernière intervention
-
a70m Messages postés 2763 Date d'inscription Statut Contributeur Dernière intervention -
a70m Messages postés 2763 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai dans une base de données, 400 entrées contenants chacune plusieurs paramètres. (Couleur, année, etc ...)
J'aimerai développer une fonction de recherche par critères, et pour celà, il me faut lister les éléments unique de la base. je ne sais si c'est très clair, je donne donc un exemple :
*****************
* Couleur * Année *
*****************
* Rouge * 2010 *
* Bleu * 2009 *
* Jaune * 2009 *
* Vert * 2008 *
* Rouge * 2009 *
* Bleu * 2007 *
* Bleu * 2009 *
* Bleu * 2010 *
* Jaune * 2009 *
* Jaune * 2008 *
* Rouge * 2007 *
* Bleu * 2010 *
* Vert * 2009 *
*****************
J'aimerai par exemple avoir un menu déroulant avec Rouge-Vert-Jaune-Bleu et un autre avec 2007-2008-2009-2010 comme options
Mais je n'aimerai pas le rentrer manuellement de manière à ce que si j'entre une nouvelle année ou une nouvelle couleur dans ma BDD, elle soit automatiquement ajoutée à mon menu.
J'ai essayé avec cette requête mais ça ne fonctionne pas :/
Merci d'avance
a70m
J'ai dans une base de données, 400 entrées contenants chacune plusieurs paramètres. (Couleur, année, etc ...)
J'aimerai développer une fonction de recherche par critères, et pour celà, il me faut lister les éléments unique de la base. je ne sais si c'est très clair, je donne donc un exemple :
*****************
* Couleur * Année *
*****************
* Rouge * 2010 *
* Bleu * 2009 *
* Jaune * 2009 *
* Vert * 2008 *
* Rouge * 2009 *
* Bleu * 2007 *
* Bleu * 2009 *
* Bleu * 2010 *
* Jaune * 2009 *
* Jaune * 2008 *
* Rouge * 2007 *
* Bleu * 2010 *
* Vert * 2009 *
*****************
J'aimerai par exemple avoir un menu déroulant avec Rouge-Vert-Jaune-Bleu et un autre avec 2007-2008-2009-2010 comme options
Mais je n'aimerai pas le rentrer manuellement de manière à ce que si j'entre une nouvelle année ou une nouvelle couleur dans ma BDD, elle soit automatiquement ajoutée à mon menu.
J'ai essayé avec cette requête mais ça ne fonctionne pas :/
mysql_query("SELECT * FROM table WHERE couleur IN (SELECT couleur FROM table GROUP BY couleur HAVING COUNT(*) > 1) ORDER BY couleur")
Merci d'avance
a70m
A voir également:
- Lister éléments d'une BDD
- Photoshop elements gratuit - Télécharger - Retouche d'image
- Créer une liste déroulante excel - Guide
- Lister les disques cmd - Guide
- Copier plusieurs éléments - Guide
- Pdf elements gratuit - Télécharger - PDF
23 réponses
désolé mais votre probleme n'est pas claire, est ce que vout voulez faire deux menus déroulants (combobox) l'un contenant la couleur et l'autre l'année?
Oui oui
Supposons que la 2ème colonne de mon tableau n'existe pas. Donc on ne considère que la 1ere des couleurs
Donc dans ma table j'ai plusieurs fois du VERT, plusieurs fois du BLEU, du JAUNE et du ROUGE
Je n'arrive pas à faire la requête qui me permet de lister les couleurs qui existe dans ma table ...
J'espère que j'ai plus éclaircir mon problème.
Merci de t'y intéresser
Supposons que la 2ème colonne de mon tableau n'existe pas. Donc on ne considère que la 1ere des couleurs
Donc dans ma table j'ai plusieurs fois du VERT, plusieurs fois du BLEU, du JAUNE et du ROUGE
Je n'arrive pas à faire la requête qui me permet de lister les couleurs qui existe dans ma table ...
J'espère que j'ai plus éclaircir mon problème.
Merci de t'y intéresser
Bonjour
très bêtement ...
SELECT couleur FROM matable GROUP BY couleur ORDER BY couleur
et la même chose pour les années, bien sûr
très bêtement ...
SELECT couleur FROM matable GROUP BY couleur ORDER BY couleur
et la même chose pour les années, bien sûr
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dsl une autre fois, si j'ai bien compris on suppose que t'as une table :
col1-col2-col3
tu et tu veux afficher ta table selon la colonne 2 ( par exple celle des couleurs) c ca??
col1-col2-col3
tu et tu veux afficher ta table selon la colonne 2 ( par exple celle des couleurs) c ca??
Non
Ca doit être moi qui m'exprime mal.
J'ai dans ma table un champ 'couleur' où chaque couleur apparait plusieurs fois. Dans le sens où j'ai plusieurs entrées qui sont rouges, plusieurs qui sont bleus, etc. ...
Et moi, j'aimerai en fait lister les différentes couleurs qui sont présentes dans ma table, sans afficher le reste, ni combien de rouges ou de bleues sont entrées dans ma table.
Merci à toi
Ca doit être moi qui m'exprime mal.
J'ai dans ma table un champ 'couleur' où chaque couleur apparait plusieurs fois. Dans le sens où j'ai plusieurs entrées qui sont rouges, plusieurs qui sont bleus, etc. ...
Et moi, j'aimerai en fait lister les différentes couleurs qui sont présentes dans ma table, sans afficher le reste, ni combien de rouges ou de bleues sont entrées dans ma table.
Merci à toi
je pense c'est comme l'a dit "le pere" si tu vx seulement afficher la colonne des couleurs dans un ordre alors tu fé la requete qui vient de tle donner : select couleur from table order by couleur group by couleur
Je n'avais pas vu la réponse de le père.
C'est exactement ça ! Je ne connaissais pas la "fonction" GROUP BY
Merci à toi le père et aussi à black3000 pour tous les cheveux que tu t'es arraché en essayant de comprendre mon problème :o) !
Cordialement
a70m
C'est exactement ça ! Je ne connaissais pas la "fonction" GROUP BY
Merci à toi le père et aussi à black3000 pour tous les cheveux que tu t'es arraché en essayant de comprendre mon problème :o) !
Cordialement
a70m
Je reviens encore vers vous pour une question simple :
J'ai donc fait mon mini-moteur de recherche en utilisant la requête de le père pour année et couleur, et j'aimerai maintenant afficher les entrées de ma base qui satisferont mes conditions ...
Exemple : Si je veux toutes entrées de 2008 de couleur rouge.
Seulement, je ne veux pas être obligé de remplir les 2 champs. SI je veux toutes les entrés de 2007 par exemples.
J'ai donc fait ma requête de la manière suivante :
Mais si un champ n'est pas rempli, SQL ne comprend pas un LIKE %% avec rien entre les %
Je n'arrive pas à trouver la requête qui me permet de séléctionner les entrées d'un ou plus champs, sans avoir à forcément remplir les autres.
J'espère être assez clair.
Cordialement
J'ai donc fait mon mini-moteur de recherche en utilisant la requête de le père pour année et couleur, et j'aimerai maintenant afficher les entrées de ma base qui satisferont mes conditions ...
Exemple : Si je veux toutes entrées de 2008 de couleur rouge.
Seulement, je ne veux pas être obligé de remplir les 2 champs. SI je veux toutes les entrés de 2007 par exemples.
J'ai donc fait ma requête de la manière suivante :
$reponse = mysql_query("SELECT * FROM vins WHERE anneeLIKE %$annee% OR couleur LIKE %$couleur% ORDER BY id") or die(mysql_error());
Mais si un champ n'est pas rempli, SQL ne comprend pas un LIKE %% avec rien entre les %
Je n'arrive pas à trouver la requête qui me permet de séléctionner les entrées d'un ou plus champs, sans avoir à forcément remplir les autres.
J'espère être assez clair.
Cordialement
C'est ça, seulement, étant donné que le résultat (rouge et 2009) proviennent d'un formulaire, je voudrais faire en sorte que TOUS les champs NE soient PAS obligatoire.
C'est à dire que si je renseigne juste la couleur Rouge, j'aimerai qu'il me liste toutes les entrées de couleurs rouges. Idem pour l'année. Mais que si je remplis les 2, ça marche aussi.
Je crois que j'ai des problèmes pour m'exprimer :(
C'est à dire que si je renseigne juste la couleur Rouge, j'aimerai qu'il me liste toutes les entrées de couleurs rouges. Idem pour l'année. Mais que si je remplis les 2, ça marche aussi.
Je crois que j'ai des problèmes pour m'exprimer :(
Je vais essayer de détailler au mieux :)
Je souhaite faire un moteur de recherche pour 'filtrer' mes données.
J'ai donc mon formulaire de recherche qui est comme ceci :
Une fois que je clique sur Rechercher, je veux afficher les entrées de ma table correspondant à mes critères de recherches.
Seulement je ne veux pas obliger à renseigner tous les champs pour rechercher une ou plusieurs entrées. Ce qui fait qu'à l'envoie de la recherche, des champs seront peut être vides. C'est donc la requête qui me pose problème.
J'espère que ça ira cette fois. Merci de te creuser la tête pour moi encore une fois.
Je souhaite faire un moteur de recherche pour 'filtrer' mes données.
J'ai donc mon formulaire de recherche qui est comme ceci :
Couleur : [Select avec la liste des couleurs présentes dans la table] Année: [Select avec la liste des années présentes dans la table] [Rechercher]
Une fois que je clique sur Rechercher, je veux afficher les entrées de ma table correspondant à mes critères de recherches.
Seulement je ne veux pas obliger à renseigner tous les champs pour rechercher une ou plusieurs entrées. Ce qui fait qu'à l'envoie de la recherche, des champs seront peut être vides. C'est donc la requête qui me pose problème.
J'espère que ça ira cette fois. Merci de te creuser la tête pour moi encore une fois.
Bonsoir
D'abord, je fabrique deux conditions, vides si le champ correspondant est vide, ou avec LIKE et %% s'il y a quelque chose
Ensuite, s'il y a deux conditions, je mets un AND (tu avais mis OR, ça me semble bizarre, à toi de voir) entre les deux ; sinon, je les concatène simplement, comme il y en a zéro ou une il ne faut pas de AND
Ensuite, s'il y avait au moins une condition, je mets le WHERE devant
Finalement, je rajoute le ORDER BY après
D'abord, je fabrique deux conditions, vides si le champ correspondant est vide, ou avec LIKE et %% s'il y a quelque chose
Ensuite, s'il y a deux conditions, je mets un AND (tu avais mis OR, ça me semble bizarre, à toi de voir) entre les deux ; sinon, je les concatène simplement, comme il y en a zéro ou une il ne faut pas de AND
Ensuite, s'il y avait au moins une condition, je mets le WHERE devant
Finalement, je rajoute le ORDER BY après
$condition1= (empty($annee)?"":"annee LIKE '%$annee%'"; $condition2= (empty($couleur)?"":"couleur LIKE '%$couleur%'"; $condition = (!empty($condition1) && (!empty($condition2)) ? ($condition1.' AND '.$condition2) : ($condition1.$condition2); if (!empty($condition)) $condition= ' WHERE '.$condition $requete = "SELECT * FROM vins'.$condition. ' ORDER BY id'; $reponse = mysql_query($requete) or die(mysql_error());
Seulement dans mon exemple je l'ai fait avec le champs couleur et années, mais dans ma table, j'ai 7 autres champs qui entrent en jeu, je devrais donc faire $condition2, $condition3 .... $condition7 ?
si tu mets ta liste de variables et de noms de champs dans un tableau, c'est assez facile, par exemple avec 4 :
(les noms des champs et des variables pourraient être différents, mais il faut qu'il y en ait le même nombre !)
(les noms des champs et des variables pourraient être différents, mais il faut qu'il y en ait le même nombre !)
$meschamps=array('couleur','annee','poids','taille'); $mesvariables=array($couleur,$annee,$poids,$taille); $condition=''; for ($k=0; $k< count($meschamps);$k++) { if (!empty($condition)) $condition .= ' AND '; $condition .= $meschamps[$k]." LIKE '%".$mesvariables[$k]."%'"; } if (!empty($condition)) $condition= ' WHERE '.$condition; ...
Tu viens de m'enlever une épine du pied le père !!
Merci beaucoup !!
après pas mal de modifications, et d'adaptions j'obtiens ce que je veux !
Je poste la source tout de même :
Encore merci pour ton aide précieuse!
Cordialement
a70m
Merci beaucoup !!
après pas mal de modifications, et d'adaptions j'obtiens ce que je veux !
Je poste la source tout de même :
$meschamps=array('couleur', 'annee', 'note'); $mesvariables=array($Couleur, $Annee, $Note); $condition=''; for ($k=0; $k< count($meschamps);$k++) { if ($condition != NULL AND $mesvariables[$k] != NULL) $condition .= ' AND '; if ($mesvariables[$k] != NULL) $condition .= $meschamps[$k]." LIKE '%".$mesvariables[$k]."%'" ; } if ($condition != NULL) $condition= ' WHERE '.$condition; $reponse = mysql_query("SELECT * FROM table $condition") or die(mysql_error());
Encore merci pour ton aide précieuse!
Cordialement
a70m