Bonjour à Toutes et Tous,
Les codes ci-dessous s'affichent correctement sur mon site, mais j'ai besoin de récupérer les valeurs d'un select (liste déroulante) après une requête MySQL par AJAX. Je m'explique avec les codes suivants :
Ceci est le script :
Puis l'appel au fichier externe :
Code : 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 <script language="Javascript" type="text/JavaScript"> function makeRequest(url,id_niveau,id_ecrire){ var http_request = false; if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType("text/xml"); } } else if (window.ActiveXObject) { try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert("Abandon :( Impossible de créer une instance XMLHTTP"); return false; } http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } http_request.open("POST", url, true); http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); obj=document.getElementById(id_niveau); data="val_sel="+obj.value; code_du_produit = document.getElementById("code_du_produit").value; largeur_envoi = document.getElementById("largeur_envoi").value; hauteur_envoi = document.getElementById("hauteur_envoi").value; taux_tva = document.getElementById("taux_tva").value; http_request.send(data + "&products_ls_id=" + products_ls_id + "&code_du_produit=" + code_du_produit + "&largeur_envoi=" + largeur_envoi + "&hauteur_envoi=" + hauteur_envoi + "&taux_tva=" + taux_tva); } function traitementReponse(http_request,id_ecrire) { var affich=""; if (http_request.readyState == 4) { if (http_request.status == 200) { var affich_list=http_request.responseText; obj = document.getElementById(id_ecrire); obj.innerHTML = affich_list; } else { alert("Un probleme est survenu avec la requete."); } } } </script>
Et, pour terminer, l'affichage :
Code : 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 <?php require('includes/application_top.php'); $table = $_POST['val_sel']; $largeur_recue = sprintf("%d", $_POST['largeur_envoi']); $hauteur_recue = sprintf("%d",$_POST['hauteur_envoi']); $code_du_produit = sprintf("%d",$_POST['code_du_produit']); $taux_tva_recue = $_POST['taux_tva']; if($table=="Choisissez") { exit; } $recherche_moteur = tep_db_query("SELECT MAX(largeur) AS largeur_max, MIN(largeur) AS largeur_min, MAX(hauteur) AS hauteur_max, MIN(hauteur) AS hauteur_min FROM " . TABLE_AJAXPRODUIT . " WHERE products_id = '$code_du_produit' ORDER BY largeur"); while($recherche_moteur_resultat = tep_db_fetch_array($recherche_moteur)) { if ($largeur_recue >= $recherche_moteur_resultat['largeur_min']) { if ($largeur_recue <= $recherche_moteur_resultat['largeur_max']) { if ($hauteur_recue >= $recherche_moteur_resultat['hauteur_min']) { if ($hauteur_recue <= $recherche_moteur_resultat['hauteur_max']) { $produit_moteur = tep_db_query("SELECT DISTINCT ap.largeur, ap.hauteur, ap.moteur, am.moteur_nm, am.moteur_prix, am.moteur_code, am.moteur_type FROM " . TABLE_AJAXPRODUIT . " ap, $table am WHERE (ap.largeur >= '$largeur_recue') AND (ap.hauteur >= '$hauteur_recue') AND ap.products_id = '$code_du_produit' AND am.moteur_nm = ap.moteur ORDER BY ap.largeur, ap.hauteur, am.moteur_code LIMIT 3 "); $aff = '<select>'; while($resultat_moteur = tep_db_fetch_array($produit_moteur)) { if ($resultat_moteur['moteur_prix'] != 0) { $aff .= '<option size="30" name="' . $resultat_moteur['moteur_type'] . '" value="' . $resultat_moteur['moteur_type'] . '">' . $resultat_moteur['moteur_type'] . ' ( + ' . $resultat_moteur['moteur_prix'] . ' )</option>'; } else { echo "Pas de moteurs disponibles !" . "\n"; } } $aff .= '</select>'; echo $aff; } else { echo "Pas de moteurs disponibles !"; } } else { echo "Pas de moteurs disponibles !"; } } else { echo "Pas de moteurs disponibles !"; } } else { echo "Pas de moteurs disponibles !"; } } require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
J'aimerais pouvoir récupérer les valeurs qui sont dans la balise <div id="id_niv2"> de mon affichage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $tmp_html .= ' <tr> <td class="main" width="60%">' . $op_data['name'] . ' :' . ($op_data['instructions'] != '' ? '<br /><span class="smallText">' . $op_data['instructions'] . '</span>' : '' ) . '</td> <td class="main" width="40%"> <div id="id_list1"> <input type="checkbox" value="products_moteur" name="niv1" id="id_niv1" onClick="makeRequest(\'ajaxmoteur.php\', \'id_niv1\', \'id_niv2\');"> <br><br> </div> <div id="id_niv2"> <!-- ici sera charge la reponse mode texte de PHP à la request AJAX --> </div> <input type="text" size="30" id="' . $code_produit_id . '" name="' . $code_produit_id . '" ' . $maxlength . ' /></td> </tr>';
Ma requête SQL me sort les 3 valeurs que j'ai besoin et AJAX m'affiche correctement ces 3 valeurs sous forme de select-option. Ca, ça fonctionne.
Mais j'aurais besoin de récupérer le choix unique et de l'intégrer dans cet input sous :
Merci d'avance de vos lumières.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input type="text" size="30" id="' . $code_produit_id . '" name="' . $code_produit_id . '" ' . $maxlength . ' /> ICI </td>
Partager