IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HTML Discussion :

Rangement des checkbox


Sujet :

HTML

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut Rangement des checkbox
    Bonjour,

    je viens de mettre en place un formulaire permettant de lier une personnes à différents groupes.
    Les groupes sont récupéré dans la base de données (grace à une boucle) et sont représentés par des checkbox.
    mon probleme, c'est que quand il y a un nombre important de groupe, j'obtiens une masse de checkbox ...
    J'aurais voulu savoir si il y avais moyen de mettre en place plusieur colonne pour les ranger ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    <form action="../op/op.UsrMgr.php" name="form<?print $us->getID();?>_2" onsubmit="return checkForm2('<?print $us->getID();?>');">
            <input type="Hidden" name="action" value="addgroup">
            <input type="Hidden" name="userid" value="<?print $us->getID();?>">
            <table>
                <tr>
                    <td class="inputDescription"><?printMLText("add_groups");?>:</td>
                    <td>    
                            <?
                                foreach ($allGroups as $currGroup){
                                if (!$us->isInGroup($currGroup))
                                    print "<input type='checkbox' name='group[]' value=\"".$currGroup->getID()."\">" . $currGroup->getName() . "\n";
                                    $group = $_POST["group"];
                                }
                            ?>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td colspan="2"><br><input type="Submit"></td>
                </tr>
            </table>
            </form>

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 88
    Par défaut
    tu peux tout présenter comme tu veux

    par exmple tu peux dire, je veux 3 colonnes, au quel cas, il te suffira de connaitre la taille de $allGroups que tu divises par 3.

    Dans ta boucle tu englobe la création des tr et td. Puis chaque fois que tu tombes sur un multiple de 3 tu ferme le td, tu fermes ton tr puis tu réouvre un nouveau tr.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    oki, mais comment tu code ça?
    J'ai possibilité de connaitre le nombre de groupe par :

    C'est une idée interessante, mais je ne vois pas comment la coder

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 88
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <form action="../op/op.UsrMgr.php" name="form<?print $us->getID();?>_2" onsubmit="return checkForm2('<?print $us->getID();?>');">
            <input type="Hidden" name="action" value="addgroup">
            <input type="Hidden" name="userid" value="<?print $us->getID();?>">
            <table>
                <tr>
                    <td class="inputDescription"><?printMLText("add_groups");?>:</td>    
                            <?
                                foreach ($allGroups as $currGroup){
                                if (!$us->isInGroup($currGroup))
                                    print "<td><input type='checkbox' name='group[]' value=\"".$currGroup->getID()."\">" . $currGroup->getName() . "\n";
                                    $group = $_POST["group"]."</td>";
    <!-- ici tu test si c entier -->
    if ( count(allGroup) == monTest) {
    ?></tr><tr><?}                             }
                            ?>
                        </select><!-- je sais pas pkoi y a ca ? -->
                    <!--- ICI tu dois faire gaffe pê rajouter un colspan pour combler, car si tu n'as qu'une cellule pour la derniere ligne, il faut que celle-ci prenne toute la largeur -->
                </tr>
                <tr>
                    <td colspan="2"><br><input type="Submit"></td>
                </tr>
            </table>
            </form>

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    ça ne fonctionne pas.
    ça me les mets tous en ligne sans distinction de colonne ou autre

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 88
    Par défaut
    tu as bien rempli ta condition :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ( count(allGroup) == monTest) {
    ?></tr><tr><?}}
    et tu l'as bien incluse Dans le foreach ?

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    ouaip

  8. #8
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 88
    Par défaut
    tu peux recoller ton code stp

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <form action="../op/op.UsrMgr.php" name="form<?print $us->getID();?>_2" onsubmit="return checkForm2('<?print $us->getID();?>');">
            <input type="Hidden" name="action" value="addgroup">
            <input type="Hidden" name="userid" value="<?print $us->getID();?>">
            <table>
                <tr>
                    <td class="inputDescription"><?printMLText("add_groups");?>:</td>
                    <td>    
                            <?
                                foreach ($allGroups as $currGroup){        
                                if (!$us->isInGroup($currGroup))
                                    print "<input type='checkbox' name='group[]' value=\"".$currGroup->getID()."\">" . $currGroup->getName() . "\n";
                                    $group = $_POST["group"]."</td>";
                                if ( count($allGroups) == 2) {
                                ?>
                                </tr><tr>
                                <?    }       
                                }
                                            ?>
                </tr>
                <tr>
                    <td colspan="2"><br><input type="Submit"></td>
                </tr>
            </table>
            </form>
    Je ne pense pas m'être trompé ... enfin ... je pense

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    Le résultat en fait, c'est deux lignes (j'ai 9 groupes dans ma base de données)

  11. #11
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 88
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
                <tr>
                    <td class="inputDescription"><?printMLText("add_groups");?>:</td>
                    <td>   A SUPPRIMER 
                            <?
                                foreach ($allGroups as $currGroup){        
                                if (!$us->isInGroup($currGroup))
                                    print "<td>   A RAJOUTER<input type='checkbox' name='group[]' value=\"".$currGroup->getID()."\">" . $currGroup->getName() . "\n";
                                    $group = $_POST["group"]."</td>";
                                if ( count($allGroups) == 2) {
                                ?>
                                </tr><tr>
                                <?    }       
                                }
                                            ?>
    ICI faut que tu verifie selon le nombre de TD de la derniere ligne si il faut ou non des colspan
                </tr>
    faut gaffe aussi car sur la premiere ligne tu a un td, il faut donc pê que losrque tu cré une ouvelle ligne tu fasses ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    </tr><tr><td>&nbsp;</td>

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    J'ai fait les modification, et le resultat est une ligne qui contient les groupes (plus ou moins séré les uns aux autres).

  13. #13
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    par contre, je ne comprend pas pk on fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( count($allGroups) == 2) {

  14. #14
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 88
    Par défaut
    humm tu peux me filer le code généré stp

    et peux-tu vérifier que tu entres bien dans le if qui est cencé fermer le tr : </tr>

  15. #15
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <form action="../op/op.UsrMgr.php" name="form<?print $us->getID();?>_2" onsubmit="return checkForm2('<?print $us->getID();?>');">
            <input type="Hidden" name="action" value="addgroup">
            <input type="Hidden" name="userid" value="<?print $us->getID();?>">
            <table>
                <tr>
                    <td class="inputDescription"><?printMLText("add_groups");?>:</td>    
                            <?
                                foreach ($allGroups as $currGroup){        
                                if (!$us->isInGroup($currGroup))
                                    print "<td><input type='checkbox' name='group[]' value=\"".$currGroup->getID()."\">" . $currGroup->getName() . "\n";
                                    $group = $_POST["group"]."</td>";
                                if ( count($allGroups) == 10) {
                                ?>
                                </tr><tr><td></td>
                                <?    }       
                                }
                                            ?>
                </tr>
                <tr>
                    <td colspan="2"><br><input type="Submit"></td>
                </tr>
            </table>
            </form>

  16. #16
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 88
    Par défaut
    Oui bon en fait c'est moi qui t'ai induit en erreur dsl.

    c'est une valeur fixe lol c'est le nombre total de tes groupes non ?

    Il faut que tu te bases non pas sur le total mais sur une variable que tu incrementes au fur et a mesure du foreach (il me semble qu'il y a un truc pour générer ca en php pas sur).

    Deplus attation, sur ta ligne de submit le colspan dépend du nombre de colonne choisies.

    il rentre dans le 2eme if ?

  17. #17
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    J'ai essayé un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <form action="../op/op.UsrMgr.php" name="form<?print $us->getID();?>_2" onsubmit="return checkForm2('<?print $us->getID();?>');">
            <input type="Hidden" name="action" value="addgroup">
            <input type="Hidden" name="userid" value="<?print $us->getID();?>">
            <table>
                <tr>
                    <td class="inputDescription"><?printMLText("add_groups");?>:</td>    
                            <?
                                foreach ($allGroups as $currGroup){
                                $i = 0;
                                $j = count($allGroups) / 2;
                                $i++;            
                                if (!$us->isInGroup($currGroup))
                                    print "<td><input type='checkbox' name='group[]' value=\"".$currGroup->getID()."\">" . $currGroup->getName() . "\n";
                                    $group = $_POST["group"]."</td>";
                                if ( $i > $j){
                                print "</tr><tr><td></td>";
                                }  
                                }     
                                            ?>
                </tr>
                <tr>
                    <td colspan="2"><br><input type="Submit"></td>
                </tr>
            </table>
            </form>
    mais il veut pas ...

  18. #18
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 88
    Par défaut
    non il faut que tu sortes du foreach la déclaration de ton $i et $j car a chaque coup, il les réinitialise sinon, ce n'est pas grave pour $j ( c'est redondant) mais cela remets toujours ton $i à 0 donc il vaut ensuite toujours 1 vu que tu fais $i++
    au passage dans le if tu rajoute :ca donne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
                            <?
    
                                $i = 0;
                                $j = count($allGroups) / 2;
                                foreach ($allGroups as $currGroup){
                                  if (!$us->isInGroup($currGroup))
                                      print "<td><input type='checkbox' name='group[]' value=\"".$currGroup->getID()."\">" . $currGroup->getName() . "\n";
                                    $group = $_POST["group"]."</td>";
                                  if ( $i > $j){
                                    print "</tr><tr><td></td>";
                                    $i = 0; 
                                  }  
                                  $i++;            
                                }     
                                            ?>

  19. #19
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <form action="../op/op.UsrMgr.php" name="form<?print $us->getID();?>_2" onsubmit="return checkForm2('<?print $us->getID();?>');">
            <input type="Hidden" name="action" value="addgroup">
            <input type="Hidden" name="userid" value="<?print $us->getID();?>">
            <table>
                <tr>
                    <td class="inputDescription"><?printMLText("add_groups");?>:</td>    
                            <?
                                $i = 0;
                                $j = count($allGroups) / 2;
                                foreach ($allGroups as $currGroup){            
                                if (!$us->isInGroup($currGroup))
                                    print "<td><input type='checkbox' name='group[]' value=\"".$currGroup->getID()."\">" . $currGroup->getName() . "\n";
                                    $group = $_POST["group"]."</td>";
                                    if ( $i > $j){
                                    print "</tr><tr><td></td>";
                                    $i = 0;
                                    }  
                                    $i++;
                                }     
                                            ?>
                </tr>
                <tr>
                    <td colspan="2"><br><input type="Submit"></td>
                </tr>
            </table>
            </form>
    Le probleme, c'est qu'il me balance 2 lignes et 5 colonnes (dans un ordre pitoyable).

  20. #20
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Par défaut
    En gros, il faudrai que je puisse avoir différentes colonnes contenant chacune le meme nombre de checkbox.

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/05/2005, 11h35
  2. [VBA-E] Question à propos des checkbox
    Par Timfg dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/04/2005, 15h09
  3. [C#] Tableau généré contenant des checkbox
    Par la_muraille dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/04/2005, 12h16
  4. Cochage des checkbox d'un dbgrid
    Par kose dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/01/2005, 16h26
  5. boucler sur des checkboxes
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 09/10/2004, 08h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo