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 :

Déclaration de variables


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut Déclaration de variables
    Bonjour à toutes et tous

    Toujours dans la fameuse conversion php5 --> php7
    Avec une bonne dose de certitude, peut-on me dire s'il est préférable (pour : rapidité d'exécution, ergonomie, facilité d'encodage ... ou autre popotte) de déclarer toutes les variables dans le fichier de config (qui peuvent être nombreuses), qui passe partout, sous une forme telle que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $variable1 = ""; $variable2=""; $variable3=0; ...
    sachant que .. ou plutôt .. pensant savoir que si l'on repasse par l'index (qui include config.php) on risque de tout réinitialiser ... à moins de mettre include_once ??? pour ne pas mettre le why avec les sessions et autres ... ou require ??

    ou juste dans les pages concernées avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!isset ($variable1)){$variable1="";}
    Cette question est en relation avec le fameux message "Notice : Undefined Variable ..." qui , en php5 n'apparaissait pas ..
    Merci


    On peut très bien vivre sans la moindre espèce de culture.
    Pierre Desproges

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par mauyebo Voir le message
    Cette question est en relation avec le fameux message "Notice : Undefined Variable ..." qui , en php5 n'apparaissait pas ..
    en PHP 5 ou 7, il est possible de cacher ou afficher ces messages.
    c'est recommandé de l'activer pendant le développement pour détecter une possible erreur de logique. et ensuite cet affichage peut être caché sur le serveur de production :
    https://php.developpez.com/faq/?page..._cachererreurs

    en ce qui concerne votre question, la question est de savoir dans votre exemple, est ce que la variable "variable1" non définie à un sens particulier dans votre code ?

  3. #3
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut
    oui, j'ai vu que l'on pouvait activer ou non display_errors dans la config , si c'est bien de ça dont vous parlez
    je ne suis pas sûr d'avoir compris la question "sens particulier"
    hormis certaines, comme les variables de session, la plupart de mes variables changent en cours de visite suivant les retours des boites de dialogue ou cases à cocher ou autres .

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 991
    Points
    2 991
    Par défaut
    Bonjour

    Je ne comprends pas votre question... Lorsque vous souhaitez accéder à une variable (disons $arr['firstname']), vous devez avoir la certitude que cette variable existe. Si elle manque, très probablement, il y a un souci dans la logique métier de votre programme. Dans l'exemple que je donne, est-il normal que la variable prénom soit manquante ? Il me semble que son absence devrait interpelle "Oups, il y a quelque chose de pas très normal..."

    Maintenant, si "Oh c'est pas très grave si la variable manque", vous pouvez aller faire quelque chose echo $arr['firstname'] ?? '' pour donner un exemple. L'utilisation du ?? va permettre de mentionner "Si pas présent, pas grave, utilise la valeur (chaine vide) comme valeur par défaut".

    Perso, je code avec toutes les erreurs affichées (notice, warning, ...); je veux absolument tout capturer et gérer. Si vous ne le faites pas, vous vous exposez à des bugs futurs.

    Bonne journée.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  5. #5
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut
    bonjour
    merci de vous intéresser à mon problème .

    qui est , à la base, la modification des scripts d'un site que j'ai développé (avec l'aide d'un programmeur expérimenté), il y a 12 ans , en php5 qui ne nécessitait pas de déclarer les variables avant de les créer . Avec php7, une variable qui n'a pas été déclarée ou créée provoque un message d'erreur.
    Exemple avec le prénom , s'il n'était pas renseigné dans le formulaire , il n'était pas nécessaire de déclarer une chaine vide
    bonne journée également

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 991
    Points
    2 991
    Par défaut
    Salut

    J'avais compris ton souci (les NOTICE). Note que tu te trompes en mentionnant qu'avec PHP 5.x il n'était pas nécessaire de déclarer les variables avant de les utiliser. Ce que tu rencontres actuellement existait déjà càd que si tu fais un echo $firstname avant d'avoir initialisé la variable, cela générera une NOTICE.

    Sous PHP 5.x, c'était déjà le cas, mais probablement tu ne le voyais pas (car les NOTICE ne sont pas affichées par défaut), mais bien écrites dans le fichier error.log généré par PHP. Même comportement avec PHP 7.x.

    Pour revenir à ton problème : echo $firstname ?? 'John'; va afficher 'John' dès lors que $firstname a une valeur nulle (ou n'a pas été déclaré).

    Pour revenir à ce que je voulais dire : dans un code, il est rare de ne pas se soucier de savoir si une variable existe ou pas. Si tu fais un truc comme echo $arr['firstname']; c'est que tu t'attendais (en principe) à trouver un prénom et donc, si tu ne l'as pas reçu; c'est peut-être un problème plus important (comme un formulaire qui n'avait pas prévu cette zone et du coup tes visiteurs ne peuvent jamais y indiquer un prénom). Ce que je voulais mentionner c'est que si une variable était attendue et non présente; peut-être ne faut-il pas chercher à "cacher" l'erreur, mais bien à en comprendre l'origine.

    Bonne soirée.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  7. #7
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut
    Salut Christophe
    je ne cherche pas à cacher l'erreur mais à éviter qu'elle ne se produise .Lorsque j'ai développé mon précédent site, il est effectivement possible que le display_errors de php fut désactivé .. J'en connais désormais le fonctionnement . J'apprends aussi , par ta réponse , l'existence de php_error.log que je n'avais, jusqu'alors, jamais eu la curiosité de visiter ou qui me semblait obscur . Intéressant fichier, d'autant plus que l'affichage, sur mon ordi, des NOTICE en gris clair sur fond orange n'est pas des plus facile à lire... Et il y en a ...

    Pour ce qui est des formulaires, il arrive que la personne qui rempli les champs ne souhaite pas tous les renseigner !
    Ma question reste en suspens en ce qui concerne l'emplacement préférable de déclaration des variables . Dans le fichier concerné ou dans le fichier de config ?


    Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide. C

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 991
    Points
    2 991
    Par défaut
    Bonjour

    Citation Envoyé par mauyebo Voir le message
    Intéressant fichier, d'autant plus que l'affichage, sur mon ordi, des NOTICE en gris clair sur fond orange n'est pas des plus facile à lire... Et il y en a ...
    Faut voir avec quel logiciel tu ouvres ce fichier Si c'est avec le bête Notepad (pour Windows); point de couleurs tu auras

    Citation Envoyé par mauyebo Voir le message
    Pour ce qui est des formulaires, il arrive que la personne qui rempli les champs ne souhaite pas tous les renseigner !
    Oui mais si la zone est dans le formulaire, tu auras cette zone dans ton $_POST, vide mais elle sera présente. Ce n'est pas le cas chez toi ? Etrange...

    Citation Envoyé par mauyebo Voir le message
    Ma question reste en suspens en ce qui concerne l'emplacement préférable de déclaration des variables . Dans le fichier concerné ou dans le fichier de config ?
    Je dirais là où tu as en besoin... fichier concerné du coup.

    Et le mieux serait de développer une classe PHP où tu associes chaque élément du formulaire à une propriété. Ainsi, ton code sera robuste; tu n'auras plus jamais à te soucier de la présence, de la qualité d'encodage, ... des zones; ta classe PHP aura fait tout le travail de contrôle, mise en forme (p.ex. mettre le genre F/M/X en majuscule), ...

    Bonne programmation !

    (tiens un intérêt rarement mentionné des classes PHP : avec un logiciel comme phpDocumentor, une classe s'auto-documente parfaitement, c'est vraiment hyper pratique aussi pour ça, la documentation de ton code)
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  9. #9
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut
    merci pour ces infos

    les fichiers , je les ouvre avec dreamweaver et aussi , depuis peu, avec Notepad++ . Quant au final, avec mon serveur local wampserver , j'essaye avec firefox et IE .

    j'ai regardé une doc sur les classes php . Pour l'instant, avec ce que j'ai lu (pas tout) , je n'ai pas trouvé "mon" intérêt à développer cela car il me semble que ça complique pas mal le script et ma tête fume déjà pas mal . Je vais d'abord essayer d'aboutir le fonctionnement tel que je l'ai entrepris (je n'en suis pas au début), ça progresse avec les conseils d'ici et là, et lorsque (si ..) le site sera opérationnel, j'y retournerai voir .
    La reprise de ce site me pose, comme prévu ... , pas mal de petits soucis . plus de 120 scripts, tous à revoir, avec en moyenne 200 lignes par script (le plus gros 1100 lignes) ce qui , pour moi , est fastidieux et ne manque pas de générer de nouvelles erreurs .
    A+

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

Discussions similaires

  1. déclaration de variable public
    Par mathieu57 dans le forum MFC
    Réponses: 5
    Dernier message: 15/09/2005, 17h36
  2. [DB2] Ordre de déclaration des variables
    Par Fatah93 dans le forum DB2
    Réponses: 1
    Dernier message: 04/05/2005, 17h18
  3. déclaration de variables de 16, 32 et 128 bits
    Par samipate dans le forum C++
    Réponses: 10
    Dernier message: 30/12/2004, 22h33
  4. [FLASH MX2004] Déclaration de variables sous flash mx
    Par softyClochette dans le forum Flash
    Réponses: 4
    Dernier message: 29/11/2004, 16h11
  5. [debutant][Portée] Déclaration de variable .....
    Par Slein dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 10h43

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