formulaire dans formulaire - PB tout cocher checkbox

Eléphant du PHP | 178 Messages

12 févr. 2008, 18:00

Bonjour,

j'ai récupérer un script javascript qui me permet de cocher tous les checkboxs present dans un formulaire...j'avoue avoir du mal avec le javascript

voici mon code :
<form action="essai" method="post" name="all_submit">
<table width="100%" border="0" cellspacing="2" cellpadding="0">
  <tr>
  	<td width="1" class="couleurs1">
    <img src="../images_site/petites_icones/supprimer.png" alt="Tout supprimer" title="Tout supprimer"/>
    </td>
    <td width="1" class="couleurs1">ID&nbsp;</td>
    <td class="couleurs1">Titre</td>
    <td class="couleurs1">Date</td>
    <td width="1" class="couleurs1">Online&nbsp;</td>
    <td width="1" class="couleurs1">Posteur&nbsp;</td>
    <td colspan="3" class="couleurs1">Gestion</td>
    </tr>
    <tr>
    <td width="1" class="couleurs1">
    <input type="checkbox" value="Cocher" onClick="this.value=check(this.form.elements['suppbox[]'])"></td>
    <td width="1" class="couleurs1">&nbsp;</td>
    <td class="couleurs1">&nbsp;</td>
    <td class="couleurs1">&nbsp;</td>
    <td class="couleurs1">
      <div align="center">
      <?php
	echo alldesactive($online_offline, $chp_page, "Tout Offline", "Tout Online");
	  ?>
      </div></td>
    <td class="couleurs1">&nbsp;</td>
    <td colspan="3" class="couleurs1">&nbsp;</td>
    </tr>
    
<?php

	while($row_txtacc= mysql_fetch_assoc($sql_acctt))
	{
		if ($row_txtacc['txtallaccueil_id'] == $editer_accueil)
		{
		$class = "couleurs3";
		$couleurs = $couleurs;
		}
		elseif ($couleurs == "0")
		{
		$class = "couleurs1";
		$couleurs = "1";
		}
		else
		{
		$class = "couleurs2";
		$couleurs = "0";
		}
	///Parametres	
	$online_offline.= $row_txtacc['txtallaccueil_online'];
	?>  
      
	  <tr>
      <form action="index.php?page=0" method="post" name="valider">
      
      <td class="<?php echo $class; ?>">
      <input name="suppbox[]" type="checkbox" id="suppbox[]" value="1" />
            </td>
		<td class="<?php echo $class; ?>">
        <div align="center"><?php echo $row_txtacc['txtallaccueil_id']; ?></div>        </td>
		<td class="<?php echo $class; ?>">
        <input name="txtallaccueil_titre" type="text" value="<?php echo stripslashes($row_txtacc['txtallaccueil_titre']); ?>" size="35" />        </td>
		<td class="<?php echo $class; ?>"><?php echo date('d/m/Y H:m:s',$row_txtacc['txtallaccueil_date']); ?></td>
		<td class="<?php echo $class; ?>"><div align="center"><?php echo online($row_txtacc['txtallaccueil_online']); ?></div></td>
		
		<td class="<?php echo $class; ?>"><div align="center"><?php echo posteur($row_txtacc['txtallaccueil_user_id']); ?></div></td>
		<td width="1" class="<?php echo $class; ?>">
		
		<input name="txtallaccueil_id" type="hidden" value="<?php echo $row_txtacc['txtallaccueil_id']; ?>" />
		<input name="valider" type="hidden" value="accueil" />
        <?php echo $chp_page; ?>
        <input name="userid" type="hidden" value="<?php echo $_SESSION['cb_user']->userid; ?>" />
		<input name="valider" type="button" value="Valider" onclick="submit('valider')"/>        </td>
        </form>
		
		<td width="1" class="<?php echo $class; ?>">
		<form action="index.php?page=<?php echo $_GET['page']; ?>" method="post" name="editer">
		<input name="editer_accueil" type="hidden" value="<?php echo $row_txtacc['txtallaccueil_id']; ?>" />
		<input name="valider" type="hidden" value="accueil" />
        <?php echo $chp_page; ?>
		<input name="editer" type="button" value="Editer" onclick="submit('editer')"/>
		</form>        </td>
		
		<td width="1" class="<?php echo $class; ?>">
        <form action="index.php?page=<?php echo $_GET['page']; ?>" method="post" name="supprimer">
		<input name="supprimer_accueil" type="hidden" value="<?php echo $row_txtacc['txtallaccueil_id']; ?>"/>
		<input name="valider" type="hidden" value="accueil" />
        <?php echo $chp_page; ?>
		<input name="supprimer" type="button" value="Supprimer" class="bt_supprimer" onclick="submit('supprimer')"/>
		 </form>        </td>
         
	  </tr>
        
	 <?php
	}
?> 
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="couleurs1">
    <input name="tt_supprimer" type="button" value="Tout supprimer" class="bt_supprimer" onclick="submit('all_submit')"/>
</td>
  </tr>
</table>

</form>
voici ma fonction javascript :
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var checkflag = "false";
function check(field) {
if (checkflag == "false") {
  for (i = 0; i < field.length; i++) {
  field[i].checked = true;}
  checkflag = "true";
  return "Tout décocher"; }
else {
  for (i = 0; i < field.length; i++) {
  field[i].checked = false; }
  checkflag = "false";
  return "Tout cocher"; }
}
//  End -->
</script>

Ce checkbox :
<input type="checkbox" value="Cocher" onClick="this.value=check(this.form.elements['suppbox[]'])">
permet de cocher tous les autres checkbox :
<input name="suppbox[]" type="checkbox" id="suppbox[]" value="1" />
merci de votre aide !!!
Modifié en dernier par JOHAAANNS le 20 févr. 2008, 12:15, modifié 1 fois.

Mammouth du PHP | 19672 Messages

12 févr. 2008, 20:45

Primo, aère ton code que ce soit lisible :
<script type="text/javascript">
/* <![CDATA[ */
var checkflag = "false";
function check(field)
{
    if (checkflag == "false")
    {
        for (i = 0; i < field.length; i++)
        {
            field[i].checked = true;
        }
        checkflag = "true";
        return "Tout décocher";
    }
    else
    {
        for (i = 0; i < field.length; i++)
        {
            field[i].checked = false;
        }
        checkflag = "false";
        return "Tout cocher";
    }
}
/* ]]> */
</script>
Ensuite : tu as des crochets en trop là dedans :
<input type="checkbox" value="Cocher" onClick="this.value=check(this.form.elements['suppbox[]'])"> 
Remplace plus simplement par :
<input type="checkbox" value="Cocher" onClick="this.value=check(this.form.elements['suppbox']);"> 
Essaye comme ça et reviens avec le résultat (et un [Résolu] si ça fonctionne ;) )
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 178 Messages

12 févr. 2008, 23:39

Merci de ta reponse mais ca ne fonction pas le probleme est qu'il y a plusieurs formulaires, du coup ce script se perd (en tout cas je pense !!)

Une idéee

:wink:

Mammouth du PHP | 19672 Messages

13 févr. 2008, 07:33

Si tu as plusieurs formulaires, ce n'est pas un problème en soi, mais tu ne pourras en traiter qu'un à la fois d'une part, ensuite, si tu as dans chacun une série de cases à cocher, il est important qu'elles utilisent des noms différents pour chaque formulaire.

Enfin, "ça ne fonctionne pas" est un peu insuffisant pour m'éclairer sur ce qui se passe...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

d0m
Mammouth du PHP | 1141 Messages

13 févr. 2008, 10:02

Les formulaires imbriqués c'est pas bon...

Mammouth du PHP | 19672 Messages

13 févr. 2008, 10:31

Les formulaires imbriqués c'est pas bon...
Il n'a pas pour autant dit qu'ils étaient imbriqués ;)

Je dirais cependant que si c'est le cas, ce n'est pas juste "pas bon", c'est complètement invalide et non conforme : le résultat ne peut être qu'un plantage de l'application.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 178 Messages

13 févr. 2008, 10:40

Alors pour répondre aux questions j'ai dans mon code pour suimplifier :
a/<form ... name="all_submit"> //Pour valider la totalité du formulaire
          mon checkbox qui coche tout

        Ma boucle while
            b/<form ... name="1erform"> //pour valider une modification
                pleins de truc + MES FAMEUX CHECKBOX
                 avec bouton onclick submit 1erform         
             b/</form>

             c/<form ... name="2emeform"> //pour editer mon contenu
                avec bouton onclick submit 2emeform         
             c/</form>

              d/<form ... name="3emeform"> //pour supprimer mon contenu
                 avec bouton onclick submit 3emeform         
              d/</form>
        FIN de ma boucle while

avec bouton onclick submit all_submit
a/</form>
les formulaires b/, c/, d/ fonctionnent tres bien, le hic ces de cocher toutes les checkbox...et voir si par la suite je vais pouvoir recupere leurs valeurs

Alors vous allez surment me dire que ca fait un paquet de formulaire et que c'est un sacré bordel..et vous n'avez pas tords...mais peut etre qu'il y a plus simple, si vous pouvez m'aiguiller, je suis preneur... ;)