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ésor de la Cathé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' /> 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.
Partager