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 :

Undefined array key


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 9
    Points
    9
    Par défaut Undefined array key
    Bonjour,
    suite à l'installation d'une nouvelle version de PHP, je rencontre le message suivant:

    Warning : Undefined array key "Choix"
    Choix étant généré dans un formulaire methode POST, par :
    <input type='radio' name='Choix' value='Soumettre'>.

    Précédemment Je récupérai cette variable par $Choix = $_POST["Choix"];,
    çà ne marche plus.
    Je ne vois pas quoi faire !

    Pouvez-vous m'aider ?

    merci beaucoup.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 426
    Points : 40 082
    Points
    40 082
    Billets dans le blog
    9
    Par défaut
    Bonjour marih999

    Pour trouver des réponses, il faut poser les questions au bon endroit, en l'occurrence dans le forum PHP

    De plus, il existe des outils de mise en forme pour que les messages soient plus lisible, comme par exemple les balises CODE (symbole # de la barre d'icones) qui permettent d'encadrer et de mettre en couleur le code en fonction du langage choisi (coloration syntaxique).

    Par exemple :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    input type='radio' name='Choix' value='Soumettre'

  3. #3
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Bonjour

    Essaie comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Choix = $_POST["Choix"] ?? 0;
    L'idée est d'initialiser à zéro si tu n'as sélectionné aucune valeur dans ton radio button.

    Vérifie que cela fonctionne correctement quand tu sélectionne l'une ou l'autre valeur dans ton radio button.

    Bonne journée.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Bonjour Christophe,
    merci pour ta réponse rapide.
    Je suis désolé d'avoir mal choisi l'endroit où poser la question mais la page d'accueil est tellement pleine d'infos que ce n'est pas évident de trouver la bonne.
    j'avais choisi Dev PHP.

    Pour ce qui est de ta réponse c'est très bien, cela a résolu le problème. Ce n'est pas évident je ne connaissais pas la le "coalescing operator (??)".

    par ailleurs les dernières versions de PHP (depuis la 7 ?) induisent d'autres erreurs d'initialisation de variables, je ne dirai pas aléatoires mais çà y ressemble !
    Certaines valeurs sont initialisées par PHP comme prévu initialement d'autres non.
    Cela oblige à dérouler systématiquement les programmes et à perdre un temps déraisonnable.
    Il serait bon que les développeurs de PHP pensent aux conséquences qu'induisent leurs nouveautés sur la maintenance des applications.

    Encore merci de ton aide très précieuse, j'étais vraiment bloqué !
    Cordialement

  5. #5
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Pho devient un langage de plus en de plus robuste et typé c'est vraiment la bonne direction.

    Tu devrais donner des exemples et nul doute qu'on pourra t'aider.

    Dans ton cas ci-dessus en fait tu accèdes à une clef qui n'existe pas d'où l'erreur. Je suppose qu'en l'absence d'un choix dans la zone radio button, cette valeur n'est pas retournée au serveur car nulle.

    Ma proposition est donc de prévenir cela et d'utiliser une valeur par défaut.

    Bonne journée

  6. #6
    Membre du Club
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par marih999 Voir le message
    <input type='radio' name='Choix' value='Soumettre'>.
    Par contre, essayez d'écrire des doubles quote dans vos HTML, c'est la norme W3C -> Validator HTML Merci !

    <input type="radio" name="Choix" value="Soumettre"> En plus çà facilite le code PHP - À la place de mettre plein d'anti-slash.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo '<input type="radio" name="Choix" value="Soumettre">';
    ?>
    Merci

    Bonne journée !

    Romain

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Concernant les variables:
    il faut initialiser $i qui est un compteur dans l'instruction: $i += 1; pourquoi ?

    Merci d'avance

  8. #8
    Membre du Club
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par marih999 Voir le message
    Concernant les variables:
    il faut initialiser $i qui est un compteur dans l'instruction: $i += 1; pourquoi ?

    Merci d'avance
    Il faut toujours initialiser les variables -> pour déclarer qu'est-ce quelle est.

    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
    // Une variable numeric que tu souhaites incrémenter +1 (çà doit être dans une boucle), dirait-on :)
    // donc avant ta boucle while/for/foreach il faut la déclarer
    $i=0;
     
    // un tableau PHP
    $mon_tableau = array();
     
    $mon_tableau[0] = 'valeur';
    $mon_tableau[1] = 'autre valeur';
     
    // un object  PHP
    $mon_object = new stdClass();
     
    $mon_object->title = 'mon titre';
    $mon_object->name = 'mon nom';

    Infos par ici https://www.php.net/releases/8.0/fr.php sur les changements entre PHP7 et PHP8 -> pour nous faciliter la vie et que le code soit plus compréhensible et plus rapide.

    Romain

  9. #9
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Citation Envoyé par marih999 Voir le message
    Concernant les variables:
    il faut initialiser $i qui est un compteur dans l'instruction: $i += 1; pourquoi ?

    Merci d'avance
    Tu ajoutés la valeur numérique 1 à.. quoi ? Si la variable n'a pas été définie, comment php peut-il savoir de quoi on parle ? Est-ce une date ? Une chaîne de caractères ? Un objet ?

    C'est heureux que php changé pour devenir moins laxiste et plus strict. Un code de qualité est un code qui, entre autre chose, est clair sur ce qu'il fait.

    Donc, oui, $i doit être initialisé et, pour ton cas ici présent, doit être une valeur numérique.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Merci à tous pour vos explications.

    Il n'y a plus qu'à corriger tout ce que PHP faisait de lui même...
    Je conçois que c'était une facilité laxiste mais il va y avoir du taf à tout corriger !
    Cordialement

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 278
    Points : 8 586
    Points
    8 586
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par LAB3W Voir le message
    Par contre, essayez d'écrire des doubles quote dans vos HTML, c'est la norme W3C -> Validator HTML
    On peut délimiter un attribut HTML avec ' ou "
    => https://html.spec.whatwg.org/multipa...l#attributes-2

  12. #12
    Membre du Club
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par marih999 Voir le message
    ....................mais il va y avoir du taf à tout corriger !
    Cà c'est bien çà fait bosser son code


    Citation Envoyé par Séb. Voir le message
    On peut délimiter un attribut HTML avec ' ou "
    => https://html.spec.whatwg.org/multipa...l#attributes-2
    Citation Envoyé par LAB3W
    HTML
    Living Standard — Last Updated 7 October 2022
    HTML quoi ? 5 ? 2022..

    L'important c'est de valider sa page HTML - XHTML/strict avec le validateur W3C, un minimum, selon son en-tête que l'on a choisi

    Romain

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

Discussions similaires

  1. récupérer les valeur d'1 array key ou par index
    Par polpaulin dans le forum Langage
    Réponses: 6
    Dernier message: 26/04/2013, 13h34
  2. Réponses: 28
    Dernier message: 16/04/2009, 17h35
  3. Test de Key dans une array of Char
    Par Jipété dans le forum Langage
    Réponses: 3
    Dernier message: 29/03/2008, 17h49
  4. [Tableaux] Array et Undefined offset
    Par richton95 dans le forum Langage
    Réponses: 10
    Dernier message: 15/03/2006, 23h47
  5. Réponses: 16
    Dernier message: 24/11/2005, 13h43

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