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 :

Notice: Undefined variable


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 175
    Points : 70
    Points
    70
    Par défaut Notice: Undefined variable
    Bonjour,

    Quels sont les méthodes pour initialiser une variable afin de ne pas afficher les erreurs de notices tout en conservant le rapports d'erreur.?

    Es ce que l'on doit procéder ainsi pour chaque variable parcque c'est vraiment pas pratique ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?
    $mavar = 0;
    ?>

  2. #2
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    tu teste ta variable avec isset
    http://gr2.php.net/manual/fr/function.isset.php
    "Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 175
    Points : 70
    Points
    70
    Par défaut
    Salut merci,

    si je fait ça c'est bon ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($var)) $var=0;

    Mais es ce qu'il est obligatoire de'initialiser une variable, ca change quoi si je ne le fait pas ?

  4. #4
    Invité4
    Invité(e)
    Par défaut
    change les notifications d'erreur
    http://php.benscom.com/manual/fr/function.error-reporting.php

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben selon ce que tu fais avec apres tu risque d avoir une notice undefined variable
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  6. #6
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    Citation Envoyé par Eldacar
    change les notifications d'erreur
    http://php.benscom.com/manual/fr/function.error-reporting.php
    +1 sur un site de prod

    mais -1 sur un site de developpement
    "Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 175
    Points : 70
    Points
    70
    Par défaut
    merci, je sais que cela affiche une erreur de notice et je souhaite conserver ce rapport d'erreur. Mais cela pose t'il d'autre problème que l'affichage d'un notice, peut-il y a avoir des soucis dans le code ou autre ?

    Autre question le isset je le fait à quel endroit dans le code, au tout début ?

  8. #8
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    tu utilise isset() quand tu teste ta variable
    isset() te dit seulement si ta variable est affectee
    "Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN

  9. #9
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    il peut y avoir un soucis, enfin tout depend de l'importance de la variable.
    Par exemple
    je faisais un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rename ($ancien,$nouveau)
    $ancien et $nouveau n'etait pas défini, moralite j'ai perdu tout mes fichiers dans le dossier ou se trouvait le script.

    mais tu fais un simple echo $variable
    ca n'affichera rien et cela aura aucun risque
    Tout énigme a une solution ! Tout est question de discipline !

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 175
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par yiannis
    tu utilise isset() quand tu teste ta variable
    isset() te dit seulement si ta variable est affectee
    Il faut la tester ou et à quel moment la variable ?

  11. #11
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    quand tu utilise ta variable
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($var) == 3)
    "Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 175
    Points : 70
    Points
    70
    Par défaut
    tu aurais un exemple un peu plus complet parcque j'ai du mal à comprendre. merci.

  13. #13
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par yiannis
    if (isset($var) == 3)
    Attention ca ne fonctionne pas ça, isset renvoi toujours true ou false, donc jamais 3. Ce test n'est pas correct.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 175
    Points : 70
    Points
    70
    Par défaut
    Et toi GregPeck tu fais comment avec tes variables ? tu les initialises toutes ou tu n'affiche pas les notices ?

  15. #15
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Moi je préfere les initialiser toutes et activer l'affichage des NOTICES sur le serveur de devt et de prod.

  16. #16
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Il faut comprendre pourquoi c'est important de ne pas utiliser une variable non initialisée.
    Le cas le plus simple : tu utilises une variable pour un test, mais tu as oublié d'affecter une valeur à cette variable. Ton test ne passe pas, mais si tu as désactivé les notices, tu ne t'en rends pas compte.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ($test=='non')
    {echo 'Erreur';}
    Si tu as oublié d'initialiser $test (en lui donnant la valeur 'non' ou 'oui', par exemple), le test donnera toujours false... sans que tu t'en rendes compte.

    A mon avis, tu dois tester l'existence d'une variable... uniquement si elle risque de ne pas exister. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset($message))
    {echo $message;}
    Si message a été complété (ce n'est pas automatique), alors afficher le message.
    Mais tester l'existence de la variable $test dans l'exemple précédent serait à mon avis une erreur, car elle est sensée exister forcément. Si elle n'existe pas, c'est une erreur de programmation, et les notices sont justement là pour me le dire

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Si tu es en début de code, tes variables ne sont pas initialisées. Tu peux donc laisser tomber les isset et initialiser directement les variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $var1=0;
    $var2=0;
    $var3=0;
    Mais surtout, interroge-toi pour savoir pourquoi une variable doit être initialisée.
    L'une des rares raisons est l'incrémentation ou la concaténation.
    suppose que $message existe déjà.
    De même,suppose que $i contienne déjà une valeur.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 175
    Points : 70
    Points
    70
    Par défaut
    merci pour ces explications vg33 on y voit déja un peu plus clair, j'ai un exemple de "Notice: Undefined variable" que je reçois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($t == 1)
    {
        $ls = 1;
     
    }
     
    if ($ls == 1) echo '$ls vaut 1';
    echo 'suite du code';
    En fait $t est rarement appelé et donc $ls n'est pas défini
    $ls se situe en plein milieu d'une fonction assez longue et je me vois mal l'initialiser en tout début de code alors comment je peux faire ?

  19. #19
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($t == 1) {
        $ls = 1;
    } else {
        $ls = 0;
    }
     
    if ($ls == 1) echo '$ls vaut 1';
    echo 'suite du code';
    ou alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($t == 1) {
        $ls = 1;
    }
     
    if (isset($ls) && ($ls == 1)) echo '$ls vaut 1';
    echo 'suite du code';

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 175
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par GregPeck
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($t == 1) {
        $ls = 1;
    } else {
        $ls = 0;
    }
     
    if ($ls == 1) echo '$ls vaut 1';
    echo 'suite du code';
    ou alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($t == 1) {
        $ls = 1;
    }
     
    if (isset($ls) && ($ls == 1)) echo '$ls vaut 1';
    echo 'suite du code';
    ok c'est compris, merci à tous.

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

Discussions similaires

  1. config.php : Notice: Undefined variable
    Par alfigor dans le forum Langage
    Réponses: 5
    Dernier message: 21/02/2008, 15h50
  2. [MySQL] Notice: Undefined variable: prenom in c:\documents and settings\stagiaire10\mes docum
    Par fofina dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/10/2007, 00h18
  3. Notice: Undefined variable: id in
    Par dynam dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 11/09/2007, 17h12
  4. Notice: Undefined variable
    Par kayn dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2005, 20h44
  5. Réponses: 3
    Dernier message: 22/09/2005, 11h24

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