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 :

Problème avec un tableau d'objet


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Problème avec un tableau d'objet
    Bonjour,

    J'ai déclaré un tableau d'objet, et quand j'appelle une méthode de la classe de l'objet contenu dans le tableau, j'ai une erreur de syntaxe. Voici la ligne posant problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $numpersonne = $this->personne[$n]->getnum();
    et l'erreur retourné



    Fatal error: Call to a member function getnum() on a non-object in /var/www/test/index.php on line 23



    Voici ma classe entière si il y a besoin :

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    include "class.personne.php";
     
     
    class Liste
    {
    	private $personne = array();
    	private $numdeSCD = array();
     
    	public function recupnumdatebaserh() // récupération numero RH (7545) et date de départ
    	{	
           $fichier = fopen("CHCM_Upload_Excel_Template_V2_0.csv", "r");
    	   $n = 0;//indice du tableau personne
    		$ligne = 0;
    		while (($data = fgetcsv($fichier, 1000, ";")) !== FALSE) {
    	        $num = count($data); //nombre de colonne dans le fichier
    			  for( $c=0; $c < $num; $c++) {
     
    				if ($c == 2 && !empty($data[$c]) && $ligne!==0){ // Si le curseur est positionné dans la colonne des numéros RH et que ce numéro n'est pas nulle
    					$this->personne[$n] = new Personne(); //création d'un nouvel objet personne pour la nouvelle ligne
    					$this->personne[$n]->setnum($data[$c]);
    			    }	
    				$numpersonne = $this->personne[$n]->getnum();	
    				if($c==3 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des GID de départ et que le numéro RH de la même ligne n'est pas nulle
    					$this->personne[$n]->setgid($data[$c]);					
    				}
                    if($c==4 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des noms de départ et que le numéro RH de la même ligne n'est pas nulle
    					$this->personne[$n]->setnom($data[$c]);	
    				}
    				if($c==5 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des prénoms de départ et que le numéro RH de la même ligne n'est pas nulle
    					$this->personne[$n]->setprenom($data[$c]);	
    				}
     
     
    				if($c==27 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des date de départ et que le numéro RH de la même ligne n'est pas nulle
    					$this->personne[$n]->setdate($data[$c]);
     
    				}
    				if($c==36 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des noms de départ et que le numéro RH de la même ligne n'est pas nulle
    					$this->personne[$n]->setservice($data[$c]);	
    				}
    				if($c==37 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des sponsor de départ et que le numéro RH de la même ligne n'est pas nulle
    					$this->personne[$n]->setsponsor($data[$c]);	
    					$n++; //vu que c'est le dernier champ de la ligne on peut changer de ligne
    				}
     
    			  }	
    			  $ligne++;
     
     
    		}
     
    		fclose($fichier);
        }
    	public  function recupnumSCD()
    	{
    		$fichier = fopen("scdexport_full.csv", "r");
    		$n = 0;
    		while (($data = fgetcsv($fichier, 1000, "!")) !== FALSE) {
    	        $num = count($data);
     
    			for ($c=0; $c < $num; $c++) {
    				if ($c == 44 && !empty($data[$c])){
    					$this->numdeSCD[$n]=$data[$c];
    					$n++;
    				}
     
     
    			}
    		}
    		fclose($fichier);
    	}
    	public function compare()
    	{
    		$nbligneRH = count($this->personne);
    		$nbligneSCD = count($this->numdeSCD);
    		$today = date("Ymd");
    		for($i=0;$i<$nbligneRH;$i++){
    			$x=0;
    			while($x<$nbligneSCD){
    				if($this->personne[$i]->getnum() == $this->numdeSCD[$x])break;
    				$x++;
    				if($x == $nbligneSCD && $today < $this->personne[$i]->getdate())echo $this->personne[$i]->getnum()." : ".$this->personne[$i]->getdate()."<br/>";
    			}
    		}
     
     
     
     
     
    	}
    }
    Avez-vous une idée ?
    Merci ^^

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Tu as oublié le $ devant data[].

    La fonction empty n'accepte qu'une variable en paramètre. Pas le retour d'une fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $var = $this->personne[$n]->getnum();
    $bool = empty($var);
    http://fr.php.net/empty

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    En effet ! merci ! mais j'ai un autre soucis, j'ai mis à jour mon premier message.

    J'ai l'impression que quand je crée l'objet Personne() dans la tableau, il ne l'ajoute pas dans le tableau de la classe, puisque une fois sortie de la condition selon le message d'erreur il n'y a pas d'objet dans la tableau.

    Y'a-t-il un problème dans la déclaration de mon tableau et dans son remplissage ?

    private $personne = array(); // déclaration
    $this->personne[$n] = new Personne(); // création d'un objet

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    L'occurence $n de $this->personne n'existe pas.

    Ton tableau n'a pas été intialisé lorsque tu appelles l'occurence $n du membre $personne.

    Soit tu l'initialize dans le constructeur. Soit ton algorythme de remplissage est erroné.

Discussions similaires

  1. Problème avec un tableau d'objets
    Par ChPr dans le forum Android
    Réponses: 4
    Dernier message: 30/12/2014, 11h16
  2. Problème avec un tableau d'objet
    Par tyrant dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 18/11/2006, 19h45
  3. un problème avec un tableau d'objet, erreur bete ?
    Par Heero_2040 dans le forum C++
    Réponses: 12
    Dernier message: 13/07/2006, 13h20
  4. problème avec un tableau dans un insert ...
    Par vbcasimir dans le forum Langage
    Réponses: 3
    Dernier message: 02/11/2005, 14h31
  5. [TTreeView] Problème avec les pointeurs d'objet
    Par BlackWood dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/07/2004, 14h31

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