Checkbox dynamiques+contrôle

cs_wolfe Messages postés 2 Date d'inscription lundi 2 février 2004 Statut Membre Dernière intervention 2 février 2004 - 2 févr. 2004 à 12:56
mayavega Messages postés 3 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 17 août 2004 - 17 août 2004 à 18:07
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 févr. 2004 à 15:01
Bonjour
pour checkbox "liées" mettre le même nom
<hr>
un 1
un 2
<hr>
deux 1
deux 2
deux 3

Cordialement. Bul.
0
cs_wolfe Messages postés 2 Date d'inscription lundi 2 février 2004 Statut Membre Dernière intervention 2 février 2004
2 févr. 2004 à 15:31
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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 févr. 2004 à 10:50
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.
0
mayavega Messages postés 3 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 17 août 2004
17 août 2004 à 16:23
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
17 août 2004 à 16:51
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]]
0
mayavega Messages postés 3 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 17 août 2004
17 août 2004 à 17:03
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)
0
mayavega Messages postés 3 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 17 août 2004
17 août 2004 à 18:07
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 !!!!
0
Rejoignez-nous