j'ai encore quelques difficultés à réaliser ce que je souhaite.
A partir d'une première balise select, je souhaiterai qu'en fonction de ce que l'on sélectionne dans ce select, on affiche ou non une autre balise select complémentaire de la première.
Pour ce faire, lors de la création de la première balise select, je fais un appel à une fonction javascript qui va dire d'afficher ou non la seconde balise select.
J'ai fait quelque chose d'un peu tordu alors suivez bien
Voici la fonction qui crée ma première balise :
function addOffresCommerciales($id,$selected){
$req = "SELECT id_offre_commerciale, intitule_offre, active, visite FROM offre_commerciale";
$result = mysql_query($req) or die('Requête invalide : ' . mysql_error() . "\n" . 'Requête complète : ' . $req);
echo "<select id='".$id."' name='".$id."'>";
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
if($row['active'] == 1){
if(isset($selected) && $selected == $row['id_offre_commerciale']) $sel = "selected='selected'"; else $sel = "";
echo "<option ".$sel." value='".$row['id_offre_commerciale']."' onClick=chmpOffre(this.value)>".$row['intitule_offre']."</option>
";
}
}
echo "</select>";
}
Donc ici, j'appelle la fonction javascript chmpOffre où this.value contient la valeur de la balise select, à savoir l'id de l'offre que j'ai sélectionné.Ensuite, voici la fonction chmpOffre que je crée. texte contient la valeur de l'id de l'offre que j'ai sélectionné
Code : Tout sélectionner
function chmpOffre(texte)
{
var chmp = document.getElementById("visites");
//chmp fait référence à la seconde balise select que je souhaite voir affiché ou non. Cette balise select est toujours la même. Elle ne change jamais. Soit elle est affichée, soit elle ne l'est pas.
//on a créé autant de formulaires qu'il n'y a d'offres qui proposent des visites. Chacun de ces formulaires comporte un name, un id et une value
//Ces trois informations sont les memes et valent id_offre_commerciale.
//on crée donc une variable a qui va contenir value de l'élément dont l'id vaut l'id_offre_commerciale
//Si a existe réellement, c'est que l'on a sélectionné dans la liste une offre qui possède une visite
//si a n'existe pas, alors il n'existe pas d'éléments dans cette page qui ont pour id l'id_offre_commerciale, donc l'offre sélectionnée ne comprend pas de visites.
var a=document.getElementById(texte).value;
if(a)
{
chmp.style.display="inline";
}
else chmp.style.display="none";
}
$req="SELECT id_offre_commerciale FROM offre_commerciale WHERE visite=1";
$reqquery=mysql_query($req) or die('Requête invalide : ' . mysql_error() . "\n" . 'Requête complète : ' . $reqquery);
while($row=mysql_fetch_array($reqquery,MYSQL_ASSOC))
{
echo '<input type="hidden" name="'.$row['id_offre_commerciale'].'" id="'.$row['id_offre_commerciale'].'" value="'.$row['id_offre_commerciale'].'"></input>';
}
Finalement, mon code fonctionne, c'est-à-dire que si jamais je sélectionne une offre qui doit afficher la seconde balise, elle le fait. Seulement, je change d'avis et qu'au final je sélectionne une offre qui n'a pas besoin de voir affiché la balise, celle-ci reste affichée. Là est mon problème !Savez-vous ce qui ne va pas dans mon code ? merci d'avance.