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

PHP & Base de données Discussion :

Variable dans $_POST[]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2022
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2022
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Variable dans $_POST[]
    Bonjour,

    Je souhaite enregistrer les présences de personnes à un évènement.
    Pour cela, j'ai réalisé un formulaire qui contient pour chaque personne :
    • son id (input type hidden)
    • son nom (input type text)
    • son prenom (input type text)
    • 2 input de type radio pour le matin avec pour valeurs respectives 'absent' et 'présent'
    • 2 input de type radio pour l'après-midi avec pour valeurs respectives 'absent' et 'présent'


    Pour chaque 1/2 journée, les deux input 'radio' doivent donc avoir le même attribut 'name' mais il doit être différent pour chaque participant.
    Aussi, je donne la valeur de 'name' de manière dynamique en le composant d'un identifiant ('presMatin' ou 'PresAprem') précédé de l'ID de la personne.
    cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="radio" class="radioPres" name="'.$id.'presMatin" value="présent">
    <input type="radio" class="radioPres" name="'.$id.'presMatin" value="absent">
    etc...

    Pour enregistrer le formulaire dans ma base de données, je fais une boucle foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
        <?php $compteur= count($_POST['id']) ?>
     
        <?php for ($i=0 ; $i<$compteur ; $i++) :?>
           <?php $id = $_POST['id'][$i];?>
           <?php $nom = $_POST['nom'][$i];?>
           <?php $prenom = $_POST['prenom'][$i];?>
           <?php $presMatin = $_POST[$id.'presMatin'];?>
           <?php $presAprem = $_POST[$id.'presAprem'];?>
     
     
      <?php endfor;?>
    mais a priori, la méthode POST n'accepte pas ma syntaxe $_POST[$id.'presMatin']... Quelqu'un sait comment faire passer une variable dans $_POST[$var]?

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 112
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 112
    Points : 8 250
    Points
    8 250
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="radio" class="radioPres" name="'.$id.'presMatin" value="présent">
    <input type="radio" class="radioPres" name="'.$id.'presMatin" value="absent">
    C'est pas bon car ça te force à traiter le nom de la clef $_POST pour déterminer l'ID et la demie-journée.

    Fais plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <input type="radio" class="radioPres" name="people[<?= $id ?>][presMatin]" value="présent">
    <input type="radio" class="radioPres" name="people[<?= $id ?>][presMatin]" value="absent">
     
    <input type="radio" class="radioPres" name="people[<?= $id ?>][presAprèsMidi]" value="présent">
    <input type="radio" class="radioPres" name="people[<?= $id ?>][presAprèsMidi]" value="absent">
    Ainsi $_POST contiendra un tableau $_POST['people'] de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [
    	'123' => ['presMatin' => 'présent', 'presAprèsMidi' => 'présent'],
    	'234' => ['presMatin' => 'absent', 'presAprèsMidi' => 'absent'],
    	'345' => ['presMatin' => 'absent', 'presAprèsMidi' => 'présent'],
    	...
    ]
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2022
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2022
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci Séb. pour ta réponse,

    Je ne suis pas très a l'aise avec les tableaux de tableaux... peux tu me dire comment je récupère la valeur dans $_POST?
    J'ai fait un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $presMatin = $_POST['people'][$id]['presMatin']
    mais ça ne fonctionne pas.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2022
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2022
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    En fait, je crois que je me retourve toujours avec le même problème : $_POST n'accepte pas la variable $id.
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['people'][$id]['presMatin']
    ça me renvoie 'Undefined index: 52' (52 est l'ID du 1er "people")
    Mais si je remplace $ID par 52 ça fonctionne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['people'][52]['presMatin']

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2022
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2022
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    J'ai fait un test en remplaçant $id par le $nom... et ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['people'][$nom]['presMatin']
    C'est donc le format de la variable qui bloque ('int' pour $id, 'text' pour le $nom)...
    Je n'y comprend plus rien ! HELP

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 112
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 112
    Points : 8 250
    Points
    8 250
    Billets dans le blog
    17
    Par défaut
    Fais un dump pour voir ce que ta variable a dans le ventre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <pre><?php var_dump($_POST) ?></pre>
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2022
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2022
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Alors, voici le var_dump ($_POST) :
    Pour chaque "people" j'ai deux messages d'erreur qui n’apparaissent pas si je remplace $id par $ nom :
    • Notice: Undefined index: 231 in [...] on line 33
    • Notice: Trying to access array offset on value of type null in [...] on line 33


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    array (size=7)
      'groupe' => string 'Sélectionner' (length=13)
      'datePres' => string '' (length=0)
      'id' => 
        array (size=10)
          0 => string ' 231' (length=4)
          1 => string ' 232' (length=4)
          2 => string ' 233' (length=4)
          3 => string ' 234' (length=4)
          4 => string ' 235' (length=4)
          5 => string ' 236' (length=4)
          6 => string ' 237' (length=4)
          7 => string ' 238' (length=4)
          8 => string ' 239' (length=4)
          9 => string ' 240' (length=4)
      'nom' => 
        array (size=10)
          0 => string 'People1' (length=7)
          1 => string 'People2' (length=7)
          2 => string 'People3' (length=7)
          3 => string 'People4' (length=7)
          4 => string 'People5' (length=7)
          5 => string 'People6' (length=7)
          6 => string 'People7' (length=7)
          7 => string 'People8' (length=7)
          8 => string 'People9' (length=7)
          9 => string 'People10' (length=8)
      'prenom' => 
        array (size=10)
          0 => string 'PEOPLE1' (length=7)
          1 => string 'PEOPLE2' (length=7)
          2 => string 'PEOPLE3' (length=7)
          3 => string 'PEOPLE4' (length=7)
          4 => string 'PEOPLE5' (length=7)
          5 => string 'PEOPLE6' (length=7)
          6 => string 'PEOPLE7' (length=7)
          7 => string 'PEOPLE8' (length=7)
          8 => string 'PEOPLE9' (length=7)
          9 => string 'PEOPLE10' (length=8)
      'stagiaire' => 
        array (size=10)
          231 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)
          232 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)
          233 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)
          234 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)
          235 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)
          236 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)
          237 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)
          238 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)
          239 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)
          240 => 
            array (size=2)
              'presMatin' => string 'présent' (length=8)
              'presAprem' => string 'présent' (length=8)

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 112
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 112
    Points : 8 250
    Points
    8 250
    Billets dans le blog
    17
    Par défaut
    Je comprends que $_POST['id'] est un tableau d'ID.

    Problème, dans ce tableau il y a une espace avant chaque ID. Si tu utilises ces valeurs pour matcher avec le tableau $_POST['stagiaire'] ça risque de poser problème.


    Autre point, pourquoi tout séparer, tes noms/prénoms/présences pourraient être dans une même structure. Revois ton formulaire. Exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Nom/prénom :
    <input type="text" name="people[<?= $id ?>][nom]" value="...">
    <input type="text" name="people[<?= $id ?>][prenom]" value="...">
     
    Matinée :
    <input type="radio" name="people[<?= $id ?>][matin]" value="absent"> Absent
    <input type="radio" name="people[<?= $id ?>][matin]" value="présent"> Présent
     
    Après-midi :
    <input type="radio" name="people[<?= $id ?>][aprèsMidi]" value="absent"> Absent
    <input type="radio" name="people[<?= $id ?>][aprèsMidi]" value="présent"> Présent
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2022
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2022
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    J'ai as eu le temps de tester mais c'est forcément cet espace que le bloque !
    Merci Séb. pour le coup de main. Je mettrai tes conseils en pratique pour mon tableau.
    MERCI!

Discussions similaires

  1. Peut on mettre une variable dans un $_POST?
    Par binco dans le forum Langage
    Réponses: 4
    Dernier message: 15/04/2016, 23h21
  2. Aucune variable dans $_POST
    Par Anduriel dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2006, 17h06
  3. [SQL] Déclarer ma variable en $_POST dans ce cas
    Par arti2004 dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 23/05/2006, 19h52
  4. Réponses: 9
    Dernier message: 12/05/2006, 09h06
  5. $_POST[variable] ou $variable dans lien de confimation ?
    Par psychoBob dans le forum Langage
    Réponses: 6
    Dernier message: 09/05/2006, 14h08

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