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 :

Variable globale PHP


Sujet :

Langage PHP

  1. #1
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    Par défaut Variable globale PHP
    Salut

    Je construis mes pages php en commençant par du HTML auquel j’inclus du htlm par le biais d'echo PHP.
    Exemple:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <!DOCTYPE html>
    <html lang="fr"> <!-- Radio74M.PHP -->
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=utf-8">
    	</head>
    	<body>
    <?php
                            if (isset($_GET['condition1'])){
                                    if ($_GET['condition1']==='true'){
                                            if (isset($_GET['condition2'])){
                                                    if ($_GET['condition2']==='true'){
                                                            echo 'les 2 conditions sont bien juste';
                                                    }else{
                                                            echo 'la 2éme condition existe mais n\'est pas juste';
                                                    }       
                                            }else{
                                                    echo 'la 2éme condition n\'existe pas';
                                            }
                                    }else{
                                            echo 'la 1ère condition n\'est pas juste';
                                    }
                                    echo 'la 1ère condition existe';
                            }else{
                                    echo 'la 1ère condition n\'existe pas';
                            }
    ?>
    		La suite de la page .... avec différentes balises html div ... label ....
    		Un peu de javascript
    		<script>
                            // du code javasript
                            function ClickAfficheVert(){ReAffiche(this.options['alt'],'LimeGreen');}
                            function ClickAfficheRouge(){ReAffiche(this.options['alt'],'Coral');}
                            // du code généré suivant les mêmes conditions
    <?php
        if (isset($_GET['condition1'])){
            if ($_GET['condition1']==='true'){
                if (isset($_GET['condition2'])){
                    if ($_GET['condition2']==='true'){
                                            echo '                  function AffInfSpc(){
                                                                                    RechInfos("InfosQRZAdmi");
                                                                            }//---------------------------------------------------------
                                                     ';
                                    }
                            }
                    }
            }
    ?>
                    </script>
    	</body>
    <html>
    Est il possible de déclarer une variable globale $condition=true ligne 14 à la place de echo 'la 2éme condition existe mais n\'est pas juste';,
    puis de réutiliser cette variable à la place des lignes 35 à 38 en remplaçant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($condition===true){
    Dans mes différents code, j'utilise cette condition plusieurs fois dans l'ensemble du code de mes pages, je trouverais plus propre/pratique d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($condition===true){
    	//faire ceci;
    	}else{
    	//faire cela;
    }
    Plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (isset($_GET['condition1'])){
    	if ($_GET['condition1']==='true'){
    		if (isset($_GET['condition2'])){
    			if ($_GET['condition2']==='true'){
    				//faire ceci;
    			}else{
    				//faire cela;
    			}
    		}
    	}
    }
    J'ai bien sûr consulté la page https://php.developpez.com/faq/?page=variablesportee ainsi que https://www.php.net/manual/fr/langua...bles.scope.php mais n'ai pas réussi à faire fonctionné, le fait d'être dans différents blocs d'instruction (<?php ... ?>) me laisse penser que ceal n'est pas possible ?
    Merci de votre aide.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 788
    Points
    788
    Par défaut
    Bonjour,

    Est il possible de déclarer une variable globale $condition=true ligne 14 à la place de echo 'la 2éme condition existe mais n\'est pas juste';,
    puis de réutiliser cette variable à la place des lignes 35 à 38 en remplaçant par
    Oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    if(true)
    {
    	$xyz = "xyz";
    }
     
    var_dump($xyz);
    Le scope des variables dans ce langage est "comme il est, cad très permissif", qu'on aime ou pas, c'est pareil.

    Dans votre code, ne pourriez vous pas déplacer toutes ces conditions et les réduire dans un prélude PHP ?

    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
    <?php
     
    $condition1 = isset($_GET['condition1'] && $_GET['condition1']==='true';
    $condition2 = isset($_GET['condition2'] && $_GET['condition2']==='true';
     
    ?>
    <!DOCTYPE html>
    <html lang="fr"> <!-- Radio74M.PHP -->
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=utf-8">
    	</head>
    	<body>
    <?php
                            if ($condition1&&$condition2){
    							echo 'les 2 conditions sont bien juste';
    						}else if($condition1){
    							echo 'la 1ère condition existe';
    						}else ...
    						// vous faites votre soupe après...
    ?>
    		La suite de la page .... avec différentes balises html div ... label ....
    		Un peu de javascript
    J'insiste sur la notion du mot clef global du langage qui permet surtout de dépasser les scopes à posteriori,
    la doc est très flou sur ce sujet.
    https://www.php.net/manual/fr/langua...bles.scope.php

    On peut évaluer ce bout de code pour finir de se convaincre que c'est contre intuitif, à mon goût au moins,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    global $a, $b;
    $a = 1;
    $b = 2;
    function somme() {
        $b = $a + $b;
    }
    somme();
    echo $b;
    Affichera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ php a.php 
    PHP Warning:  Undefined variable $a in a.php on line 6
    PHP Warning:  Undefined variable $b in a.php on line 6
    Seules les superglobales son véritablement, et en tant que tel, définie en tant que global.
    Elles sont par ailleurs un cas particulier.
    https://www.php.net/manual/fr/langua...perglobals.php

    Bonne journée.

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    Par défaut
    Re salut

    Après multiple essais suivant ta proposition, j'y suis arrivé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $condition1 = isset($_GET['condition1'] && $_GET['condition1']==='true';
    $condition2 = isset($_GET['condition2'] && $_GET['condition2']==='true';
    Provoque une erreur sur la première ligne (je ne me souvient plus laquelle)
    je suis revenue à
    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
                            if (isset($_GET['condition1'])){
                                    if ($_GET['condition1']==='true'){
                                            if (isset($_GET['condition2'])){
                                                    if ($_GET['condition2']==='true'){
                                                            //echo 'les 2 conditions sont bien juste';
                                                           $conditionGlobale= true; // <<<<<<<<<<<<<<<<<<<<<=========================
                                                    }else{
                                                            echo 'la 2éme condition existe mais n\'est pas juste';
                                                    }       
                                            }else{
                                                    echo 'la 2éme condition n\'existe pas';
                                            }
                                    }else{
                                            echo 'la 1ère condition n\'est pas juste';
                                    }
                                    echo 'la 1ère condition existe';
                            }else{
                                    echo 'la 1ère condition n\'existe pas';
                            ]
    Là c'est bon, mais par la suite $conditionGlobale provoque l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			if ($conditionGlobale === true){
    								echo '				Requete += "&Stat=true";';
    								}
    La solution, initialiser la variable qui sera globale pour l'utilisation dans tout le reste du code
    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
                            $conditionGlobale= false; // initialiser la variable qui sera globale pour l'utilisation dans tout le reste du code
                            if (isset($_GET['condition1'])){
                                    if ($_GET['condition1']==='true'){
                                            if (isset($_GET['condition2'])){
                                                    if ($_GET['condition2']==='true'){
                                                            //echo 'les 2 conditions sont bien juste';
                                                           $conditionGlobale= true; // <<<<<<<<<<<<<<<<<<<<<=========================
                                                    }else{
                                                            echo 'la 2éme condition existe mais n\'est pas juste';
                                                    }       
                                            }else{
                                                    echo 'la 2éme condition n\'existe pas';
                                            }
                                    }else{
                                            echo 'la 1ère condition n\'est pas juste';
                                    }
                                    echo 'la 1ère condition existe';
                            }else{
                                    echo 'la 1ère condition n\'existe pas';
                            }
    Merci @unanonyme et au 110 lecteurs de ma demande d'aide.

    Motif de l'édit
    $condition1 = isset($_GET['condition1']) && $_GET['condition1']==='true'; il manque l') fermant la condition isset, ce qui provoque l'erreur du début de mes essais.
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    	$conditionGlobale= isset($_GET['condition1']) && $_GET['condition1']&&isset($_GET['condition2']) && $_GET['condition2'] ;
    ?>
    suffit à lui même, une ligne au lieu de 19 rien que pour la déclaration de la variable globale,
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 788
    Points
    788
    Par défaut
    Bonjour,

    Vous avez raison, j'ai laissé une énorme erreur de syntaxe... désolé.

    Dans $condition1 = isset($_GET['condition1'] && $_GET['condition1']==='true'; l'appel à isset manque sa parenthèse fermante.

    Il eu fallut écrire $condition1 = isset($_GET['condition1']/*ICI*/)/*ICI*/ && $_GET['condition1']==='true';.

    Votre solution fonctionne, c'est l'essentiel.

    ça m'apprendra à ne pas tester le code avant de le poster.

    Bonne journée.

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

Discussions similaires

  1. Variables global PHP et CSS
    Par Arnaud Fournery dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 22/01/2008, 16h42
  2. Variable globale en php
    Par MayOL69bg dans le forum Langage
    Réponses: 3
    Dernier message: 26/03/2007, 17h28
  3. [PHP-JS] Variable globale form
    Par guitz dans le forum Langage
    Réponses: 7
    Dernier message: 19/07/2006, 18h44
  4. Variable globale à plusieurs pages .php
    Par rivaol dans le forum Langage
    Réponses: 6
    Dernier message: 19/06/2006, 09h12
  5. [EasyPHP] variables globales PHP et EasyPHP
    Par Mucsy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 27/03/2006, 10h50

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