[AJAX] Retourner valeur d'une fonction
Bonjour,
Je souhaite pour un formulaire de commande que je créer pour un site pouvoir récupérer des valeurs qui sont utiliser par divers fonction.
Voici le fonctionnement du système que je souhaite :
L'utilisateur sélectionne le revendeur qu'il souhaite (liste déroulante) une fois ce choix fait on fait un appel à la base de donnée pour récupérer la liste des produits (liste déroulante) que ce revendeur fait. Ensuite apparait deux choix à l'utilisateur pour sélectionner entre deux délai et un fois ce délai choisi je fait apparaitre une case pour renseigner la quantité et la je veux pouvoir faire un appel à la base de données pour pouvoir faire un calcul de tarif en fonction des éléments renseigner.
Maintenant place au code :
commande.php
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
| <div>
<script type="text/javascript" src="./commande_xhr.js" charset="iso_8859-1"></script>
<form action='commande.php' method='POST'>
<label for="rev_id">Choix Revendeur (*) :</label>
<?php
$sql = "SELECT rev_societe, rev_id FROM rev, client WHERE rev.rev_valid = 1";
$req = mysql_query($sql);
?>
<select name="rev_id" id="rev_id" onchange="getproduit(this.value);">
<option value='' selected='selected' disabled='disabled'></option>
<?php
while ($data = mysql_fetch_array($req))
{
?>
<option value="<?php echo $data['rev_id']; ?>"><?php echo $data['rev_societe']; ?></option>
<?php
}
?>
<br>
</select>
<span id="blocSelectProduit"></span>
<br>
<span id="blocSelectDelai"></span>
<br>
<span id="blocSelectType"></span>
<br>
<span id="blocSelectQuantite"></span>
</form> |
commande_xhr.js
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
| var requete = null;
function creerRequete()
{
try
{
requete = new XMLHttpRequest();
}
catch (microsoft)
{
try
{
requete = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(autremicrosoft)
{
try
{
requete = new ActiveXObject('Microsoft.XMLHTTP');
}
catch(echec)
{
requete = null;
}
}
}
if(requete == null)
{
alert('Impossible de creer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
}
}
function actualiserProduits()
{
var listeProd = requete.responseText;
var blocListe = document.getElementById('blocSelectProduit');
blocListe.innerHTML = listeProd;
}
function getproduit(idr)
{
if(idr == 'vide')
{
document.getElementById('blocSelectProduit').innerHTML = '';
}
else
{
var blocListe = document.getElementById('blocSelectProduit');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
creerRequete();
var url = 'commande_produit.php?idr='+ idr;
requete.open('GET', url, true);
requete.onreadystatechange = function()
{
if(requete.readyState == 4)
{
if(requete.status == 200)
{
actualiserProduits();
}
}
};
requete.send(null);
return idr;
}
}
function afficherDelai()
{
var listeProd = requete.responseText;
var blocListe = document.getElementById('blocSelectDelai');
blocListe.innerHTML = listeProd;
}
function getdelai(idr2)
{
if(idr2 == 'vide')
{
document.getElementById('blocSelectDelai').innerHTML = '';
}
else
{
var blocListe = document.getElementById('blocSelectDelai');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
creerRequete();
var url = 'commande_delai.php?idr2='+ idr2;
requete.open('GET', url, true);
requete.onreadystatechange = function()
{
if(requete.readyState == 4)
{
if(requete.status == 200)
{
afficherDelai();
}
}
};
requete.send(null);
}
}
function afficherType()
{
var listeProd = requete.responseText;
var blocListe = document.getElementById('blocSelectType');
blocListe.innerHTML = listeProd;
}
function getType(idr3)
{
if(idr3 == 'vide')
{
document.getElementById('blocSelectType').innerHTML = '';
}
else
{
var blocListe = document.getElementById('blocSelectType');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
creerRequete();
var url = 'commande_type.php?idr3='+ idr3;
requete.open('GET', url, true);
requete.onreadystatechange = function()
{
if(requete.readyState == 4)
{
if(requete.status == 200)
{
afficherType();
}
}
};
requete.send(null);
}
}
function afficherQuantite()
{
var listeProd = requete.responseText;
var blocListe = document.getElementById('blocSelectQuantite');
blocListe.innerHTML = listeProd;
}
function getQuantite(idr4)
{
if(idr4 == 'vide')
{
document.getElementById('blocSelectQuantite').innerHTML = '';
}
else
{
var blocListe = document.getElementById('blocSelectQuantite');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
creerRequete();
var url = 'commande_quantite.php?idr4='+ idr4;
requete.open('GET', url, true);
requete.onreadystatechange = function()
{
/* Lorsque l'etat est a 4 */
if(requete.readyState == 4)
{
/* Si on a un statut a 200 */
if(requete.status == 200)
{
afficherQuantite();
}
}
};
requete.send(null);
}
}
function afficherMontant()
{
var listeProd = requete.responseText;
var blocListe = document.getElementById('blocSelectQuantite');
blocListe.innerHTML = listeProd;
}
function getMontant(idr5)
{
if(idr5 == 'vide')
{
document.getElementById('blocSelectQuantite').innerHTML = '';
}
else
{
var blocListe = document.getElementById('blocSelectQuantite');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
creerRequete();
var url = 'commande_montant.php?idr5='+ idr5;
requete.open('GET', url, true);
requete.onreadystatechange = function()
{
if(requete.readyState == 4)
{
if(requete.status == 200)
{
afficherMontant();
}
}
};
requete.send(null);
}
}
//calcul montant en fonction de la quantite
function afficherMontantCalcul()
{
var listeProd = requete.responseText;
var blocListe = document.getElementById('blocCalcul');
blocListe.innerHTML = listeProd;
}
function calculMontant(idr6)
{
if(idr6 == 'vide')
{
document.getElementById('blocCalcul').innerHTML = '';
}
else
{
var blocListe = document.getElementById('blocCalcul');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
creerRequete();
var url = 'commande_calcul_montant.php?idr6='+ idr6;/
requete.open('GET', url, true);
requete.onreadystatechange = function()
{
if(requete.readyState == 4)
{
if(requete.status == 200)
{
afficherMontantCalcul();
}
}
};
requete.send(null);
}
} |
Je vous épargne pour le moment le reste du code (fichier php appeler par les fonction JS qui me serve à récupérer les valeurs dans la base ou alors le code html du bloc suivant en fonction de la selection)
Mon souhait est de pouvoir récupérer dans la fonction "calculMontant" la valeur de la fonction "getproduit(idr)" par exemple.
Je prends tout même juste une idée.
Merci d'avance de votre aide en espérant avoir été assez clair.
Mimil5