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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Comment récupérer une variable déclarée GLOBALE dans une classe PHP


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Points : 54
    Points
    54
    Par défaut Comment récupérer une variable déclarée GLOBALE dans une classe PHP
    Bonjour à tous,

    Voilà j'ai récupéré un script sur internet permettant d'insérer dans une base de donnée sql, un fichier.

    Dans ce code se trouve une classe FileFromDB et une fonction UPLOAD(). Dans la fonction j'ai besoin de récupérer la variable $ref que j'ai déclarée tout au début en global pour pouvoir pointer sur la bonne case dans ma base de données. (Et accessoirement je l'ai même redéclarer dans la fonction, on sait jamais...)

    Voici le 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
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php
    $ref = @$_POST['reference_projet'];
    global $ref;	
    echo $ref; // premier test
     
     
     
     
     
     
    /* Connexion à une base ODBC avec l'invocation de pilote */
     
     
    $dsn = 'mysql:dbname=bdd;host=localhost';
    $user = 'root';
    $password = '';
     
    try {
        $PDO = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
        echo 'Connexion échouée : ' . $e->getMessage();
    }
     
     
    class FileFromDB {
    private $filename;
    public function __construct($filename) {
    $this->filename = $filename;
    }
     
     
     
    public function upload($file) {
    global $PDO;
    global $ref;
     
     
    echo "référence ".$ref; // deuxieme test
     
     
    $stmt = $PDO->prepare('UPDATE file SET name = ?, type = ?, data_figure = ? WHERE ref = "$ref"');
    $stmt->bindParam(1, $this->filename);
    $stmt->bindParam(2, $file['type']);
    $stmt->bindParam(3, fopen($file['tmp_name'], 'rb'), PDO::PARAM_LOB);
    return $stmt->execute();
    }
     
    }
     
     
    $message = null;
    if (isset($_FILES['myFile'])) {
    $File = new FileFromDB($_FILES['myFile']['name']);
    $File->upload($_FILES['myFile']);
    $message = 'Votre fichier a bien été ajouté';
    }
     
     
     
    ?>
     
     
    <html>
    <head>
    <title>Upload</title>
    </head>
    <body>
    <form method="post" enctype="multipart/form-data">
    <?php echo $message; ?>
    <fieldset>
    <legend>Charger un fichier</legend>
    <p>
    <label for="myFile">Fichier</label>
    <input type="file" id="myFile" name="myFile" />
    </p>
    <p>
    <input type="reset" value="Annuler" />
    <input type="submit" value="Envoyer" />
    </p>
    </fieldset>
    </form>
    </body>
    </html

    Vous remarquerez que j'ai une ligne echo "reference :".$ref; que j'ai annoté //deuxieme test

    j'ai ajouté ceci juste pour voir si j'arrive à afficher $ref, évidemment non quand je clique sur envoyer je n'affiche pas $ref.

    Par contre le premier echo $ref correspondant au premier test fonctionne (tout en haut) !

    C'est donc que la variable lorsque je clique sur ENVOYER n'est pas récupérée dans la classe FileFromDB et donc nomplus dans la fonction UPLOAD().

    Voilà tout j'espère avoir été suffisamment clair, et j'espère que vous pourrez m'aider !

    très cordialement,
    globolite

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    Et puis je viens de m'apercevoir qu'en ajoutant une ligne $ref = "blabla"; juste avant la commande sql UPDATE c'est à dire dans la fonction UPLOAD et bien ça marche pas !!

    Alors qu'en remplçant "$ref" dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stmt = $PDO->prepare('UPDATE file SET name = ?, type = ?, data_figure = ? WHERE ref = "$ref"');
    par "blabla" et bien ça marche !

    Je ne comprends plus rien !

    Si quelqu'un a une petite idée.... :-(

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si j'ai bien suivi ta as un premier formulaire qui transmet reference_projet et amene sur ce deuxieme formulaire qui demande le fichier ?

    Tu pourrais faire un seul formulaire.
    Sinon il faut que ton deuxième formulaire retransmette également la valeur reçue du premier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    Oui c'est ça tu as un premier formulaire qui contient la donnée ref_projet et que je récupère à l'aide de @$_POST['ref_projet']

    C'est précisément cette variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ref = @$_POST['ref_projet'];
    que j'aimerais récupérer de sorte à ce que ma classe FileFromDB et la fonction UPLOAD() puisse utiliser.

    En fait lorsque je clique sur envoyer, (pour envoyer le fichier vers la base de donnée), la fonction ne sait pas où pointer parce qu'elle n'arrive pas à récupérer cette fameuse variable, celle-ci étant vide...

    Mais tu viens de me donner la réponse je crois, il suffirait peut être de déclarer un formulaire et puis de le récupérer dans la classe...

    je vais essayer !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    Génial !!

    En fait j'ai ajouté dans mon formulaire une zone de texte invisible reprenant la variable $reference.

    Ensuite je l'ai récupéré dans ma classe avec @$_POST le contenu de la la zone de texte invisible et ça marche !!!

    Merci Sabotage !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  2. Réponses: 3
    Dernier message: 06/09/2006, 09h06
  3. Comment récupérer la valeur de Expr1 dans une requête ?
    Par Tchupacabra dans le forum Access
    Réponses: 2
    Dernier message: 19/12/2005, 15h16
  4. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44
  5. Comment récupérer l'index du curseur dans une TStringGrid ?
    Par Sydaze dans le forum Composants VCL
    Réponses: 2
    Dernier message: 26/04/2005, 09h17

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