Page 1 sur 1

Supprimer les doublons dans l'affichage d'une combo box

Posté : 11 oct. 2007, 22:52
par Kaoteknik
Bonjour à tous,

J'ai actuellement un problème à résoudre et malgré de nombreuses recherches je n'ai pas trouvé de réponses probantes (sans doute ai-je du utiliser de mauvais mots-clé lors de mes recherches).

Bien, pour exposer mon propos, considérons la table "table_metiers" suivante :

Code : Tout sélectionner

metier | nom | prenom _____________________________________________ informaticien | Gates | Bill militaire | Rambo | John serveuse | Connor | Sarah informaticien | Campbell | Johanna animateur | Mouse | Mickey animateur | Cromwell | George
Le but est d'afficher dans une combo box la liste des métiers existants. On remarquera que certaines personnes exercent le même métier, il est donc inutile de les citer à plusieurs reprise. Et c'est là qu'intervient mon problème : pas moyen de supprimer les doublons dans ma combo box.

Voici mon code actuellement :
<?php

$requete = ("SELECT metier FROM table_metiers ORDER BY metier ASC");
$resultat = mysql_query ($requete) or die (mysql_error());

// Je vous épargne tout le code superflu pour l'exemple.
// Reste donc le code qui génère les différents éléments de la combo box...

while ($selection = mysql_fetch_array($resultat)) {
		echo '<option value="'.$selection['metier'].'" ';

		if ($_POST['metier'] == $selection['metier']) {
			echo 'selected="selected"';
		}
		else {
			echo '';
		}
			
		echo	'>'.$selection['metier'].'</option>';
	}
?>
En l'état la combo box affiche bien tous les métiers existants, mais ils apparaissent autant de fois qu'il y a d'occurences dans la BDD. Comment éviter ça ?

Merci, et à très bientôt ! :)

Posté : 11 oct. 2007, 22:59
par Tracker
Salut,

Tu peux remplacer ton ordre par:

Code : Tout sélectionner

SELECT distinct metier FROM table_metiers ORDER BY metier ASC
ou

Code : Tout sélectionner

SELECT metier FROM table_metiers group by metier ORDER BY metier ASC
c'est toi qui vois...

Posté : 11 oct. 2007, 23:06
par Kaoteknik
Aussitôt dit, aussitôt fait !

J'ai ajouté la commande "distinct" comme tu me l'as suggéré et ça fonctionne parfaitement...

Merci beaucoup. :)