[AJAX] Récupération de données AJAX -> PHP
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 :
Code:
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> |
Puis l'appel au fichier externe :
Code:
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');
?> |
Et, pour terminer, l'affichage :
Code:
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>'; |
J'aimerais pouvoir récupérer les valeurs qui sont dans la balise <div id="id_niv2"> de mon affichage.
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 :
Code:
<input type="text" size="30" id="' . $code_produit_id . '" name="' . $code_produit_id . '" ' . $maxlength . ' /> ICI </td>
Merci d'avance de vos lumières.