Reservation d'id dans un select

pourloineus Messages postés 5 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 31 juillet 2007 - 27 juil. 2007 à 09:37
pourloineus Messages postés 5 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 31 juillet 2007 - 31 juil. 2007 à 12:07
Bonjour,


Voila, je cherche a modifier récupérer des informations d'une base de
donnée a partir de la sélection d'un utilisateur. Donc j'ai deux select
(un pour la catégorie 1 et l'autre pour la catégorie 2) et lorsque l'on
clique sur la catégorie 2, ca va chercher le fichier associé dans la
base de donnée. Mon problème c'est que je veux empécher l'utilisateur
de sélectionner certains choix possibles mais tout en gardant ce choix
dans le select.


un exemple serait plus efficace.


imaginez 3 select, un qui contient "type 1" "type 2", le second qui
contient "cat1_1" "cat1_2" "cat1_3" et le troisième qui contient
"cat2_1" "cat2_2" "cat2_3".


lorsque je clique sur type 1, ca doit supprimer cat1_2, et lorsque je
clique sur type 2 ca doit le remettre. Le problème c'est que lorsque
j'enlève cat1_2, cat1_3 prend son id, donc 2, ce qui est vraiment
embétant pour les recherches, d'autant plus que lorsque je remet
cat1_2, cat1_3 disparait définitivement.


Bon voila le code si quelqu'un en a besoin (surement d'ailleurs ^^), et si vous avez des questions n'hésitez pas :)


<script type="text/javascript">

function presel()

{

var select = document.getElementById("requete");

if ((select.options.selectedIndex)==

<?php

$reponse_categorie = mysql_query("SELECT id,actif FROM type_evenement WHERE libelle='demande'") or die(mysql_error());

while ($mfa_reponse_categorie = mysql_fetch_array ($reponse_categorie))

{

if($mfa_reponse_categorie['actif']==1)

{

echo $mfa_reponse_categorie['id'];

}

}

?>

)

{

document.getElementById("cat1").options[<?php

$reponse_categorie = mysql_query("SELECT id,actif,libelle FROM categorie_1 WHERE libelle='demande'") or die(mysql_error());

$mfa_reponse_categorie = mysql_fetch_array ($reponse_categorie);

if($mfa_reponse_categorie['actif']==1)

{

echo $mfa_reponse_categorie['id'];

}

?>] = new Option('<?php echo $mfa_reponse_categorie['libelle'];
?>','<?php echo $mfa_reponse_categorie['id']; ?>');

document.getElementById("cat1").options.selectedIndex=

<?php

$reponse_categorie = mysql_query("SELECT id,actif FROM categorie_1 WHERE libelle='demande'") or die(mysql_error());

while ($mfa_reponse_categorie = mysql_fetch_array ($reponse_categorie))

{

if($mfa_reponse_categorie['actif']==1)

{

echo $mfa_reponse_categorie['id'];

}

}

?>;

completion_cat();

document.getElementById("label_cat_1").style.visibility = "hidden";

document.getElementById("cat1").style.visibility = "hidden";


}

else

{

document.getElementById("cat1").options.selectedIndex=0;

completion_cat();

document.getElementById("label_cat_1").style.visibility = "visible";

document.getElementById("cat1").style.visibility = "visible";

var id = <?php

$reponse_categorie = mysql_query("SELECT id,actif FROM categorie_1 WHERE libelle='demande'") or die(mysql_error());

$mfa_reponse_categorie = mysql_fetch_array ($reponse_categorie);

if($mfa_reponse_categorie['actif']==1)

{

echo $mfa_reponse_categorie['id'];

}

?>;

document.getElementById("cat1").options[id] = null;

}

}

</script>


et en simplifié (source) :


function tac()

{

var select = document.getElementById("requete");

if ((select.options.selectedIndex)==

1)

{

document.getElementById("cat1").options[3] = new Option('demande','3');

document.getElementById("cat1").options.selectedIndex=

3;

completion_cat();

document.getElementById("label_cat_1").style.visibility = "hidden";

document.getElementById("cat1").style.visibility = "hidden";


}

else

{

document.getElementById("cat1").options.selectedIndex=0;

completion_cat();

document.getElementById("label_cat_1").style.visibility = "visible";

document.getElementById("cat1").style.visibility = "visible";

var id = 3;

document.getElementById("cat1").options[id] = null;

}

}

</script>

merci a tous ceux qui se pencheront sur mon problème :)


PS : completion_cat rempli le 3ème select en fonction du second.

2 réponses

nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
28 juil. 2007 à 13:27
Bonjour,

une solution serait de travailler avec Ajax.

Quant à ton problème d'id, je ne le comprend pas très bien car dans un Select tu peux travailler avec 2 valeurs, celles qui sont affichées dans le Select et leurs valeurs clés respectives.
ex:
<select name ='monselect'>
   <option value='be'>Belgique</option>
   <option value='fr'>France</option>
   <option value='it'>Italie</option>
</select>
Donc si je sélectionne la deuxième option, la propriété 'value' me donnera 'fr' et la propriété 'text' me donnera 'France'.

Voilà j'espère avoir été claire dans mes explications.

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
pourloineus Messages postés 5 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 31 juillet 2007
31 juil. 2007 à 12:07
En fait je n'ai pas besoin d'ajax dans cette partie, le javascript suffit. Et je pense tu n'as pas bien compris le problème, j'ai du mal m'exprimer car ta réponse n'est pas adapté a ce que je veux faire :/

Au final je met a jour automatiquement la bdd a chaque insertion d'une nouvelle catégorie 1 afin de mettre "demande" a la fin. comme ca mon code marche. c'est pas exactement ce que je voulais et ca risque d'être fastidieux au bon d'un certain temps mais au moins ca marche :)

merci quand même de ton aide et bonne journée :)
0
Rejoignez-nous