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


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut variable globale
    Bonsoir à tous,
    Je vous explique mon problème, j'ai écris plusieurs fonctions qui font appel à des répertoires.Je souhaite passer le nom de ces répertoires en variables globales car je les utilise dans plusieurs fonctions.
    J'ai donc mis en début de fichier $repertoire="D:/....." et dans mes fonctions je déclare globale $repertoire;
    et ensuite je fais mes traitements dessus(j'y place des photos en fonctions d'informations contenues dans des bases de données,j'affiche des images...)
    mais cela ne fonctionne pas.
    Est ce que quelqu'un aurait une idée, j'ai lu la doc mais je ne comprends pas pourquoi ça ne fonctionne pas.
    j'ai testé avec un programme tout simple, et là ça fonctionne.
    Merci d'avance pour vos réponse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    variable="abcd";
     
    function test(){
     
    global $variable;
    echo $variable;
     
    }
     
    test();

  2. #2
    Membre très actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Par défaut
    j'espère que ton problème n'est pas le même que dans ton code d'exemple:

    il manque '$' dans la déclaration de la variable avant la fonction

    une meilleure solution si tu ne modifies pas ta variable, c'est de la définir comme constante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    define('CHEMIN_DIR', 'C:machin/');
    //pour l'utiliser n'importe où
    echo CHEMIN_DIR;
    function test(){
        echo CHEMIN_DIR;
    }
    test();
    par contre tu ne peux pas modifier la valeur des constantes


    si non en objet c'est plus sympa, avec une classe et des attributs statics, moins barbare que global

    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
     
    class Config{
        public static $dir = 'machin';
    }
     
    function test(){
        echo Config::$dir;
        Config::$dir = 'truc';
    }
    test();//affiche machin
     
    echo Config::$dir ; //affiche truc
     
    Config::$dir = 'bidule';
     
    test();//affiche bidule
    c'est plus moderne, n'est-ce pas

    bon code

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    le $ n'est pas une erreur, j'ai mal fais mon copier collé désolé.

    Je vais tester avec le define, les classes c'est un peu compliqué pour moi
    Merci pour ta réponse.
    J'espère que cela va fonctionner

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    ça ne fonctionne pas, enfin ton exemple fonctionne mais je ne sais pas l'adapter à mon problème.
    En fait dans mes fonctions, je définis le nom de l'image, par exemple :
    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
    define('REPERTOIRE', "./rep/");
    define('REPERTOIRE_MINIATURES', "./rep_min/");
    /* Fonction qui permet de redimensionner l'image que l'utilisateur nous a envoyé */
    function redimensionner($nom){
        $content.="";
            $taillemax=200;
        $image="REPERTOIRE/$nom";
     
        $dim=getimagesize($image);  //la variable dim contiendra la taille de l'image passée en paramètre
        $largeur=$dim[0];
        $hauteur=$dim[1];
     
     
        //calcul des nouvelles dimensions de l'image
        if($largeur>$hauteur){
            $new_hauteur=$hauteur*(($taillemax/$largeur));
            $new_largeur=$taillemax;
        }
        else {
            $new_largeur=$largeur*(($taillemax)/$hauteur);
            $new_hauteur=$taillemax;
        }
     
     
        // Redimensionnement
        $image_p = imagecreatetruecolor($new_largeur, $new_hauteur);
        $image_cree = imagecreatefromjpeg($image);
        imagecopyresampled($image_p, $image_cree, 0, 0, 0, 0, $new_largeur, $new_hauteur, $largeur, $hauteur);
     
        // on place l'image dans le répertoire repertoire_mini
        imagejpeg($image_p,REPERTOIRE_MINIATURES/"$nom", 100);
     
        return $content;
    }

  5. #5
    Membre très actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Par défaut
    Citation Envoyé par eric204044 Voir le message
    ...
    $image="REPERTOIRE/$nom";
    ...
    les "" ne marchent pas avec les constantes, elles seront interprétées comme chaines de caractères
    il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $image = REPERTOIRE.'/'.$nom;
    //pareil que 
    $image = REPERTOIRE."/$nom";
    //mais j'aime mieux les `'` que les `"`
    et

    Citation Envoyé par eric204044 Voir le message
    ...
    // on place l'image dans le répertoire repertoire_mini
    imagejpeg($image_p,REPERTOIRE_MINIATURES/"$nom", 100);
    ...
    il manque le point '.' de concaténation et la barre / est avant les "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    imagejpeg($image_p,REPERTOIRE_MINIATURES."/$nom", 100);

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    Merci beaucoup pour ton aide polkduran ça fonctionne super bien comme ça !

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

Discussions similaires

  1. Variable globale / Propriété des threads
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 03/10/2003, 10h49
  2. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20
  3. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 19h22
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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