TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 4 décembre 2008
-
21 mai 2008 à 12:35
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 4 décembre 2008
-
21 mai 2008 à 20:59
Salut à Tous!!
Un petit problème! comme d'hab'! J'espère que vous pourrez m'aider!!!
En fait, j'ai une liste de modules que des étudiants doivent sélectionner grâce à une checkbox. Le problème est que certains modules nécessitent l'apprentissage d'un autre module en même temps! Par exemple, si vous voulez prendre le module Géométrie, il faudra prendre le module Maths! Mais il vous est possible de prendre le module Maths sans prendre le module Géométrie! (j'espère que vous avez compris!)
Donc pour gérer ce problème de co-modules, avec une fonction javascript, si je clique sur Géométrie, Maths se coche automatiquement! Mais je n'arrive pas à faire le contraire, c'est à dire au moment au je décoche Maths (en supposant que Géométrie soit coché préalablement), Géométrie doit se décocher!!
Voici le code que j'ai utilisé pour gérer le clique sur Géométrie : (Cette fonction marche!)
function check_comod(fils,pere){
if(document.getElementById(fils).checked){
document.getElementById(pere).checked=true;
}else{
document.getElementById(pere).checked=false;
}
}
Voici le code j'ai utilisé pour gérer le "décochage" de Géométrie lorsqu'on clique sur Mathématiques : (Cette fonction ne marche pas! Peut-être des interférences avec la fonction check_comod ???)function uncheck(dad,son){
if(document.getElementById(dad).checked==false){
document.getElementById(son).checked=false;
}
}
J'avais pensais de désactiver la checkbox de maths lorsque Géométrie est coché! Tout ça grâce à un disabled mais la valeur d'une checkbox disabled n'est pas récupérée lors d'un submit en PHP! Hors, j'en ai besoin pour savoir quels modules ont été cochés!
Donc si quelqu'un pouvait m'aider SVP! Javascript ou PHP! Peu importe, tant que ça marche!!!! Merci!
"C'est quand on a raison qu'il est difficile de prouver qu'on n'a pas tort." de Pierre Dac
A voir également:
Gérer des checkboxes - cocher et décocher automatiquement
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 21 mai 2008 à 16:08
>>
ça ressemble fortement à ce que j'avais mis dans mon message
je n'avais pas lu ta solution zobibol !
je suis sûr que ce que tu proposais fonctionnait,
mais je pensais que notre demandeur n'avait pas tout
à fait exprimé correctement sa demande.
c'est vrai que "réponse acceptée" devrait se nommer "question résolue".
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 4 décembre 2008 21 mai 2008 à 16:30
Je crois avoir compris d'où vient le problème!
en fait, dans mon code, il y a A1, B1 et C1.
Si tu coches A1, B2 doit se cocher automatiquement.
Si tu décoches A1, B2 doit se décocher automatiquement.
Si tu coches C1, B2 doit se cocher automatiquement.
Si tu décoches C1, B2 doit se décocher automatiquement.
Ensuite, pour B2:
Si tu coches B2, rien ne se passe sur A1 et C1
Si tu décoches B2, A1 et C1 sont automatiquement décoché! (si A1 et C1 n'étaient pas cochés, rien ne se passe alors!)
Ce qui signifie que dans le code, ça me donne un trucs dans ce genre :
<input type='checkbox' id='B1' onClick=
"casB('B1','A1');casB('B1,'C1');">
Et comme il y a deux actions à la suite, il ne m'exécute pas la deuxième action >>>
casB('B1,'C1')
par contre,
casB('B1','A1') est exécuté!
sauriez vous comment faire exécuter les 2 actions??
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 4 décembre 2008 21 mai 2008 à 16:32
Je crois avoir compris d'où vient le problème!
en fait, dans mon code, il y a A1, B1 et C1.
Désolé, j'me suis encore trompé dans les numéros... Voilà la version corrigée
Si tu coches A1, B1 doit se cocher automatiquement.
Si tu décoches A1, B1 doit se décocher automatiquement.
Si tu coches C1, B1 doit se cocher automatiquement.
Si tu décoches C1, B1 doit se décocher automatiquement.
Ensuite, pour B1:
Si tu coches B1, rien ne se passe sur A1 et C1
Si tu décoches B1, A1 et C1 sont automatiquement décoché! (si A1 et C1 n'étaient pas cochés, rien ne se passe alors!)
Ce qui signifie que dans le code, ça me donne un trucs dans ce genre :
<input type='checkbox' id='B1' onClick=
"casB('B1','A1');casB('B1,'C1');">
Et comme il y a deux actions à la suite, il ne m'exécute pas la deuxième action >>>
casB('B1,'C1')
par contre,
casB('B1','A1') est exécuté!
sauriez vous comment faire exécuter les 2 actions??
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 21 mai 2008 à 16:41
avec mon exemple et celui de zobibol aisni que ces explications ...
tu as tout ce qu'il faut. tu devrais faire un tout ch'tiot effort...
<hr /> Cordialement Bul [mon Site] [M'écrire]
Vous n’avez pas trouvé la réponse que vous recherchez ?
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 21 mai 2008 à 17:00
Bon sang de bois, je crois que j'ai trouvé ou alors j'ai encore perdu le neurone qui me permets de respirer (non, je respire encore, donc c'est bon)
/**
* Fonction utiliser pour le cas A1 et C1
* @param _id1 identifiant de la case maître
* @param _id2 identifiant de la case esclave
* @param _id3 identifiant de la case esclave qui va foutre le boxon
*/
function checkLink(_id1, _id2, _id3){
if ( !document.getElementById(_id3).checked)
document.getElementById(_id2).checked = document.getElementById(_id1).checked
}
/**
* Fonction utiliser pour le cas B1
* @param _id1 identifiant de la case maître
* @param _id2 identifiant de la case esclave 1
* @param _id3 identifiant de la case esclave 2
*/
function casB(_id1, _id2, _id3){
if (!document.getElementById(_id1).checked){
document.getElementById(_id2).checked =false;
document.getElementById(_id3).checked =false;
}
}
</script>
<label> B1 </label>
<label> A1 </label>
<label> C1 </label>
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 4 décembre 2008 21 mai 2008 à 17:53
Re Zobibol!
je ne comprends pas ce que c'est cet id3?? >>> * @param _id3 identifiant de la case esclave qui va foutre le boxon
Que signifie @param???
NB: Et j'ai oublié de préciser quelquechose! j'utilise php pour ajouter les "esclaves"!! alors il peut bien y avoir 0 esclave comme 5 esclaves! Cela dépendra combien on en a rentré dans la base de données!!
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 4 décembre 2008 21 mai 2008 à 20:09
Donc voilà ce que j'ai réussi a faire pour l'instant! normalement ça devrait gérer le fait qu'il y ait X enfants et X parents mais ça ne fonctionne pas! je ne sais pas encore pourquoi! peut-être et surment une erreur dans le javascript! :S
NB : après réflexion, il n'est pas nécessaire de décocher B1 si on décoche A1 ou C1. Mais par contre il est impératif que A1 et C1 soient décochés si on décoche B1!
JAVASCRIPT:
function checkLink(_id1, _id2){
if(_id2!=''){
var tableau=_id2.split('_'); //on découpe le second paramètre pour récupérer les identifiants des checkboxes à cocher (ici, on cherche à cocher B1)
for (var i=0; i<tableau.length; i++) {
if(tableau[i]!=''){
if(document.getElementById(_id1).checked==true) document.getElementById(tableau[i]).checked=true;
}
}
}
}
function casB(_id1, _id2){
if (!document.getElementById(_id1).checked){
var tableau=_id2.split('_'); //on découpe le second paramètre pour récupérer les identifiants des checkboxes à décocher (ici, on cherche à décocher A1 et C1)
for (var i=0; i<tableau.length; i++) {
if(tableau[i]!='') document.getElementById(tableau[i]).checked = false;
}
}
}
PAGE PHP:
while($arr=mysql_fetch_array($req)){
//liste des enfants à décocher sur déclique d'un parent (=selection de C1 et A1)
$check_child='';
$req_child=mysql_query("SELECT id_child FROM famille WHERE id_parent='{$arr['id_courant]}'") or die(mysql_error());
while($arr_child=mysql_fetch_array($req_child)){
$check_child=$check_child.'_'.$arr_child['id_child'];
}
//liste des parents à cocher sur clique d'un enfant (=selection de B1)
$check_parent='';
$req_parent=mysql_query("SELECT id_parent FROM famille WHERE id_child='{$arr['id_courant']}'") or die(mysql_error());
while($arr_parent=mysql_fetch_array($req_parent)){
$check_parent=$check_parent."_".$arr_parent['id_parent'];
}
if($check_parent!='') $check_parent=substr($check_parent,1); //pour supprimer le premier '_'
if($check_child!='') $check_child=substr($check_child,1); //pour supprimer le premier '_'
?>
' id='<?php echo $arr['id_courant']; ?>' onClick="javascript:<?php echo "checkLink('".$arr['id_courant']."','".$check_child."');casB('".$arr['id_courant']."','".$check_parent."');"; ?>" >
}
Merci à ceux qui pourront m'aider!!! je sais, j'ai du mal à expliquer le problème!! et à expliquer où pourrait être le problème!!