Liste déroulante avec doublon

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Liste déroulante avec doublon

Re: Liste déroulante avec doublon

par sylvaing26 » 21 sept. 2010, 12:43

Mouais, je ne sais pas trop comment sont structurées tes données dans la base, mais ça doit être assez curieux à observer.
J'arrive pas trop a cerner non plus ...

Re: Liste déroulante avec doublon

par Cyrano » 21 sept. 2010, 09:28

Mouais, je ne sais pas trop comment sont structurées tes données dans la base, mais ça doit être assez curieux à observer.

Peu importe en fait, tu peux assez facilement trier ça en supprimant les doublons en travaillant sur la base de tableaux associatifs.
Je t'explique sommairement l'algorithme et je te laisse traduire ça en code.
  1. j'initialise une variable, par exemple $activites, que je définis comme un tableau.
  2. Pour chaque ligne de données :
    1. je crée un tableau indexé en explosant la ligne sur la base du séparateur « ; » (voir fonction explode() )
    2. j'ajoute chaque élément obtenu dans mon tableau initial en utilisant chaque valeur à la fois comme index et comme valeur*;
  3. j'applique un tri alphabétique au tableau obtenu.
Voilà, j'espère que tu réussis à suivre, c'est assez basique en fait mais peut-être pas forcément très clair... tu diras si tu as du mal ;)

* Pourquoi comme index et comme valeur ? Parce qu'à chaque tour, si on retrouve un doublon de la même valeur, comme on l'utilise comme index, il va écraser la valeur précédente au lieu d'un ajouter une de plus.

Re: Liste déroulante avec doublon

par sheira » 21 sept. 2010, 08:52

En fait, voici ce qu'affiche ma liste déroulante:

Code : Tout sélectionner

Accueil Secretariat Fonctions Administratives Batiment Travaux Publics Architecture Immobilier Automobile Industrie Logistique Manutention Transport Environnement Nettoyage Securite Accueil Secretariat Fonctions Administratives;Commerce Vente Grande Distribution Telemarketing Teleservices Automobile;Industrie Hotellerie Restauration Metiers de Bouche Industrie;Logistique Manutention Transport Accueil Secretariat Fonctions Administratives;Commerce Vente Grande Distribution;Marketing Communication Imprimerie Edition Banque Finance Gestion Comptabilite Assurance Informatique Technologie de l Information Commerce Vente Grande Distribution Bureaux d Etudes Methodes;Industrie Environnement Nettoyage Securite;Industrie Batiment Travaux Publics Architecture Immobilier;Industrie
J'aimerai trier ce résultat avant de l'insérer dans ma liste déroulante de façon à récupérer ce qui se trouve après le caractère ";" et trier la liste de façon a ne pas avoir de doublon.
En gros, obtenir ça:

Code : Tout sélectionner

Accueil Secretariat Fonctions Administratives Automobile Banque Finance Gestion Comptabilite Assurance Batiment Travaux Publics Architecture Immobilier Bureaux d Etudes Methodes Commerce Vente Grande Distribution Environnement Nettoyage Securite Hotellerie Restauration Metiers de Bouche Industrie Informatique Technologie de l Information Logistique Manutention Transport Marketing Communication Imprimerie Edition Telemarketing Teleservices

Re: Liste déroulante avec doublon

par Cyrano » 20 sept. 2010, 19:03

Regarde du coté des expressions régulières : c'est disponible dans MySQL, voir la doc sur le sujet

Re: Liste déroulante avec doublon

par sylvaing26 » 20 sept. 2010, 12:53

Peux tu mieux structurée ta liste, je n'arrive pas à comprendre comment les données ressortent ...
Concernant le premier mot après le ; regarde du coté de la fonction explode();

Liste déroulante avec doublon

par sheira » 20 sept. 2010, 11:06

Bonjour,

Avec ce code,

Code : Tout sélectionner

$sql = "SELECT DISTINCT `Domaine` FROM `offres`"; $query = mysql_query($sql); while ($item = mysql_fetch_row($query)) { if ($_GET['domaine'] != $item[0]) { $html.='<option value="'.$item[0].'">'._t_jplus($item[0]).'</option>'; }else{ $html.='<option value="'.$item[0].'" selected>'._t_jplus($item[0]).'</option>'; } }
je récupère ces valeurs dans une liste déroulante:

Code : Tout sélectionner

Accueil Secretariat Fonctions Administratives Batiment Travaux Publics Architecture Immobilier Automobile Industrie Logistique Manutention Transport Environnement Nettoyage Securite Accueil Secretariat Fonctions Administratives;Commerce Vente Grande Distribution Telemarketing Teleservices Automobile;Industrie Hotellerie Restauration Metiers de Bouche Industrie;Logistique Manutention Transport Accueil Secretariat Fonctions Administratives;Commerce Vente Grande Distribution;Marketing Communication Imprimerie Edition Banque Finance Gestion Comptabilite Assurance Informatique Technologie de l Information Commerce Vente Grande Distribution Bureaux d Etudes Methodes;Industrie Environnement Nettoyage Securite;Industrie Batiment Travaux Publics Architecture Immobilier;Industrie
J'aimerai pouvoir ne récupérer que le premier mot (ex: Accueil, Banque, Environnement) et récupérer également le premier mot qui se trouve après le caractère ";" (exemple: Commerce, Industrie) et tout ça sans doublon bien évidemment.
Est-ce que vous auriez une piste pour moi?

Merci d'avance!