Bonjour,
J'ai le formulaire suivant qui permet de sélectionner un nom d'application :
Code :
- <form method="POST" action="post.php">
- <select onchange="ajax(this.options[this.selectedIndex].id)" name="Product_Designation">
- <option>- - Select - -</option>
- <?php
- <option id="1>">Appli 1</option>
- <option id="2>">Appli 2</option>
- <option id="3">Appli 3</option>
- </select>
- <div id="version">
- </div>
- <input type="submit" value="Envoyer" />
- </form>
|
Lorsque l'on sélectionne l'application la fonction javascript ajax est appelée :
Code :
- function ajax(idproduct)
- {
- var xhr = getXMLHttpRequest(); // Voyez la fonction getXMLHttpRequest() définie dans la partie précédente
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
- res = xhr.responseText;
- alert(res);
- document.getElementById("version" ).innerHTML=res;
- }
- };
- xhr.open("POST", "ajax.php", true);
- xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded" );
- xhr.send("Product_Id="+idproduct);
- }
|
Cette fonction va permettre d'appeller la page ajax.php qui va récupérer toutes les versions correspondantes à l'application sélectionnée :
Code :
- <?php
- header("Content-Type: text/plain" );
- include("_acces_bd.php" );
- $Product_Id=$_POST['Product_Id'];
- $sql="SELECT BCGW_Product_Designation FROM bcgw_product WHERE BCGW_Product_Id=\"$Product_Id\";";
- $result=mysql_query("$sql" );
- $rresult=mysql_fetch_array($result);
- $Product_Designation=$rresult['BCGW_Product_Designation'];
- $res_php ="";
- $res_php .= "<select name='Product_Version'><option>- - Select - -</option>";
- $sql="SELECT BCGW_Product_Version FROM bcgw_product WHERE BCGW_Product_Designation=\"$Product_Designation\" GROUP BY BCGW_Product_Version;";
- $result=mysql_query("$sql" );
- while($rresult=mysql_fetch_array($result))
- {
- $Product_Version=$rresult['BCGW_Product_Version'];
- $res_php .= "<option>$Product_Version</option>";
- }
- mysql_close();
- $res_php .= "</select><input type='hidden' name='test' value='paul'/>";
- echo "$res_php";
- ?>
|
Une fois le menu des versions consitutué, le résultat est renvoyé à la fonction ajax qui va faire un document.getElementById("version" ).innerHTML=res; de sorte à remplir la balise <div id="version"></div> avec le menu.
Tout ceci marche très bien (le menu Product_Version apparaît bien)
Le problème est quand je veut soumettre le formulaire, j'arrive à récupérer $_POST['Product_Designation'] mais pas $_POST['Product_Version']. Je ne vois pas où est le problème, je suis un peu à court d'idée, peut-être le innerHTML qui fait pas son boulo à 100%. Qu'en pensez-vous ?
Merci
Message édité par Magg27 le 19-02-2010 à 14:05:30