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

JavaScript Discussion :

Récupération de valeurs de plusieurs select


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut Récupération de valeurs de plusieurs select
    Bonjour à tous,

    Cette problématique a déjà été traitée ici, mais je ne comprends pas très bien. Voici donc pourquoi je relance un sujet.

    Dans le développement de mon site, j'ai atteins une partie dans laquelle il me faut, pour l'intégration des données dans un BD, récupérer la valeur de plusieurs select. Voici quelques parties de codes avec leurs utilisations. Il s'agit d'une page permettant de réaliser la demande de visites guidées d'un ou plusieurs ateliers.

    Cette première partie me permet de générer les select nécessaire. Il y en aura maximum 5.
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    function selectguide($languevisiteur, $idatelier){
    	global $bddmal;
    	$codegenere = "";
    	$requeteguide = $bddmal->prepare('SELECT guide.id as id, guide.nom as nom, guide.prenom as prenom 
    	FROM guide, langue_visite, maitrise 
    	WHERE langue_visite.lg = :languevisiteur
    	AND langue_visite.id = maitrise.idlangue 
    	AND maitrise.idatelier= :idatelier
    	AND maitrise.idguide = guide.id ORDER BY guide.nom');
    	$requeteguide->bindParam(':languevisiteur', $languevisiteur, PDO::PARAM_STR);
    	$requeteguide->bindParam(':idatelier', $idatelier, PDO::PARAM_INT);
    	$resultat = $requeteguide->execute();
    	if( $resultat == false || $requeteguide->rowCount() < 1 )
    		return false;
     
    	$codegenere .= '<select name="idguide'.$idatelier.'" id="idguide'.$idatelier.'">';
    	while( $data = $requeteguide->fetch()){
    		$codegenere .= '<option value="'.$data['id'].'">';
    		$codegenere .= $data['nom'].', '.$data['prenom'].'</option>';
    	}
    	$codegenere .= '</select>';
    	$requeteguide->closeCursor();
    	return $codegenere;
    }

    Voici la partie de code qui appelle celle mentionnée ci-dessus
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo '<tr><td>Atelier</td><td>Guide</td><td>Date / Heure de la visite</td></tr>';
    /* on affiche uniquement les visites des ateliers demandées */
    echo ($donnees['ensemble']==1) ? '<tr><td>Ensemble du site</td><td>'.selectguide($donnees['langue'], 99).'</td><td>'.debutvisite(99, $donnees['id']).'</td></tr>'."\n": '';
    echo ($donnees['carnaval']==1) ? '<tr><td>Atelier du Carnaval</td><td>'.selectguide($donnees['langue'], 14).'</td><td>'.debutvisite(14, $donnees['id']).'</td></tr>'."\n": '';
    echo ($donnees['apapier']==1) ? '<tr><td>Atelier du Papier</td><td>'.selectguide($donnees['langue'], 15).'</td><td>'.debutvisite(15, $donnees['id']).'</td></tr>'."\n": '';
    echo ($donnees['fpapier']==1) ? '<tr><td>Fabrication du Papier</td><td>'.selectguide($donnees['langue'], 16).'</td><td>'.debutvisite(16, $donnees['id']).'</td></tr>'."\n": '';
    echo ($donnees['tresor']==1) ? '<tr><td>Tr&eacute;sor de la Cath&eacute;drale</td><td>'.selectguide($donnees['langue'], 17).'</td><td>'.debutvisite(17, $donnees['id']).'</td></tr>'."\n": '';
     
    echo '<tr><td onClick="assignGuide(\''.$donnees['id'].'\')" >Valider</td></tr>'."\n";
    break;

    Au niveau du Javascript, je souhaiterai récupérer la valeur de chacun de ces select afin de les assigner proprement dans ma BD. Pour ce faire, j'ai commencer le code suivant :

    Code JAVASCRIPT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    function assignGuide(numreservation){
    	var connection = createConnection();
    	var arrGuide = new Array();
    	arrGuide = document.getElementsByTagName("select");
     
    	for( var i=0 ; i < arrGuide.length ; i++){
     
    		var tagobj = arrGuide.item(i);
     
    		alert ("i: "+i+"\ntest: "+test);
    	}
    	/*
    	var selectidguide = document.getElementById("idguide");
    	var idguide = selectidguide.options[selectidguide.selectedIndex].value;
     
    	alert ("Valeur de idguide: "+idguide);
     
    	document.getElementById("conteneur").innerHTML = "<img src='./29.gif' alt='loading' />&nbsp;Veuillez patienter ...";
     
    	connection.onreadystatechange=function(){
    		if( connection.readyState==4 && connection.status==200){
    			document.getElementById("conteneur").innerHTML = connection.responseText;
    		}
    	}
     
    	var requete = '&idvisite='+numreservation;
    	requete += '&idguide='+idguide;
     
    	connection.open("POST", "./inc/assignGuide.php", true);
    	connection.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	connection.send(requete);*/
    }

    Au début du développement, nous étions parti sur le fait qu'un seul guide pouvait être assigné pour toutes les visites, mais à présent, nous avoir la possibilité d'assigner un guide différent pour chaque visite.

    Je ne sais pas vraiment comment procéder au niveau de mon Javascript pour récupérer toutes les valeurs sélectionnées de chacun de mes select. L'ajout dans la BD sera réalisée par une secussion d'appel AJAX au script php se trouvant côté serveur.

    J'espère avoir été clair dans la demande.

    J'ai une idée, mais aucune idée si cela pourrait fonctionner. A savoir, assigner le même Name pour tous mes select, et assigner des valeurs id différentes pour chacun. Mais comment faire pour savoir qui correspond à quoi, et comment les retrouver.

    Toutes idées, remarques, pistes, ou informations d'ordre général sont les bienvenues.

    En vous remerciant tous pour votre collaboration, je vous souhaite de passer une bonne après midi.

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Avant d'entamer l'analyse de ta question qui semble par ailleurs bien formulée, je t'avouerai qu'il est préférable de poster le code généré, pas le code serveur.

  3. #3
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Voici donc une solution afin de répondre à mon problème :


    Code JAVASCRIPT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    function assignGuide(numreservation){
    	var connection = createConnection();
    	var arrGuide = new Array();
    	arrGuide = document.getElementsByTagName("select");
     
    	alert ("nombre de visites: "+arrGuide.length);
     
    	for( var i=0 ; i < arrGuide.length ; i++){
    		/*document.getElementById("conteneur").innerHTML = "<img src='./29.gif' alt='loading' />&nbsp;Veuillez patienter ...";*/
     
    		var idselect = arrGuide[i].id;
    		var selected = document.getElementById(idselect).selectedIndex;
    		var idatelier = idselect.replace("idguide", "");
    		var idguide = document.getElementById(idselect).options[selected].value;
     
    		/*connection.onReadyStateChange = function() {
    			if( connection.readyState==4 && connection.status==200){
    				document.getElementById("conteneur").innerHTML = "Assignation(s) effectu&eacute;e(s)...";
    			}
    		}*/
     
    		var requete = '&idvisite='+numreservation;
    		requete += '&idguide='+idguide;
    		requete += '&idatelier='+idatelier;
     
    		connection.open("POST", "./inc/assignGuide.php", false);
    		connection.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    		connection.send(requete);
    	}
    }

    Chose que je truve dès lors très étrange, est qu'il m'est impossible de réaliser une injection de contenu dans la page afin de signaler que le traitement est en cours. Voici donc pourquoi la ligne 9 est en commentaire.

    Si quelqu'un voit une solution au problème, elle est la bienvenue.

Discussions similaires

  1. [PHP 5.0] Récupérer valeurs de plusieurs SELECT généré
    Par RobertP dans le forum Langage
    Réponses: 8
    Dernier message: 09/11/2011, 21h37
  2. Récupérer valeur de plusieurs select
    Par fouinette dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/02/2011, 10h34
  3. Récupération de valeur de plusieurs tables
    Par cdsoft dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/12/2010, 17h26
  4. Problème de récupération de valeur d'un select multiple
    Par poissonsoluble dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 30/11/2006, 09h37
  5. selectionner automatiquement plusieurs valeurs ds un select
    Par shadowR dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/09/2005, 16h00

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