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
$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 :
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 ^^
Partager