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

Adhe -  
 Adhe -
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

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

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

    Xavier
    0
  2. Adhe
     
    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... !
    0
  3. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    OK.
    Donc c'est tout simple, dans cette boucle, tu as déjà la clé dans la variable $key !
    0
  4. Adhe
     
    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());
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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
    0
  7. Adhe
     
    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
    0
  8. Adhe
     
    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
    0