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 :

$_POST zappe un champ ? [PHP 7]


Sujet :

Langage PHP

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 033
    Points
    34 033
    Billets dans le blog
    14
    Par défaut $_POST zappe un champ ?
    Bonjour,

    Je me retrouve avec l'erreur suivante à l'envoi du formulaire :
    Notice: Undefined index: niveau in [mon chemin]/Ajouter.php on line 478
    La ligne 478 en question, pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $this->traiterDiplomeSuperieur($objEtudiant, intval($_POST['dernDipl']['id']), intval($_POST['dernDipl']['type']), 3,
    					intval($_POST['dernDipl']['niveau']), trim($_POST['dernDipl']['nom']), intval($_POST['dernDipl']['annee']),
    					intval($_POST['dernDipl']['idVille']), intval($_POST['dernDipl']['mention']));
    Un coup d'oeil au formulaire dans le navigateur :
    Code HTML : 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
    <select id="dernDipl[niveau]" name="dernDipl[niveau]" class="hidden selectLong">
    											<option value="">
    							I - Sans niveau ou niveau inconnu						</option>
    											<option value="">
    							1 - Niveau I (3ème cycle, supérieur à maîtrise)						</option>
    											<option value="">
    							2 - Niveau II (licence ou maîtrise)						</option>
    											<option value="">
    							3 - Niveau III (DUT, BTS, 1er cycle de l'ens.sup.)						</option>
    											<option value="">
    							4 - Niveau IV (BP, BT, bac, bac pro, bac techno)						</option>
    											<option value="">
    							5 - Niveau V (BEP, CAP, 1er degré CFPA, Diplôme national des brevets)						</option>
    											<option value="">
    							0 - SANS DIPLOME						</option>
    										</select>

    Bon... je me dis que c'est peut-être parce le champ est "hidden" ?

    Je print_r($_POST) et l'indice niveau est effectivement absent :
    [dernDipl] => Array
    (
    [type] => 12
    [nom] => Licence AES
    [id] => 215
    [annee] => 2018
    [nomVille] => Inconnue
    [idVille] =>
    [mention] => 0
    [estPlusHaut] => 1
    )
    Sauf que juste après, pour le plus haut diplôme, l'indice niveau est bien présent :
    [plusHautDipl] => Array
    (
    [type] => 0
    [niveau] =>
    [nom] =>
    [id] => 0
    [annee] =>
    [pays] => 0
    [nomVille] =>
    [idVille] => 0
    [mention] => 0
    )
    Ainsi d'ailleurs que pour les deux autres rubriques de diplôme !

    Pourtant, les 4 rubriques de diplôme supérieurs sont faits de la même manière. Exemple avec le niveau du plus haut diplôme :
    Code HTML : 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
    <select id="plusHautDipl[niveau]" name="plusHautDipl[niveau]" class="hidden selectLong">
    											<option value="">
    							I - Sans niveau ou niveau inconnu						</option>
    											<option value="">
    							1 - Niveau I (3ème cycle, supérieur à maîtrise)						</option>
    											<option value="">
    							2 - Niveau II (licence ou maîtrise)						</option>
    											<option value="">
    							3 - Niveau III (DUT, BTS, 1er cycle de l'ens.sup.)						</option>
    											<option value="">
    							4 - Niveau IV (BP, BT, bac, bac pro, bac techno)						</option>
    											<option value="">
    							5 - Niveau V (BEP, CAP, 1er degré CFPA, Diplôme national des brevets)						</option>
    											<option value="">
    							0 - SANS DIPLOME						</option>
    										</select>

    Je ne comprends pas pourquoi le niveau du dernier diplôme est absent et pas celui des autres diplômes !

    La seule différence que je vois est que le dernier diplôme dans le formulaire est renseigné (donc la partie de $_POST est valorisée) et pas les autres.
    Ceci expliquerait-il cela ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1-
    Citation Envoyé par CinePhil Voir le message
    ...c'est peut-être parce le champ est "hidden" ?...
    Attention de ne pas confondre "champs de type="hidden""* et "élément masqué" (avec display:none; ou visibility:hidden !

    Comment est définie la classe "hidden" ?

    * il n'y a pas de type="hidden" pour les <select>.

    2- Qu'espères-tu récupérer avec ce <select> "masqué" ?
    D'autant que : <option value=""> : toutes les value sont vide...

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 033
    Points
    34 033
    Billets dans le blog
    14
    Par défaut
    D'autant que : <option value=""> : toutes les value sont vide
    Bien vu !
    Je ne sais pas si le problème était dû à ça mais en l'ayant corrigé, mon niveau du dernier diplôme est bien apparu dans $_POST et je n'ai plus l'erreur.
    Merci.

    2- Qu'espères-tu récupérer avec ce <select> "masqué" ?
    Si le diplôme est un diplôme français, on choisit un type dans une liste et le niveau est connu automatiquement. Mais comme je n'ai pas de référence de tous les diplômes mondiaux, si le type choisi est un diplôme étranger, alors on doit indiquer de quel niveau est le diplôme, donc apparition automatique de la liste de sélection du niveau dans ce cas, grâce à Javascript.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoyer tous les champs d'une liste avec $_POST
    Par onlyonlylight dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2016, 11h24
  2. Renvoyer un champ de formulaire vers une nouvelle page avec $_POST
    Par randonneurvalaisan dans le forum Langage
    Réponses: 5
    Dernier message: 21/11/2015, 17h43
  3. Réponses: 0
    Dernier message: 21/04/2011, 16h27
  4. $_POST ou $_GET et le nom des champs
    Par Calambo dans le forum Langage
    Réponses: 7
    Dernier message: 05/02/2008, 11h10
  5. [Tableaux] récupération des champs par $_POST
    Par jeanfrancois dans le forum Langage
    Réponses: 3
    Dernier message: 11/05/2006, 17h22

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