Forum Programmation.php Tableau avec case à cocher et action sur lignes cochées

Posté par  .
Étiquettes : aucune
0
29
jan.
2007
Bonjour,

Je débute complètement en PHP et j'aurais besoin d'un pointeur vers un tutoriel qui me montre comment faire un formulaire du genre :

  • un tableau dont une des colonnes contient des cases à cocher.
  • un bouton qui déclenche un action uniquement pour les lignes dont la case est cochée.

  • Un peu comme certaines pages de PhpMyAdmin.

    Merci d'avance.
    • # ... une piste ...

      Posté par  . Évalué à 4.

      une piste est de travailler avec les noms des champs comme un tableau...

      <input type="checkbox" name="tableau[]" value ="valeur a" />
      <input type="checkbox" name="tableau[]" value ="valeur b" />
      <input type="checkbox" name="tableau[]" value ="valeur c" />
      <input type="checkbox" name="tableau[]" value ="valeur d" />
      <input type="checkbox" name="tableau[]" value ="valeur e" />
      ...

      au final, seules les lignes cochées seront retournées dans le tableau $tableau lors du parsing du POST.

      Bien à toi.
      • [^] # Re: ... une piste ...

        Posté par  (site web personnel) . Évalué à 1.

        Si tu veux faire un truc dynamique (sans rien coté serveur), il te faut faire un peu de javascript.

        Pour ça englobe le lot de case a cocher dans un
        Avec un bouton submit comme ça :


        Ensuite utilise un code de ce style :
        function js_action()
        {
        var item = document.getElementById('xxx');
        for (var i = 0; i < item.childNodes.length; i++)
        {
        //change le .checked en la propriété dom valide, j'ai pas eu le temps de vérifier ça
        if (item.childNodes[i].checked)
        js_tonactionici(item.childNodes[i]);
        }
        }

        function js_tonactionici(item)
        {
        //faire un truc ici
        }

        Pour regarder les propriétés dom exactes (j'ai pas le temps), installe Firefox, et l'extension firebug.

        Ps : fait super gaffe avec les retours a la lignes, dès fois on se prend un node pour une retour a la ligne vide
        • [^] # Re: ... une piste ...

          Posté par  . Évalué à 2.

          Mwais, enfin, c'est chercher midi à quatorze heure puisque un élément de la question est que c'est avec php et que de toutes façons, pour traiter le formulaire une fois soumis, il faut quand-même travailler côté serveur...

          De plus, les valeurs qui ne sont pas "checked" sont de toutes façons ignorées lors du POST, donc quel est l'intérêt de refaire en javascript un mécanisme qui est déjà existant dans les standards... à part si c'est pour faire des traitements dont seul le client a à connaître l'existence...

          Bref, de prime abord, je ne vois pas l'intéret, à part faire du javascript pour le plaisir de faire du javascript ou démontrer qu'on peut faire d'un truc très simple un truc très compliqué.
          • [^] # Re: ... une piste ...

            Posté par  (site web personnel) . Évalué à 3.

            <i>un bouton qui déclenche un action uniquement pour les lignes dont la case est cochée</i>

            Bon il a l'air de débuter pas mal, donc j'ai eu la faiblesse de considérer qu'un traitement coté serveur n'était pas forcément ce qu'il souhaitait.
            (faut dire que je bosse sur des fomulaires dynamiques en PHP+Javascript donc j'ai pensé a mon cas en premier ;)

            Après si il veux faire un formulaire standard :
            <form action="post.php" method="post">
            <div>
            <input type="checkbox" value="xxx" />
            <input type="checkbox" value="yyy" />
            <input type="checkbox" value="zzz" />
            <input type="submit" />
            </div>
            </form>

            Et dans ton post.php
            <?php
            echo '<pre>'.print_r($_POST, true).'</pre>';
            ?>

            Et tu regarde un peu comment ça marche ;)
            • [^] # Re: ... une piste ...

              Posté par  . Évalué à 3.

              Mettre un champ "name" pour donner le nom de la variable accueillant les valeurs n'est pas dénué d'intérêt...

              L'astuce avec php est d'utiliser "[]" à la fin du nom du champ input dans lequel on désire récupérer les variables: cela génère exactement le même comportement que de mettre dans un script (cfr ma première réponse)

              Un formulaire contenant





              donnera la variable

              $mavariable = Array
              (
              [0] => "a"
              [1] => "b"
              [2] => "c"
              )

              si toutes les cases sont cochées dans le formulaire. Les valeurs non cochées ne sont pas retournées: p.ex, si on ne coche pas la case correspondant à "b", on aura

              $mavariable = Array
              (
              [0] => "a"
              [1] => "c"
              )


              En plus, ça marche même avec des tableaux multi-dimensionnels.
    • # Merci

      Posté par  . Évalué à 1.

      Merci aux réponses d'au dessus, et à l'argumentation qui s'ensuit.
      Ça répond parfaitement à ma question.

    Suivre le flux des commentaires

    Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.