Checkbox dynamiques+contrôle

Signaler
Messages postés
2
Date d'inscription
lundi 2 février 2004
Statut
Membre
Dernière intervention
2 février 2004
-
Messages postés
3
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
17 août 2004
-
Bonjour,

J'ai un formulaire généré dynamiquement à partir d'une bd Mysql avec l'affichage de 2 checkbox générées cochées ou non suivant la valeur des champs de la base.

print ";
print ";

Une fois cet affichage effectué j'aimerais que :
- lorsque l'on décoche la 1ere case (service), la 2me soit disabled (non possibilité d'ouverture de service),
- et quand on recoche la 1ere la deuxième soit à nouveau active. (possibilité d'ouvrir le service)

Ou si les 2 cases sont accessibles:
- lorsque l'on coche la 2eme case (ouverture service), la première(service) soit automatiquement coché.

Quelqu'un aurait-il une petite idée pour m'aider ?

Merci beaucoup.

7 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour
pour checkbox "liées" mettre le même nom
<hr>
un 1
un 2
<hr>
deux 1
deux 2
deux 3

Cordialement. Bul.
Messages postés
2
Date d'inscription
lundi 2 février 2004
Statut
Membre
Dernière intervention
2 février 2004

Eh oui ce serait si simple...
mais j'ai besoin d'avoir deux noms différents pour mes checkbox.
Un correspondant au service (Fservice[]),
et l'autre correspondant à l'ouverture ou non de ce service(Fouvert[]).

Merci quand même pour la tentative.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour
ben alors il faut tester
<script ...
function t1()
{ if (c1.checked) { c1.checked=true; c2.checked=false; }
else { c1.checked=false; c2.checked=true; } }
function t2()
{ if (c2.checked) { c2.checked=true; c1.checked=false; }
else { c2.checked=false; c1.checked=true; } }
.....
<input type=checkbox name=c1 onclick="t1();" ...
<input type=checkbox name=c2 onclick="t2();" ...

enfin "quelquechose comme ça"
pas testé,peut-être erreur de syntaxe, ne sais pas
l'état du checkbox lors de l'appel ...

Cordialement. Bul.
Messages postés
3
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
17 août 2004

voilà j'ai un souci :
J'ai un choix de check box qui apparaissent dans un formulaire de façon dynamique (grâce à une base de donnée) et la personne qui rempli le fomulaire doit cocher au moins une des case. (c'est pour une demande de doc pour un domaine particulier, et on ne peut envoyer 20 kg de doc à une personne, ou une doc au hasard, sur le sujet qui l'interesse, il faut donc qu'elle choisisse les éléments qui l'interesse).

voici à quoi ressemble le code PHP
...echo ("$Nom_prep</Td>");...
avec
$j = compteur de boucle;
$ID_prep = Id de la préparation (soucreBD)
$Nom_prep = Nom dela préparation

et le code HTMl généré.
viande bovine

et mon souci c'est de faire un premier test dans le formulaire qui permette de tester les 74 checkbox ainsi générée pour vérifier qu'il y en a au moins une.

mon niveau en javascript est assez bas, j'ai vaguement essayer de faire un test sur les ID en gardant le meme nom pour les checkbox, mais la page de récupération en php du contenu ne me renvoie plus que la valeur de la premiere checkbox cochée, et les autres sont ignorée. c'est donc un souci, je dois garder mon nom dynamique (name ='preparation_$i') et je ne sait comment faire un test seulement sur les id, et en ayant pour but, de seulement savoir que tous ne sont pas décochés.

si quelqu'un peut m'aider, je le remercie apr avance.

Maya
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,
un chti exemple ? à adapter
on donne le même name,
et un id dont la fin progresse de 1 en 1
<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
function test()
{
// solution 1
for (var i=0;i<frm.p.length;i++)
    alert ("name="+frm.p[i].checked);
// solution 2
var j=1;
while (document.getElementById("p"+j)!=null)
  { alert ("getelement="+document.getElementById("p"+j).checked);
     j++;	}
// solution 3
  for (k=0;k<frm.elements.length;k++)
      { if (frm.elements[k].type=="checkbox") 
{ alert ("element="+frm.elements[k].checked);  } } }
</script>
</HEAD>

<form name="frm">
viande 1
viande 2
viande 3

</form>
</HTML>

ici on ne fait qu'afficher les checkbox.
si on teste, sortir de la boucle dès qu'un checkbox
est coché.
exemple avec solution 1
for (var i=0;i<frm.p.length;i++)
   { if (frm.p[i].checked) 
     {  alert(i);
         i=frm.p.length;    // ou break ?
 }  }

Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
Messages postés
3
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
17 août 2004

merci beaucoup !!!!

je vais essayer ça et je te tiens au courant de comment je m'y suis pris et quelle solution j'ai préférée !!!

Merci encore de ton intervention si rapide !!!

Maya :kisses)
Messages postés
3
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
17 août 2004

j'ai choisi la deuxième solution
DONC RESOLU !!!!

____________________________________________________
javascript :

var j=1;
val = false;
while (document.getElementById("prepa_"+j)!=null)
{
if (document.getElementById("prepa_"+j).checked)
{val = true;}
j++;
}

/* et je test cette valeur pour alerté le naviuant qu'il n'a pas choisi le cas échéans*/
if (val == true)
{
document.formEnvoi.submit();
return true;
}
else if (val == false)
{
alert("Merci de choisir au moins 1 preparation");
return false;
}
_______________________________________________

php

<?
/*-- Selection de la LISTE DES PREPARATIONS dans la table qui correspond -- */
$req = "SELECT preparation.ID, preparation.Nom FROM preparation ";
$rep = MkQuery($req);
$j = 1;
foreach($rep as $key => $elem)
{
list($ID_conc,$Nom_conc)=explode("ZXXZ", $elem);

echo ("$Nom_conc
");

$j++;

}
?>

MERCI encore de ton aide !!!!

voilà et en placant le préparation en tablo (name='preparation[]')
=> dans la page de récupération de données du formulaire on fait un foreach

<?
$preparation = $_POST["preparation"];
foreach ($preparation as $key => $elem)
{
echo "$key -->> $elem";
}
}

voilà bon courage aux autres !!!!