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 :

Cases à cocher non cochées


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Points : 98
    Points
    98
    Par défaut Cases à cocher non cochées
    Bonjour tout le monde,

    Je souhaite récupérer la valeur d'une case à cocher sous la forme 1 = cochée, 0 = décochée.

    Comme on ne peut récupérer la valeur de la check lorsqu'elle est cochée, j'essaye de me servir de javascript pour changer la valeur d'un champ caché, lorsqu'on clique sur la case.
    Or la valeur ne change pas...
    Voici le 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
    if(mysql_num_rows($listeAud)>0) {
    echo '<div class="form_item"><table><tr>';
    echo '<th>#</th><th>Nom</th><th>Prénom</th><th>Présent</th></tr>';
    while($row=mysql_fetch_assoc($listeAud)) {
    $checked='';
    echo '<tr>';
    echo '<td><div class="form_element cf_text"> <span class="cf_text">'.$i.'</span> </div></div></td>';
    echo '<td><div class="form_element cf_text"> <span class="cf_text">'.$row["nomAuditeur"].'</span></div></div></td>';
    echo '<td><div class="form_element cf_text"> <span class="cf_text">'.$row["prenomAuditeur"].'</span></div></div></td>';
    echo '<td><div class="form_element cf_checkbox"><div class="float_left">';
    if($row["AuditeurPresent"]==1)  $checked=' checked ';
    echo '<input type="hidden" name="check[]" value="0"/>';
    echo '<input title="" class="radio" id="check01" name="present[]" type="checkbox" '.$checked.' onClick="this.PlanSaisiePresences.check[].value=1;"/>';
    echo '<input type="hidden" name="idAuditeur[]" value="'.$row["idAuditeur"].'"/>';
    echo '<input type="hidden" name="idCours" value="'.$idCours.'"/>';
    echo '<input type="hidden" name="nb" value="'.$i.'"/>';
    echo '</div></div></td>';
    echo '</tr>';
    $i++;
    }
    echo '</table>';
    echo '<input value="Valider" name="button_7" type="submit" />';
    }
    Et le print_r($_POST) me renvoit :
    Array ( [maj] => 1 [check] => 0, 0 [idAuditeur] => 8, 1 [idCours] => 41 [nb] => 2 [present] => on [button_7] => Valider [e42cfadacb3b7f4ccf5051e67372db07] => 1 [1cf1] => 0c914133c26dc22f9a85c6147cfda6db [chronoformname] => PlanSaisiePresences )
    C'est pour valider des présences à un cours, donc il me faut une valeur oui/non. Une autre idée ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Bonjour,
    Je ne comprends pas trop ton souci en fait, pourquoi ne pas faire :

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input type="checkbox" name="present[]" value="el1">
    <input type="checkbox" name="present[]" value="el2">
    <input type="checkbox" name="present[]" value="el3">
    <input type="checkbox" name="present[]" value="el4">
    Puis coté récupération via php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(isset($_POST['present']))
    {
       foreach ($_POST['present'] as $val)
      {
          echo $val." est présent <br />";
         //ou tu fais ta requete sql d'update de la présence en bdd
     
      }
    }
    Puisque par bon sens, une checkbox n'a que deux valeurs possibles donc suffit de savoir si c'est cochée ou non

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Points : 98
    Points
    98
    Par défaut
    Ma liste d'auditeurs est dynamique, je ne sais pas à l'avance combien il y aura de cases à cocher, ça dépend des formations.
    Si j'utilise une simple méthode la variable POST["present"] ne me renvoie que les cases cochées, je ne peux donc pas récupérer les auditeurs absents.
    Voici le traitement fait pour l'insertion (ou la mise à jour) des présences :

    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
    $maj=$_POST["maj"];
     
    $idCours=$_POST["idCours"];
    $nb=$_POST["nb"]-1;
    $idAuditeur = explode(", ", $_POST["idAuditeur"]);
    $present = explode(", ", $_POST["present"]);
    $ipMAJ=$_SERVER["REMOTE_ADDR"];
    // si saisie des présences pour la première fois
    if($maj==0) {
    for ($i=0;$i<=$nb;$i++){
    $sql=mysql_query("INSERT INTO sg_auditeur_cours VALUES('$idAuditeur[$i]', '$idCours', '$present[$i]', '', now(), '$ipMAJ')")or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
     
    }
    // Mise à jour table sg_cours pour indiquer des des présences sont saisies et verrouiller le cours
     
    $sql=mysql_query("UPDATE sg_cours SET presences=1 WHERE idCours='$idCours'")or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
    }
    //si mise à jour présences
    else {
    	for ($i=0;$i<=$nb;$i++){
    $sql=mysql_query("UPDATE sg_auditeur_cours SET AuditeurPresent='$present[$i]', dateMAJ=now(), ipMAJ='$ipMAJ' WHERE idAuditeur='$idAuditeur[$i]' AND idCours='$idCours'")or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
    }
    }
    Si j'utilise la méthode classique, si je coche 4 cases par exemple, las 4 premiers auditeurs seront marqués présents, or si c'est par exemple le 2e, le 5e le 6e et le 8e qui sont présents ça pose problème...
    D'où le besoin de récupérer un tableau avec les valeurs 1 ET 0 dans ma variable present[].
    Et je ne veux pas mettre de boutons radio ou autres, mes utilisateurs doivent juste avoir à cocher/décocher.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Bonjour,
    Dans ce cas, tu peux très bien rajouter un bout de code qui met toutes les personnes de ta formation sur le statut "absent" avant de passer les présents à présent.

    En gros:
    ->Tu mets tout le monde à absent
    ->Tu récupères la liste des présents
    ->Tu update toutes les personnes récupérées (qui sont donc en absent pour le moment) au statut "présent"

    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
     
    //requete de mise à jour des personnes au statut "absent" pour ta formation
    $requete="ta_requete_de_maj_a_absent";
    @mysql_query($requete);
    if(isset($_POST['present']))
    {
       foreach ($_POST['present'] as $val)
      {
          echo $val." est présent <br />";
         //ou tu fais ta requete sql d'update de la présence en bdd
        $requete="update personne set statut=1 where personne_id='".$val."'";
        @mysql_query($requete);
     
      }
    }

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Points : 98
    Points
    98
    Par défaut
    Merci de ta réponse, je ne l'avais pas vue, la notification étant désactivée par défaut.
    J'ai finalement laissé tombé le système de cases à cocher au profit de listes multiples et je bascule les auditeurs d'une liste à l'autre..
    Merci

Discussions similaires

  1. [XL-2010] Case à cocher non mouvante après Affichage de colonnes masquées
    Par Julien91080 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/03/2015, 11h28
  2. Réponses: 7
    Dernier message: 20/05/2014, 20h28
  3. affecter une valeur à une case à cocher non cochée
    Par gastoncs dans le forum Langage
    Réponses: 4
    Dernier message: 29/07/2010, 17h19
  4. Cases à cocher : liées à un champs non boolean
    Par Tententai dans le forum Access
    Réponses: 4
    Dernier message: 08/08/2006, 17h21
  5. Réponses: 14
    Dernier message: 20/07/2006, 10h37

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