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 :

[Tableaux] Récupération de valeurs dans checkbox (suite)


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 9
    Points : 4
    Points
    4
    Par défaut [Tableaux] Récupération de valeurs dans checkbox (suite)
    bonsoir,
    il y a peu de temps plusieurs d'entre vous m'ont mis sur la voie pour arriver à recupérer des valeurs dans des checkbox.
    L'application consiste à affilier des personnes à des groupes (basée sur 3 tables : "contact" stockant les personnes, "grp" stockant les groupes d'appartenance, "grp_contact" stockant l'affiliation des personnes aux groupes)
    j'ai donc inserer dans un formulaire le script suivant (qui fonctionne) et qui me permet d'afficher grace à des checkbox, les groupes auxquels une personne est déjà affiliée...

    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
    <?php
       echo "<form action=\"modif_inscr_grp2.php\">\n";
       echo "<input type=hidden name=\"id_contact\" value=$id_contact>\n";
     
    //récuperation de tous les groupes 
    $sql = "SELECT id_grp, nom_grp FROM grp ORDER BY nom_grp ASC"; 
    $req = mysql_query($sql) or die(mysql_error().$sql); 
     
    while($data = mysql_fetch_assoc($req)) { 
       //On va voir si ce groupe est selectionné 
       $sql = "SELECT * FROM grp_contact WHERE id_contact = $id_contact AND id_grp = ".$data['id_grp']; 
       $req2 = mysql_query($sql) or die(mysql_error().$sql); 
       $checked = mysql_num_rows($req2) > 0; 
     
       //On affiche la checkbox 
       echo '<div>'; 
       echo '<input type="checkbox" 
                    name="grpsel[]" id="grpsel_'.$data['id_grp'].'" 
                    value="'.$data['id_grp'].'"
                    '.($checked?'checked="checked"':'').' />'; 
       echo '<label for="grpsel_'.$data['id_grp'].'">'.$data['nom_grp'].'</label>'; 
       echo '</div>';
    }
       echo "<input type=submit value=\"Modifier\">";
       echo "</form>"; 
    ?>
    ... en vue de pouvoir modifier les affiliations à l'aide de la page "modif_inscr_grp2.php" suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    require_once("..."); 
     
    mysql_select_db(...);
        $id_contact = $_GET["id_contact"];
        $id_grp = $_GET["grpsel"];
    $result=mysql_query("UPDATE grp_contact SET id_contact='$id_contact',id_grp='$id_grp' WHERE id_contact='$id_contact'");
         if (!$result) {
            echo "La mise à jour a échoué. Essayez plus tard<br>";
         } else {
    	header('Location: contact_details.php?id_contact='.$id_contact.'');
         }
         mysql_close();
    ?>
    mais ca ne marche pas et mieux, ça m'efface toutes les valeurs!
    comment puis-je récupérer corectement les modifications ? Où sont mes erreurs ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    $_GET['grpsel']est un tableau de valeurs. il faut le parcourir comme l'explique ce tutoriel

  3. #3
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Salut

    Si cela peut t'inspirer :

    Perso, j'utilise dans une de mes applications le script suivant pour modifier des checkbox récupérés :

    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
     
     
    $query = "SELECT * FROM matable where client='$client'"; 
    $result = mysql_query($query);
     
    while ($val = mysql_fetch_array($result)) 
    {
     
    ?>
     
    <form method="POST" action="updat.php3?client=<?$client?>">
     
    <input type="checkbox" name="ex2" value="1"<? if($val["ex2"]=="1")echo" CHECKED";?>>
    <input type="checkbox" name="ex3" value="1"<? if($val["ex3"]=="1")echo" CHECKED";?>>
    <input type="checkbox" name="ex4" value="1"<? if($val["ex4"]=="1")echo" CHECKED";?>>
    //.....etc</form>
    <?
     
    }
     
    ?>
    Et pour l’updat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $sql = "UPDATE matable SET ex2='$ex2', ex3='$ex3', ex4=’$ex4’WHERE client='$client'";
    C'est simpliste, certes !.....mais ça marche !
    ps & rappel : A noter l'espace aprés echo"_
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    merci pour ton script Alain31tl mais le pb est que les options (les groupes) sont stockées dans un table indépendante pour être plus aisément modifiables

    En appliquant le tutoriel j'arrive a récupérer les valeurs cochées lorsque je fais un echo sur la variable $id_grp[$i] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $id_contact = $_GET["id_contact"];
    $id_grp = $_GET["grpsel"];
     
    if($id_grp) {
    for ($i=0; $i<count($id_grp); $i++) {
    echo ($id_grp[$i]);
    }
    }
    mais je ne trouve pas la solution pour mettre à jour les changements effectués dans la table grp_contact : insérer les nouveaux groupes cochés, supprimer ceux décochés, laisser ceux déjà cochés.
    des suggestions ?

  5. #5
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Je vois par exemple que tu fais passer la variable dans ton lien en cas d'échec :

    header('Location: contact_details.php?id_contact='.$id_contact.'');
    Mais tu ne le fais pas dans ton formulaire.(?)
    Apparemment, c'est ton updat qui n'interprêterait pas cette variable justement.

    1ere Suggestion :
    Tu crée un page vierge "affiche.php" en prenant soin de modifier l'url de ton form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<form action=\"affiche.php\">\n";
    Et dans la page affiche.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?
    print ("=$id_contact");
    ?>
    Si rien ne s'affiche, ta variable n'est pas transmise, auquel cas modifie ton form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<form action=\"modif_inscr_grp2.php?id_contact=$id_contact\">\n";
    C'est une suggestion bien sûr, peut-être que le probléme est ailleurs...
    Mais au moins, ce sera testé. C'est toujours trés utile de faire des tests au fil de l'élaboration de ses sources.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

Discussions similaires

  1. [checkbox] Récupération des valeurs de checkbox
    Par chng001 dans le forum Struts 1
    Réponses: 13
    Dernier message: 07/09/2009, 20h31
  2. [Tableaux] recuperer valeurs dans checkbox
    Par lch07 dans le forum Langage
    Réponses: 14
    Dernier message: 05/01/2006, 15h06
  3. [Tableaux] récupération de valeurs cochées
    Par juanelcalor dans le forum Langage
    Réponses: 7
    Dernier message: 20/09/2005, 13h46
  4. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  5. Récupération de valeurs dans logiciel de bourse
    Par david0280 dans le forum MFC
    Réponses: 25
    Dernier message: 28/03/2005, 20h28

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