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

Langage PHP Discussion :

[Checkbox] La bonne façon et comment faire


Sujet :

Langage PHP

  1. #1
    Meewix
    Invité(e)
    Par défaut [Checkbox] La bonne façon et comment faire
    Bonjour à tous,

    Je suis nouveau donc petite présentation : ASV = 32 M Paris, motard,j'aime tout comme les femmes, la bonne bouffe, le sport, bref suis pas trop chiant...

    Avant de poster j'ai fait une recherche sur mon PB, j'ai eu 3 pages mais pas de vraies réponses à mes yeux, et comme je pige pas grand chose aux checkbox c'est peut être normal.



    Alors voilà mon pb. Après plusieurs sondage autour de moi sur Comment gérer les checkbox (CB), j'en arrive à un point où je pète un câble car j'ai de tout comment réponse, on va dire 50/50, et total j'avance pas !

    Voici se que je veux faire dans mon prochain site :
    1- utiliser les CB dans mon formulaire en sachant que je vais les utiliser pour mon formulaire de recherche plus tard (deux questions avec des CB pour +/-10 réponses chacunes)
    2- Dois-je enregistrer dans ma base SQL sous forme de "longtext" tous les choix avec un "implode" OU chaque choix comme champ indépendant
    3- Je suis partie sur la façon d'enregistrer façon "implode" et j'ai bien les "value" qui s'enregistre sous cette forme dans ma table "choix01,choix02,choix03..."
    4- Je n'arrive pas à récupérer les "values" de ma table pour remonter dans mon formulaire chochés ou non.

    Encore une fois je ne sais pas si c'est la meilleur méthode.

    Merci pour vos XP et aides !

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Bonjour et bienvenue sur developpez.com,

    Pour le choix d'enregistrement tout dépend de la dynamique de la page. Si tu peux à tout moment ajouter des CB supplémentaire il faudra par conséquent modifier la structure de ta table (si tu optes pour la solution chaque CB un champ). Ca risque d'alourdir le tout.

    A ce sujet j'ai récemment eu le même problème à ce sujet sauf que c'était sur un forum phpBB et j'ai opté pour une solution implode avec | comme ca je modifie aucune structure et cette valeur est gardée dans dans un unique champs au lieu d'un vingtaine ou plus (vu que ca dépend du nombre de forum créée).

    Pour ce qui est de la récupération, tu fais implode pour enregistrer et tu fais explode après récupération et ca le remet sous forme de tableau et là il reste plus qu'à effectuer tes tests sur le tableau.


    Mais il y a aussi la solution de serialize qui peut etre pas mal pour l'enregistrement de tableau dans une BDD, pour en savoir plus regardes ceci : Comment insérer un tableau (array) dans une table ?

  3. #3
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Salut, et bienvenue à toi...

    je ne sais pas si j'ai bien compris ton souci, mais s'il s'agit de vérifier ce qui a déjà été coché par l'utilisateur, voici ce que je ferais, je ne dis pas que c'est la meilleure solution mais ça devrait fonctionner.

    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
     
    <?php
     
    // liste des checkbox
    $tabChamps= array ('champ1','champ2','champ3','champ4','champ5');
    $tabValues= array ('value1','value2','value3','value4','value5');
    $tabLabels= array ('champ 1','champ 2','champ 3','champ 4','champ 5');
     
    // simulation requete sgbd
    $result="value2,value4";
    $tabResult= explode(",",$result);
     
    // pour chaque element a construire
    foreach ($tabChamps As $key => $item) {
     
       // si la valeur existe dans le retour de la requete sql
       // on met checked
       // sinon on met rien
       $chk=( in_array($tabValues[$key],$tabResult) )?(' checked="true"'):('');
     
       $element = '<input type="checkbox" name="'.$item.'" ';
       $element.= '"value="'.$tabValues[$key].'" ';
       $element.= $chk.' />';
       $element.= $tabLabels[$key].'<br />';
    }
     
    ?>
    bon dév

  4. #4
    Meewix
    Invité(e)
    Par défaut
    Citation Envoyé par Kerod
    Pour ce qui est de la récupération, tu fais implode pour enregistrer et tu fais explode après récupération et ca le remet sous forme de tableau et là il reste plus qu'à effectuer tes tests sur le tableau.
    Merci

    Oui c'est bien que je veux faire mais je ne sais pas trop comment faire, voici déjà se que j'ai fait :

    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
    <form name="Form" action="membre_up_profil.php?action=update" method="POST">
          <p>Question 1 ? </p>
          <table width="100%"  border="0">
    	<tr>
    		<td>
    			  <input type="checkbox" name="Eve_Cocher[]" value="Mariage" />
    			  Mariage<br>
    			  <input type="checkbox" name="Eve_Cocher[]" value="Anniversaire" />
    			  Anniversaire<br>
    			  <input type="checkbox" name="Eve_Cocher[]" value="Soirée privée" />
    			  Soirée privée
    		  </td>
    		</tr>
    	  </table>
    	    <input type="submit" name="send" value="Modifier">
        </form>
    Ensuite je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $even=implode(',',$Eve_Cocher);
    Et ça va inscrire dans ma base les champs cochés ainsi : champ1,champ2,etc


    Mais je ne vois pas comment faire avec l' explode et tester les champs !
    Vous avez un exemple pour que je puisse m'appuyer ?

  5. #5
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Un exemple tiré de mon code sous phpbb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while($row2 = $db->sql_fetchrow($result2))
        {
            $check = (in_array($row2['forum_id'], $forums))?('checked="checked"'):('');    
            echo "<input type=\"checkbox\" id=\"" . $row2['forum_id'] . "\" name=\"forum[]\" value=\" " . $row2['forum_id']. "\" $check style=\"margin:0\" border=\"0\">"
                ) //end array
            );
        } // end while
    Mais avant j'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $forums = explode("|", $row['config_value']);

  6. #6
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    bien, la prochaine fois je resterai couché...


  7. #7
    Meewix
    Invité(e)
    Par défaut
    Merci pour l'exemple Kerod.

    Mais là il va juste me sortir les Champs qui sont entrés dans ma base, non ?
    J'ai besoin qu'il affiche toutes les CB cochées ou non !

    Merci pour l'aide

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ben c'est exactement ce que je fais avec ce code

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    En prévision de la suite éventuelle, je te recommande la lecture de ce sujet : Formulaire multicritères et affichages ainsi que de cet article : Les formulaires et PHP 5

  10. #10
    Meewix
    Invité(e)
    Par défaut
    Oki merci pour les infos.

    Je n'ai pas trop le temps en ce moment pour me pencher sur mon code, mais je ne perds pas de vue le post et vos aides
    Et je vous tiendrais informer de la suite etc.
    Merci les filles

Discussions similaires

  1. comment faire une bonne défragmentation ?
    Par Pommedeterre dans le forum Windows XP
    Réponses: 28
    Dernier message: 14/03/2008, 10h06
  2. Question sur la bonne façon de faire un JMenuBar
    Par bit_o dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 26/06/2007, 10h26
  3. Réponses: 12
    Dernier message: 18/04/2007, 19h13
  4. Réponses: 2
    Dernier message: 16/02/2007, 15h56
  5. [XSL] Comment faire pour trier de cette façon ?
    Par shupa dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/06/2005, 17h39

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