Comment récupérer la valeur d'une clé ?

Bonjour,

je souhaite enregistrer la liste des élèves présents/absents d'une classe à l'aide du formulaire ci-dessous :

<form method='POST' action='VerifVar2.php'><table width= border=0 align=center><tr>
<td width=100 bgcolor='#CCCCCC' div align=left><input type='text' name='RefEleve_260[]' value=260>
<td width=100 bgcolor='#CCCCCC' div align=center> <input type='text' name='idDuCours_260[]' value=205 />
<td width=100 bgcolor='#CCCCCC' div align=center><select name='PresentAbsent_260[]' size=3>
<option selected='selected'>Present</option>
<option>Absent</option>
<option>Retard</option>
</select></td>
<td width=100 bgcolor='#CCCCCC' div align=center> <input type='text' name='remarques_260[]' value=19-10-2010 /></td>
</td>
</tr>
<td width=100 bgcolor='#CCCCCC' div align=left><input type='text' name='RefEleve_263[]' value=263>
<td width=100 bgcolor='#CCCCCC' div align=center> <input type='text' name='idDuCours_263[]' value=205 />
<td width=100 bgcolor='#CCCCCC' div align=center><select name='PresentAbsent_263[]' size=3>
<option selected='selected'>Present</option>
<option>Absent</option>
<option>Retard</option>
</select></td>
<td width=100 bgcolor='#CCCCCC' div align=center> <input type='text' name='remarques_263[]' value=19-10-2010 /></td>
</td>
</tr></table><br><div align='center'><input type='submit' value='OK' ></div><br></form>

Dans la form VerifVar2.php, je récupère les variables postées avec le code :

foreach ($_POST as $key => $value) {
// echo "<b>{$value} </b></br>";
$tab_info = $value;
$info1 = $tab_info[0];
//$message = "<b>$key = $info1</b><br>";
echo $message;
}

A présent je voudrai récupérer la valeur de chaque clé afin d'enregistrer les informations pour chacun des élèves dans les champs de ma base 'RefEleve', 'idDuCours','PresentAbsent,'remarques' .

Pour cela, je dois récupérer la valeur des clés mais je ne vois pas comment m'y prendre.

Auriez vous une idée ?

Merci d'avance à tous ceux ou celles qui pourraient m'aiguiller.

Etienne

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    De quelles clés parles-tu ?
    Sont-ce les 260 et 263 des extraits de code que tu donnes ?

    Xavier
    1. Bonjour Xavier,

      tout d'abord merci pour ton attention.

      avec le code :
      foreach ($_POST as $key => $value) {
      // echo "<b>{$value} </b></br>";
      $tab_info = $value;
      $info1 = $tab_info[0];
      //$message = "<b>$key = $info1</b><br>";
      echo $message;
      }

      je reçois un flux de variables qui ressemble à ça (ici pour 2 élèves n° 260 et n°263):

      RefEleve_260 = 260
      idDuCours_260 = 206
      PresentAbsent_260 = Present
      remarques_260 = 19-10-2010

      RefEleve_263 = 263
      idDuCours_263 = 206
      PresentAbsent_263 = Present
      remarques_263 = 19-10-2010

      Ce que j'appelle les clés c'est :
      RefEleve_N°DeLEleve
      idDuCours_N°DeLEleve
      PresentAbsent_N°DeLEleve
      remarques_N°DeLEleve

      le N°DeLEleve change pour chaque élève ainsi que les valeurs (des clés qui sont les valeurs placées après le = dans le flux des variables)

      Désolé, je fais de mon mieux pour essayer de me faire comprendre... !
      1. OK.
        Donc c'est tout simple, dans cette boucle, tu as déjà la clé dans la variable $key !
        1. Oui c'est sans doute évident, mais je ne sais pas comment je peux isoler la valeur de chaque clé pour les enregistrer.

          par exemple pour l'élève 260, j'ai les infos :

          RefEleve_260 = 260
          idDuCours_260 = 206
          PresentAbsent_260 = Present
          remarques_260 = 19-10-2010

          Question, comment faire pour retrouver dans mon tableaux de variable
          la valeur 260 qui correspond à la clé RefEleve_260
          la valeur 206 qui correspond à la clé idDuCours_260
          la valeur Present qui correspond à la clé PresentAbsent_260
          la valeur 19-10-2010 qui correspond à la clé remarques_260

          Le but c'est d'affecter ces valeurs aux variables :
          '$RefEleve','$idDuCours','$PresentAbsent','$remarques'
          afin des les enregistrer dans les champs de ma base avec une requête de type :
          $sql = "INSERT INTO interface_nom_classe (nomdelaclasse) VALUES ( '$RefEleve','$idDuCours','$PresentAbsent','$remarques') " ;
          $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
          1. D'aaaaccord, je comprends mieux. Effectivement ça demande un peu de remue-méninge :)
            A priori, rien ne nous assure que le moteur php va lister les variables POST dans le bon ordre.

            Je te propose donc de créer un nouveau tableau, que tu reparcourras ensuite.
            Comme ceci :
            $eleves = array(); 
            foreach ($_POST as $key => $value) { 
                $eleve_temp = explode("_", $key); 
                $id_temp = $eleve_temp[1]; 
                if (!isset($eleves[$id_temp])) 
                    $eleves[$id_temp] = array(); 
            
                $eleves[$id_temp][$eleve_temp[0]] = $value; 
            
            
                // echo "<b>{$value} </b></br>"; 
                $tab_info = $value; 
                $info1 = $tab_info[0]; 
                //$message = "<b>$key = $info1</b><br>"; 
                echo $message; 
            }

            Puis :
            foreach ($eleves as $unEleve) 
            { 
                $RefEleve = $unEleve['RefEleve']; 
                $idDuCours = $unEleve['idDuCours']; 
                $PresentAbsent = $unEleve['PresentAbsent']; 
                $remarques = $unEleve['remarques']; 
            
                $sql = "INSERT INTO interface_nom_classe (nomdelaclasse) VALUES ( '$RefEleve','$idDuCours','$PresentAbsent','$remarques') " ; 
                $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
            }


            Xavier
            1. Merci Xavier pour ton aide.

              Le problème n'est pas encore résolu, car à la place des valeurs des clés, j'obtiens le résultat 'Array' pour chacune des variables
              $RefEleve
              $idDuCours
              $PresentAbsent
              $remarques
              1. Re !

                pour récupérer la valeur de la clé, j'ai modifié la 2ème partie de code comme suit :

                foreach ($eleves as $unEleve)
                {
                $RefEleve = $unEleve['RefEleve'];
                $tab_info = $RefEleve;
                $RefEleve = $tab_info[0];

                $idDuCours = $unEleve['idDuCours'];
                $tab_info = $idDuCours;
                $idDuCours = $tab_info[0];

                $PresentAbsent = $unEleve['PresentAbsent'];
                $tab_info = $PresentAbsent;
                $PresentAbsent = $tab_info[0];

                $remarques = $unEleve['remarques'];
                $tab_info = $remarques;
                $remarques = $tab_info[0];
                $sql = "INSERT INTO interface_nom_classe (nomdelaclasse) VALUES ( '$RefEleve','$idDuCours','$PresentAbsent','$remarques') " ;
                $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                }

                et ça marche !!!!

                je te remercie infiniment

                Discussions similaires

                cle wifi pour tv

                5 réponses