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 :

Undefined index insertion données formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut Undefined index insertion données formulaire
    Bonjour à tous,

    Avant d'énoncer mon problème, je tiens à préciser que j'ai cherché et re-cherché sur la toile la solution à mon problème. J'ai bien sûr trouvé beaucoup de choses sur "undefined index" assorties de beaucoup de "isset", mais rien qui ne corresponde précisément à ma recherche (ou alors ça m'a échappé ce qui est possible aussi ;-)

    Donc :

    J'ai un formulaire sur un site web dont les données sont insérées en base via une requête préparée.
    Les champs de ce formulaire ne sont pas tous obligatoires.

    Ci-dessous le script PHP pour insertion des données :

    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
     
    <?php
     
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=event_is_yours', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
     
    $req = $bdd->prepare('INSERT INTO kiwi(nom, prenom, email, fonction, societe, presenceEven, venueAccomp, nomAccomp, prenomAccomp, emailAccomp, situationGeo, moyenTransport, choixHoraireAvion, choixHoraireTrain, intolAlim, exceptAlim, commentaires) VALUES(:nom, :prenom, :email, :fonction, :societe, :presenceEven, :venueAccomp, :nomAccomp, :prenomAccomp, :emailAccomp, :situationGeo, :moyenTransport, :choixHoraireAvion, :choixHoraireTrain, :intolAlim, :exceptAlim, :commentaires)');
    $req->execute(array(
    	'nom' => $_POST['nom'], 
    	'prenom' => $_POST['prenom'],
    	'email' => $_POST['email'],
    	'fonction' => $_POST['fonction'],
    	'societe' => $_POST['societe'],
    	'presenceEven' => $_POST['presenceEven'],
    	'venueAccomp' => $_POST['venueAccomp'],
    	'nomAccomp' => $_POST['nomAccomp'],
    	'prenomAccomp' => $_POST['prenomAccomp'],
    	'emailAccomp' => $_POST['emailAccomp'],
    	'situationGeo' => $_POST['situationGeo'],
    	'moyenTransport' => $_POST['moyenTransport']),
    	'choixHoraireAvion' => $_POST['choixHoraireAvion'],
    	'choixHoraireTrain' => $_POST['choixHoraireTrain'],
    	'intolAlim' => $_POST['intolAlim']),
    	'exceptAlim' => $_POST['exceptAlim'],
    	'commentaires' => $_POST['commentaires']
    	));
     
    ?>
    Mon problème est que systématiquement lors de l'exécution de ce script j'ai l'erreur "Notice: Undefined index" sur les lignes 27 et 30 (moyenTransport et intolAlim) lorsque ces 2 champs ne sont pas renseignés (alors qu'ils ne font pas partie des champs obligatoires donc une valeur vide est parfaitement acceptable).

    Par ailleurs ce qui est très étonnant c'est que seuls ces 2 champs vides entraînent l'erreur "Undefined index" (le champ "commentaires" par ex ne provoquera pas cette erreur s'il est envoyé vide...)

    Je n'en sors pas... Des idées ?

    Merci par avance pour votre aide.

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    S'ils n'existent pas, c'est qu'il ne sont pas passés dans le formulaire, même vide.

    Tu peux le vérifier en faisant un print_r($_POST);, n'as tu pas fait une erreur de frappe dans les names de tes inputs par exemple ?
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Est-ce que par hasard les champs problématiques seraient des checkboxes ou des boutons radios ?

    Un champ texte non remplis est envoyé avec une chaine vide. Mais une checkbox n'est pas envoyée du tout si elle n'est pas cochée, idem pour un radio.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    Spartacusply, Celira,

    Merci pour vos réponses.

    Pas d'erreur de frappe dans les names de mes inputs mais en effet les champs problématiques sont des boutons radio.
    J'en déduis donc que si ce champ n'est pas renseigné, et afin d'éviter l'erreur en question, je dois pré-cocher une valeur par défaut à mes boutons radio.

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    C'est une possibilité en effet. Après s'il n'y a pas de valeur "par défaut" (par exemple, s'il y avait un input pour le sexe, ce serait illogique de cocher "homme" par défaut par exemple), tu peux décider d'afficher un message d'erreur lui demandant de choisir obligatoirement une valeur si tu n'en recoit pas ($_POST['name'] n'existe pas).

    Une autre possibilité, c'est de créer un choix du même name de type hidden de valeur vide afin que le bouton soit envoyé même si aucune case n'est cochée :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="sexe" value="">
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  6. #6
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    Spartacusply merci oui, plus adapté que ma déduction le choix de type hidden.
    Je m'étais remise sur mon code et en effet les boutons cochés par défaut ça collait pas du tout.

    Un grand merci à tous les deux pour vos lumières ;-)

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    A noter : le champ hidden doit être avant les radios dans le formulaire, sinon c'est toujours lui qui sera envoyé.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    En effet, c'est là que je les ai placés, mais tout à fait par hasard.
    Merci pour cette précision Celira.
    Bonne journée.

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

Discussions similaires

  1. [MySQL] Insertion données formulaire multi lignes
    Par snorky94 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/09/2012, 20h50
  2. [PHP 5.3] insertion données formulaire inscri
    Par janyoura dans le forum Langage
    Réponses: 2
    Dernier message: 26/03/2012, 17h17
  3. [MySQL] Insertion données formulaire dans base de données
    Par westlaux dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 21/06/2007, 20h17
  4. Réponses: 3
    Dernier message: 13/07/2006, 18h05
  5. Insertion données Formulaire
    Par Go_Ahead dans le forum Access
    Réponses: 2
    Dernier message: 17/06/2006, 13h59

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