[AJAX] Formulaire dynamique - Récupération de variable
Bonjour a tous,
Je travail présentement sur un formulaire avec liste déroulante dynamique. Le code marche a merveille. Seulement, j'ai besoin de la selection de ma premiere liste pour le résultat final. Je vous met le code et j'explique par la suite.
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
|
function SelectSouscat($catid)
{
$options="";
// créé un nouvel objet permettant d'envoyer une réponse au côté client
$objResponse = new xajaxResponse();
// on selectionne les sous-catégorie en fonction de l'annee de la catégorie mère
$sql="SELECT annee, modele FROM yamaha WHERE annee = '".$catid."' ORDER BY modele ASC";
$req=mysql_query($sql);
$options=' Modele: <select onchange="xajax_SelectSiege(this.value)"><option value="">Choose your model</option>';
while ($souscat = mysql_fetch_array($req))
{
// on place toutes les sous-catégories dans des options valables pour la liste SELECT
$options .= '<option value="'.$souscat['modele'].'">' . $souscat['modele'] . '</option>';
}
$options .='</select>';
// l'Ajax remplacera le innerHTML (html intérieur) de la liste_souscat pour y mettre $options
$objResponse->addAssign("liste_souscat","innerHTML",$options);
// envoie la réponse en XML
return $objResponse->getXML();
}
######################################################################
# LE RÉSULTAT DU SIÈGE DÉSIRÉ #
######################################################################
function SelectSiege($souscate, $catid)
{
$options2="";
// créé un nouvel objet permettant d'envoyer une réponse au côté client
$objResponse2 = new xajaxResponse();
// on selectionne les sous-catégorie en fonction de l'id de la catégorie mère
$sql2=" SELECT annee, yamaha.modele, No, image_no, image_no2, photo2, yamaha.siege, siege_yamaha.description, siege_yamaha.photo FROM yamaha, siege_yamaha WHERE modele = '" .$souscate."' AND yamaha.siege = siege_yamaha.siege_produit AND annee = '".$catid."' GROUP BY siege ";
$req2=mysql_query($sql2);
while ($souscat1 = mysql_fetch_array($req2))
{
// on place toutes les sous-catégories dans des options valables pour la liste SELECT
$options2 .= "<h2>". $souscat1['No']." . " . $souscat1['siege']." </h2><p>". $souscat1['description']."</p> <a href='#' onclick='monpopup(" . $souscat1['image_no'].")'><img class='img_produits' src='". $souscat1['photo']."'/></a><a href='#' onclick='monpopup(" . $souscat1['image_no2'].")'><img class='img_produits' src='". $souscat1['photo2']."'/></a>";
}
// l'Ajax remplacera le innerHTML (html intérieur) de la liste_souscat pour y mettre $options
$objResponse2->addAssign("reponse","innerHTML",$options2);
// envoie la réponse en XML
return $objResponse2->getXML();
}
######################################################################
# ENREGISTREMENT DES FCT AJAX #
######################################################################
$xajax = new xajax();
//$xajax->debugOn();
$xajax->registerFunction("SelectSouscat");
$xajax->registerFunction("SelectSiege");
$xajax->processRequests(); |
Voici mon code html
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<form id="testForm1">
Année: <select id="liste_cat" onchange="xajax_SelectSouscat(this.value)">
<option value="" ></option>
<?php
$sql="SELECT DISTINCT annee FROM annee_yam ORDER BY annee DESC";
$req=mysql_query($sql) or die(mysql_error());
while($cat = mysql_fetch_array($req))
{
echo '<option value="'.$cat['annee'].'" >' . $cat['annee'] . '</option>';
}
?>
<div id="liste_souscat">
<select onchange="xajax_SelectSiege(this.value, document.getElementById('liste_cat').value)"> </select>
</div>
<div id="reponse"></div> |
Alors je voulais simplement reprendre la variable $catid (qui correspond a l'élément selectionner de ma premier liste) de ma fonction SelectSouscat car j'en ai de besoin pour ma deuxieme liste. Pour s'y faire, jai mit document.getElementById('liste_cat').value dans le onchange de ma deuxieme liste. Le code me semblait bon mais lorsque je lance je choisi un modele (de ma 2ieme liste) une fenetre alert m'apparait et me dise qu'il me manque l'argument 2 dans la fonction SelectSiege. Je ne sais pas si je m'explique bien.
Quelqu'un pourrait m'aider ?