Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1171 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  checkbox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

checkbox

n°1461686
Ma' Dalton
Posté le 20-10-2006 à 21:42:57  profilanswer
 

Bonjour,
 
J'aurai besoin de récupérer des données en utilisant les checkbox mais dans les 2 sens :
 
- Cocher dans une liste apparente, le nom des personnes que je souhaite ajouter à ma requête d'insertion.
- Cocher également sur chacune d'entre elle sur la ligne  3 autre case checkbox qui m'indique le "statut" de ces personnes.
 
Voici mon code du tableau de sélection :
 
    <?php  
       
   // Requete de sélection dans la base :  infos adhérents = Table NAGEURS
   $sql = "SELECT nom, prenom  FROM nageurs WHERE ID_club='$ID_club_EM' ORDER BY nom ASC";
   $result = @mysql_query($sql);
   $nombre_resultat = @mysql_num_rows($result);
 
       
      for ($i=0;$i<$nombre_resultat;$i++) {  
              // On récupère les valeurs :
                  $nom = @mysql_result($result,$i,'nageurs.nom');
                  $prenom = @mysql_result($result,$i,'nageurs.prenom');
           
       
                         
?>
    <tr>  
      <td> <div align="center">  
          <input type="checkbox" name="checkbox[]" value="<?=$ID_nageur ?>">
        </div></td>
      <td><div align="left"><font color="#3E3E7D" size="2" face="Arial, Helvetica, sans-serif"><? echo "$nom, $prenom"; ?></font></div></td>
      <td><div align="center">  
          <input type="checkbox" name="checkbox_encadrant[]" value="encadrant">
        </div></td>
      <td><div align="center">  
          <input type="checkbox" name="checkbox_ouvreur[]" value="ouvreur">
        </div></td>
      <td><div align="center">  
          <input type="checkbox" name="checkbox_serre_file[]" value="serre_file">
        </div></td>
      <td><div align="center">  
          <input name="nb_descente" type="text" size="5" maxlength="2">
        </div></td>
    </tr>
    <?
}
 ?>
 
 
et voici mon code de récupération avant insertion :
 
 
// On récupère la valeur MM_insert4 envoyé par le formulaire ------------------------------------------------------- 4
      $MM_insert4 = $HTTP_POST_VARS["MM_insert4"];
      // Si cette valeur existe , c'est qu'on a posté via le formulaire
      if ($MM_insert4=="form4" )
      {
                               
   // On récupère toutes les valeurs passées dans le formulaire
      $post_ID_carnet_NEV= $HTTP_POST_VARS['ID_carnet_NEV'];
 
   for ($u = 0; $u < count($checkbox); $u++)  
         {  
         $post_ID_nageur= $checkbox[$u];
         $post_encadrant= $checkbox_encadrant[$u];
         $post_ouvreur= $checkbox_ouvreur[$u];
         $post_serre_file= $checkbox_serre_file[$u];
         $post_nb_descente= $HTTP_POST_VARS['nb_descente'];
 
                         
 
   // On crée la requete d'insertion
   $sql_participants_sortie_club = "INSERT INTO carnet_nev_participants (ID_carnet_NEV, ID_nageur, encadrant, ouvreur, serre_file, nb_descente)
   VALUES ('$post_ID_carnet_NEV', '$post_ID_nageur', '$post_encadrant', '$post_ouvreur', '$post_serre_file', '$post_nb_descente')";
                         
   // On éxécute la requete
   @mysql_query($sql_participants_sortie_club);
   
                                                 }
                                                 
       
    } // fin du post formulaire

mood
Publicité
Posté le 20-10-2006 à 21:42:57  profilanswer
 

n°1461695
nargy
Posté le 20-10-2006 à 21:58:22  profilanswer
 

Remarques sur la requête SQL:
http://php.net/mysql_real_escape
http://php.net/get_magic_quotes_gpc
http://php.net/get_magic_quotes_runtime
http://php.net/stripslashes
ORDER BY est ASC par défaut
 
Ajoute une balise [ code ] dans ton poste pour qu'on puisse te donner les numéros de ligne où ça coince.

n°1461719
omega2
Posté le 20-10-2006 à 22:47:10  profilanswer
 

@ sert à ne pas afficher le message d'erreur éventuellement retourné par la fonction.
Si tu le mets partout, comment peux tu savoir si ca merde quelque part ou si tout se passe bien?
 
PS : Vu l'absence de balise code pour différencier le code et les questions, je n'ai pas poussé mon analyse plus loin.

n°1462404
Ma' Dalton
Posté le 22-10-2006 à 13:34:32  profilanswer
 

Voici mon code du tableau de sélection :  
 

Code :
  1. <?php 
  2.      
  3.    // Requete de sélection dans la base :  infos adhérents = Table NAGEURS  
  4.    $sql = "SELECT nom, prenom  FROM nageurs WHERE ID_club='$ID_club_EM' ORDER BY nom ASC";
  5.    $result = @mysql_query($sql);
  6.    $nombre_resultat = @mysql_num_rows($result);
  7.      
  8.       for ($i=0;$i<$nombre_resultat;$i++) { 
  9.               // On récupère les valeurs :  
  10.                   $nom = @mysql_result($result,$i,'nageurs.nom');
  11.                   $prenom = @mysql_result($result,$i,'nageurs.prenom');
  12.          
  13.      
  14.                        
  15. ?>
  16.     <tr> 
  17.       <td> <div align="center"> 
  18.           <input type="checkbox" name="checkbox[]" value="<?=$ID_nageur ?>">
  19.         </div></td>
  20.       <td><div align="left"><font color="#3E3E7D" size="2" face="Arial, Helvetica, sans-serif"><? echo "$nom, $prenom"; ?></font></div></td>
  21.       <td><div align="center"> 
  22.           <input type="checkbox" name="checkbox_encadrant[]" value="encadrant">
  23.         </div></td>
  24.       <td><div align="center"> 
  25.           <input type="checkbox" name="checkbox_ouvreur[]" value="ouvreur">
  26.         </div></td>
  27.       <td><div align="center"> 
  28.           <input type="checkbox" name="checkbox_serre_file[]" value="serre_file">
  29.         </div></td>
  30.       <td><div align="center"> 
  31.           <input name="nb_descente" type="text" size="5" maxlength="2">
  32.         </div></td>
  33.     </tr>
  34.     <?
  35. }
  36. ?>


 
et voici mon code de récupération avant insertion :  
 

Code :
  1. // On récupère la valeur MM_insert4 envoyé par le formulaire ------------------------------------------------------- 4  
  2.       $MM_insert4 = $HTTP_POST_VARS["MM_insert4"];
  3.       // Si cette valeur existe , c'est qu'on a posté via le formulaire  
  4.       if ($MM_insert4=="form4" )
  5.       {
  6.                              
  7.    // On récupère toutes les valeurs passées dans le formulaire  
  8.       $post_ID_carnet_NEV= $HTTP_POST_VARS['ID_carnet_NEV'];
  9.    for ($u = 0; $u < count($checkbox); $u++) 
  10.          { 
  11.          $post_ID_nageur= $checkbox[$u];
  12.          $post_encadrant= $checkbox_encadrant[$u];
  13.          $post_ouvreur= $checkbox_ouvreur[$u];
  14.          $post_serre_file= $checkbox_serre_file[$u];
  15.          $post_nb_descente= $HTTP_POST_VARS['nb_descente'];
  16.                        
  17.    // On crée la requete d'insertion  
  18.    $sql_participants_sortie_club = "INSERT INTO carnet_nev_participants (ID_carnet_NEV, ID_nageur, encadrant, ouvreur, serre_file, nb_descente)
  19.    VALUES ('$post_ID_carnet_NEV', '$post_ID_nageur', '$post_encadrant', '$post_ouvreur', '$post_serre_file', '$post_nb_descente')";
  20.                        
  21.    // On éxécute la requete  
  22.    @mysql_query($sql_participants_sortie_club);
  23.    
  24.                                                  }
  25.                                                
  26.      
  27.     } // fin du post formulaire

n°1462407
Ma' Dalton
Posté le 22-10-2006 à 13:37:37  profilanswer
 


OK merci Omega2 pour l'astuce du @ ! :p  
 
Mon soucis réside dans le lien entre les valeurs apporté aux checkbox entre les lignes 19 et 32 du premier code et le for qui récupère les données entre les lignes 10 et 16 du 2ème code


Message édité par Ma' Dalton le 22-10-2006 à 13:39:04
n°1463111
omega2
Posté le 23-10-2006 à 15:21:48  profilanswer
 

Si je comprend bien, dans le premier script, t'as une boucle qui cré des séries de checkbox et dans le second une seconde boucle qui relit le contenu de ces checkbox là.
 
Vu que les navigateur ne retourne pas de valeur pour les checkbox décoché (pas même une valeur vide) comment espéres tu savoir laquelle n'est pas coché alors que tu mets la même valeur pour toutes les checkbox qui ont le même nom? Avec ton code actuel le mieux que tu peux savoir c'est combien ont été coché.
 
Solution : donner une valeur numérique (celui de l'id du nageur) à chaque checkbox de même nom. De cette maniére, il suffit de vérifier si l'id de chaque nageur est contenu par le tableau correspondant à une série de checkbox (par exemple "checkbox_ouvreur[]" ) pour savoir si la checkbox était ou non coché.

n°1463538
Ma' Dalton
Posté le 23-10-2006 à 21:09:09  profilanswer
 

Bonsoir Omega2,
Alors j'essaye de te suivre ....
J'ai inclu une valeur numérique aux checkbox de même nom, afin de les différencier , c'est ça ?
 
[ code ]
    <?php  
   
 // Requete de sélection dans la base :  infos adhérents = Table NAGEURS
 $sql = "SELECT nom, prenom, ID_nageur  FROM nageurs WHERE ID_club='$ID_club_EM' ORDER BY nom ASC";
 $result = @mysql_query($sql);
 $nombre_resultat = @mysql_num_rows($result);
 
   
  for ($i=0;$i<$nombre_resultat;$i++) {  
      // On récupère les valeurs :
      $nom = @mysql_result($result,$i,'nom');
      $prenom = @mysql_result($result,$i,'prenom');
      $ID_nageur_sortie = @mysql_result($result,$i,'ID_nageur');
   
         
?>
    <tr>  
      <td> <div align="center">  
          <input type="checkbox" name="checkbox[]" value="<? echo "$ID_nageur_sortie"; ?>">
        </div></td>
      <td><div align="left"><font color="#3E3E7D" size="2" face="Arial, Helvetica, sans-serif"><? echo "$nom, $prenom"; ?></font></div></td>
      <td><div align="center">  
          <input type="checkbox" name="checkboxE[]" value="<? echo "$ID_nageur_sortie"; ?>">
        </div></td>
      <td><div align="center">  
          <input type="checkbox" name="checkboxO[]" value="<? echo "$ID_nageur_sortie"; ?>">
        </div></td>
      <td><div align="center">  
          <input type="checkbox" name="checkboxS[]" value="<? echo "$ID_nageur_sortie"; ?>">
        </div></td>
      <td><div align="center">  
          <input name="nb_descente[]" type="text" size="5" maxlength="2">
        </div></td>
    </tr>
    <?
}
 ?>
[ / code ]
 
 
 
[ code ]
        // On récupère toutes les valeurs passées dans le formulaire
 
        for ($u = 0; $u < count($checkbox); $u++)  
        {  
        $post_ID_carnet_NEV= $HTTP_POST_VARS['ID_carnet_NEV']; // ok
        $post_ID_nageur= $checkbox[$u]; // ok
        $post_encadrant= $checkboxE[$u]; // encadrant
        $post_ouvreur= $checkboxO[$u]; // Ouvreur
        $post_serre_file= $checkboxS[$u]; // Serre file
        $post_nb_descente= $HTTP_POST_VARS['nb_descente[$u]'];
 
        // On crée la requete d'insertion
        $sql_participants_sortie_club = "INSERT INTO carnet_nev_participants (ID_carnet_NEV, ID_nageur, encadrant, ouvreur, serre_file, nb_descente)
         VALUES ('$post_ID_carnet_NEV', '$post_ID_nageur', '$post_encadrant', '$post_ouvreur', '$post_serre_file', '$post_nb_descente')";
         
        // On éxécute la requete
        @mysql_query($sql_participants_sortie_club);
        }
[ / code ]
 
 
ce que tu m'as dis marche,
J'ai les 2 première valeurs qui s'insert dans la bdd (  $post_ID_carnet_NEV et $post_ID_nageur)
mais maintenant .... comment récupérer les autres ?
La requête s'effectue effectivement exactement le nb de personne coché, pas de soucis de ce côté là, mais le contenu des insertion n'est pas complet sur à partir de la 2ème .... donc y a un bug ...


Message édité par Ma' Dalton le 23-10-2006 à 21:12:00
n°1463897
omega2
Posté le 24-10-2006 à 11:26:47  profilanswer
 

lit la documentation sur les fonctions in_array ( http://fr2.php.net/manual/fr/function.in-array.php ) array_flip ( http://fr2.php.net/manual/fr/function.array-flip.php )
Ensuite essaye d'adapter ton code en utilisant une de ces deux fonctions.
A noter que print_r($tab) permet de savoir ce que contient un tableau. Utile pour comprendre ce qui se passe.

n°1465032
Ma' Dalton
Posté le 25-10-2006 à 19:54:40  profilanswer
 

j'vais essayer , merci :d

n°1465725
Ma' Dalton
Posté le 26-10-2006 à 22:33:21  profilanswer
 

Merci Omega2, la solution était bien en utilisant le in_array !
merci

mood
Publicité
Posté le 26-10-2006 à 22:33:21  profilanswer
 

n°1658264
makomjul
SOIT PLUS FORT
Posté le 14-12-2007 à 13:18:55  profilanswer
 

Ma'Daltom tu peut m'envoyer le reste de ton code. merci

n°1658265
makomjul
SOIT PLUS FORT
Posté le 14-12-2007 à 13:21:16  profilanswer
 

OU bien un autre  pouras m'aide en m'envoyeant le reste du code de Ma'Dalton si peut le faire

n°1658275
Elmoricq
Modérateur
Posté le 14-12-2007 à 13:30:07  profilanswer
 

Pelle d'or of teh day. [:pingouino]
 
Si tu veux du code, tu prends tes mains et ton clavier, un beau notepad, et tu pianotes comme un grand...

n°1658276
Elmoricq
Modérateur
Posté le 14-12-2007 à 13:30:45  profilanswer
 

Ce sujet a été fermé par Elmoricq


Aller à :
  FORUM HardWare.fr
  Programmation
  PHP

  checkbox

 

Sujets relatifs
Tableau avec des checkboxCheckbox
[PHP] Récupérer et lancer une requête à partir d'une checkbox[Resolu][DataGridView] Action quand on change la valeur d'une CheckBox
Soucis : Plusieurs CHECKBOX ..COMMENT FAIRE? pour renvoyer valeur diffUtiliser des CheckBox sur une feuille excel
Bug checkage de checkbox ?Lien http et checkbox
[PHP] Problème de checkbox dans une session 
Plus de sujets relatifs à : checkbox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR