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 '$Machines' is undefined


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut Variable '$Machines' is undefined
    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
     
          /** Chargement de la liste des machines
             * @var Site_Class $Site : Objet portant le site
             * @var ArrayObject $Machines[] : Liste des machines
             * @var PDOStatement $result : Objet PDO
             * @var int $i : Index pour la liste des machines
             */
        public function MachinesListe() :void
        {
            global $Site;
            $Site->Bdd->Phrase_SQL = "
    			SELECT machines.Id, machines.Nom, CONCAT(element_url.URL,'?',element_url.URL_Parametres) AS URL 
    			FROM machines
    			LEFT JOIN element_url ON (element_url.Element_Table_Id = 7 AND element_url.Element_Id = machines.Id)
    			INNER JOIN machines_constructeurs ON ((machines_constructeurs.Constructeur_Id=" . $this->Id . ") AND (machines.Id=machines_constructeurs.Machine_Id)) 
    			ORDER BY machines.Nom";
            $result = $Site->Bdd->Requete($Site->Bdd->Phrase_SQL);
            $i = 0;
            while ($row = $result->fetch()) {
                $Machines[$i] = new Machine_Class();
                $Machines[$i]->Id = $row['Id'];
                $Machines[$i]->Nom = utf8_encode_perso($row['Nom']);
                $Machines[$i]->URL = $row['URL'];
                $i ++;
            }
            if (isset($Machines)) {
                $this->Machines = $Machines;
            } else {
                unset($this->Machines);
            }
        }
    Eclipse me dit que la variable $Machines n'est pas définie. Pourtant il me semble que je l'ai définie via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            * @var ArrayObject $Machines[] : Liste des machines
    et j'ai essayé aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            * @var ArrayObject $Machines : Liste des machines
    mais rien n'y fait. Toutes mes variables sont bien définies sauf les array.

    Quelqu'un a une idée ?

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 91
    Points : 88
    Points
    88
    Par défaut
    pourquoi vous avez Choisis ce code pour définir votre Variable ?

    @var ArrayObject

    et pourquoi vous n'avez pas choisis ce code ??? $var = array() ;

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Je ne vois pas d'initialisation de $Machine dans le code.

    Moi perso j'initialise mes variables en début de fonction, mais vous pourriez faire ceci pour ne plus avoir l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
     $i = 0;
     $Machines = [];
            while ($row = $result->fetch()) {
                $Machines[$i] = new Machine_Class();
                $Machines[$i]->Id = $row['Id'];
                $Machines[$i]->Nom = utf8_encode_perso($row['Nom']);
                $Machines[$i]->URL = $row['URL'];
                $i ++;
            }

  4. #4
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par hocineaminoo Voir le message
    pourquoi vous avez Choisis ce code pour définir votre Variable ?

    @var ArrayObject

    et pourquoi vous n'avez pas choisis ce code ??? $var = array() ;
    Tout d'abord merci pour votre réponse.

    J'avais bien entendu essayé cette solution mais cela ne fonctionne pas. La variable n'est toujours pas reconnue.

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    * &var .... est un commentaire.

    Et comme ça ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      $Machines = array();
            while ($row = $result->fetch()) {
                $Machines[$i] = new Machine_Class();
                $Machines[$i]->Id = $row['Id'];
                $Machines[$i]->Nom = utf8_encode_perso($row['Nom']);
                $Machines[$i]->URL = $row['URL'];
                $i ++;
            }

    Ooopss je n'avais pas vu la réponse de Maître Pylos tout comme berthos apparemment.

  6. #6
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    Oui j'avais déjà essayé ça marche mais je trouve cela dommage de redéfinir à nouveau la variable.

    Merci beaucoup pour votre aide.
    Bonne journée

  7. #7
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut
    Bonjour MaitrePylos,

    Oui cela fonctionne mais je pensais que l'initialisation faite suffisait :
    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
    class Constructeur_Class extends Element_Class
    {
        // Attributs
        public $Machines = array();
        public $Class_Table_Id = 2;
        // Constantes
        // Méthodes
            /**Construction de l'objet
             *
             */
        function __construct()
        {
            parent::__construct();
            $this->Table_Get($this->Class_Table_Id);
            unset($this->Class_Table_Id); // On supprime ce champ car on a chargé la table
        }
            /** Chargement de la liste des machines
             * @var Site_Class $Site : Objet portant le site
             * @var ArrayObject $Machines[] : Liste des machines
             * @var PDOStatement $result : Objet PDO
             * @var int $i : Index pour la liste des machines
             * @var ArrayObject $row : Liste du tableau des machines
             */

  8. #8
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    @berthos.

    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public $Machines = array();
    Tu initialises la variable de classe $Machines accessible ensuite avec $this->Machines.

    $Machine et $this->Machines ne sont pas la même chose !

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    He ben oui, si tu ne donnes que 50% des infos, tu auras d'office une mauvaise réponse.
    Comme le dit @badaze, il faut utiliser le $this

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
     $i = 0;
     
            while ($row = $result->fetch()) {
                $this->Machines[$i] = new Machine_Class();
                $this->Machines[$i]->Id = $row['Id'];
                $this->Machines[$i]->Nom = utf8_encode_perso($row['Nom']);
                $this->Machines[$i]->URL = $row['URL'];
                $i ++;
            }

Discussions similaires

  1. Tester l'existence d'une variable composite avec undefined
    Par smccbbm dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/04/2017, 15h19
  2. [PHP 5.6] Variable JSON en Undefined index
    Par galagann dans le forum Langage
    Réponses: 4
    Dernier message: 28/12/2015, 18h59
  3. Variable me retourne undefined
    Par Namastaz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/03/2014, 13h12
  4. Variable qui retourne "undefined"
    Par chok371 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/01/2011, 20h27
  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