IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sélectionner les items d'un select multiple depuis un array [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webmaster bénévole et amateur
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster bénévole et amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Sélectionner les items d'un select multiple depuis un array
    Bonjour,
    Je bute sur un petit problème :
    J'ai des données contenue dans un array (provenant d'une base de données)
    J'ai un champ SELECT multiple avec des données provenant d'une table
    J'aimerais pouvoir sélectionner les items correspondants aux données contenue dans l'array
    cela j'y arrive, mais car il y a un mais,
    si les données dans mon array sont au nombre de 2 tous mes items dans le SELECT sont affichés deux fois,
    si les données dans mon array sont au nombre de 3 tous mes items dans le SELECT sont affichés trois fois,
    ...
    si les données dans mon array sont au nombre de 5 tous mes items dans le SELECT sont affichés cinq fois fois,
    or je ne trouve pas comment éviter cela quelqu'un aurait-il la solution à apporter à mon code !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $auteurs = explode("/", $row_Livre[4]);
    echo "<option value='-1'>Sélectionne l'auteur</option>";
    while ($row_Auteur = mysql_fetch_row($verif_Auteur)) {
    	foreach ($auteurs as $auteur)
    	{
    		if ($row_Auteur[0] == $auteur) { $sel2 = 'selected'; } else { $sel2 = ''; }
    		echo "<option value='".$row_Auteur[0]."' ".$sel2.">".$row_Auteur[1]."</option>";
    	}
    }
    D'avance un grand merci pour votre aide
    Bien cordialement
    Gecko62

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce n'est pas une question de PHP mais de logique : tu relis et affiche tout le contenu de ton array à chaque boucle.
    Construis ton tableau $auteurs avec la valeur en clef, c'est plus rapide pour rechercher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $auteurs[$valeur] = TRUE;
    et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($row_Auteur = mysql_fetch_row($verif_Auteur)) {
    	if (isset($auteurs[$row_Auteur[0]]) { $sel2 = ' selected="selected"'; } else { $sel2 = ''; }
    	echo '<option value="'.$row_Auteur[0].'"' . $sel2 . '>'.$row_Auteur[1].'</option>';
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webmaster bénévole et amateur
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster bénévole et amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Bonsoir,

    Je en connaissais pas cette syntaxe, comme mon profil l'indique je suis un peu débutant.

    Dans tous les cas, un grand merci pour votre réponse qui ne résous que partiellement mon soucis!!

    Les items dans le SELECT n'apparaisse q'une seule fois, mais ce ne sont pas les bons items qui sont sélectionnés (il y en a par contre le bon nombre)

    le tableaux $auteurs est en fait un explode d'une donnée extraite de la base pouvant contenir 123 (s'il y a un seul auteur), 123/156 (s'il y a deux auteurs), ...

    Que fais-je de faux ? à quoi correspond la variable $valeurs, elle n'est plus employée ailleurs

    voici ce que j'obtiens avec le contenu du tableau $auteurs

    Nom : ecran.jpg
Affichages : 356
Taille : 20,7 Ko

    A quoi correspond le dernier élément de l'Array "[]=> 1" ? Dans le cas présent seul les valeurs 126 et 150 m'intéressent ce sont le id_Auteur des auteurs à sélectionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $auteurs = explode("/", $row_Livre[4]);
    $auteurs[$valeurs] = TRUE;
    echo "<option value='-1'>S&eacute;lectionne l'auteur</option>";
    	while ($row_Auteur = mysql_fetch_row($verif_Auteur)) {
    		if (isset($auteurs[$row_Auteur[0]])) { $sel2 = ' selected="selected"'; } else { $sel2 = ''; }
    		echo '<option value="'.$row_Auteur[0].'"' . $sel2 . '>'.$row_Auteur[1].'</option>';
    	}
    un grand merci pour votre réponse

    Gecko62

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta structure avec des separateurs n'est pas bonne mais c'est un autre sujet.

    Tu peux contourner en faisant comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $auteurs = array_flip(explode("/", $row_Livre[4]));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Webmaster bénévole et amateur
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster bénévole et amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup, cela fonctionne grâce à vos propositions qui m'était toutes deux inconnues.

    Gecko62

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sélectionner toutes les options d'un select multiple
    Par dolu02 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/02/2008, 10h49
  2. [JavaScript] [SRC] Comment récupérer les text d'un select multiple
    Par kenny49 dans le forum Contribuez
    Réponses: 1
    Dernier message: 11/04/2007, 19h40
  3. [JSP] Récupérer les valeurs d'un SELECT multiple
    Par ran_hery dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 15/05/2006, 15h56
  4. Sélectionner les items 5 par 5
    Par Coussati dans le forum Langage
    Réponses: 13
    Dernier message: 26/10/2005, 08h12
  5. Récupérer les valeurs d'un <select> multiple
    Par vg33 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/10/2005, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo