Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 14h22   #1
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

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

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
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 :
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 :
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 :
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.
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 14h32   #2
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
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.
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 14h37   #3
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

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

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
Voici donc une solution afin de répondre à mon problème :


Code JAVASCRIPT :
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.
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h42.


 
 
 
 
Partenaires

Hébergement Web