Call to a member function getResultats() on a non-object

Petit nouveau ! | 2 Messages

22 juil. 2013, 07:27

Salut je suis débutant en php, j'ai trois classe Etudiant, ListResultat(les résultats des tests passés par ce étudiant), EtudiantDao(intermédiaire entre la classe Etudiant et la Base de donnée), et le fichier testDaoEtudiant, ce dernier ne sert qu'a tester la classe EtudiantDao et j'ai l'erreur Call to a member function getResultats() on a non-object , le problème est situé dans la classe EtudiantDao dans la méthode create, svp aidez moi.
<?php
require_once('ListResultats.class.php')
class Etudiant {
	private $idEtudiant="";
	private $nomEtudiant="";
    private $prenom="";
	private $nomUtilisateur="";
	private $motDePasse="";
	private $lResultats;

	public function __construct()	//Constructeur
	{
		$lResultats = new ListeResultats();
	}	
	public function getIdEtudiant()
	{
			return $this->idEtudiant;
	}
	
	public function setIdEtudiant($idEtudiant)
	{
			$this->idEtudiant = $idEtudiant;
	}
	public function getNomEtudiant()
	{
			return $this->nomEtudiant;
	}
	
	public function setNomEtudiant($nomEtudiant)
	{
			$this->nomEtudiant = $nomEtudiant;
	}
    
	public function getPrenom()
	{
			return $this->prenom;
	}
	
	public function setPrenom($prenom)
	{
			$this->prenom = $prenom;
	}
	
	public function getNomUtilisateur()
	{
			return $this->nomUtilisateur;
	}
	
	public function setNomUtilisateur($nomUtilisateur)
	{
			$this->nomUtilisateur = $nomUtilisateur;
	}
	
	public function getMotDePasse()
	{
			return $this->motDePasse;
	}
	
	public function setMotDePasse($motDePasse)
	{
			$this->motDePasse = $motDePasse;
	}
	
	public function getListResultats()
	{
			return $this->lResultats;
	}
	
	public function setListResultats($lResultats)
	{
			$this->lResultats = $lResultats;
	}
	
	public function __toString()
	{
		return "Etudiant{".$this->idEtudiant.",".$this->nomEtudiant.",".$this->prenom."}";
	}
}
?>
<?php
require_once('Navigable.interface.php');
require_once('Resultat.class.php');

class ListeResultats
{
	private $resultats;
	public function __construct()	//Constructeur
	{
		$this->resultats = array();
	}	
	
	public function add($r)
	{
			array_push($this->resultats,$r);  
	}
	
	public function getResultats()
	{
			return ($this->resultats);      
	}	
}
?>
<?php
include_once('../classes/Etudiant.class.php'); 
include_once('../classes/ListResultats.class.php'); 
include_once('../classes/Resultat.class.php'); 
require_once('../classes/Database.class.php'); 

class EtudiantDAO
{	
	public function create($et)
	{
		if($this->exist($et))
			{
				return false;
			}else
			{
				try
				{
					$request1 = "INSERT INTO etudiant (idEtudiant, nomEtudiant, prenom, nomUtilisateur, motDePasse) VALUES     ('".$et->getIdEtudiant()."','".$et->getNomEtudiant()."','".$et->getPrenom()."','".$et->getNomUtilisateur()."','".$et->getMotDePasse()."')";
					$db = Database::getInstance();
					$lResultats = $et->getListResultats();
					if(Count($lResultats->getResultats()) > 0) 
					{
						while($listeResultats->next())
						{
							$request2 = "INSERT INTO resultat (idEtudiant, idTest, scoreTest, dateHeureTest) VALUES ('".$et->getIdEtudiant()."','".$listeResultats->getResultatCurrent()->getIdTest()."','".$listeResultats->getResultatCurrent()->getScoreTest()."','".$listeResultats->getResultatCurrent()->getDateHeureTest()."')";
							$db->exec($request2);
						}
					}
					return $db->exec($request1);
				}
				catch(PDOException $e)
				{
					throw $e;
				}
			}
	}
	
}
?>

<h3>PDO :</h3>
<?php
require_once('../classes/Etudiant.class.php');
require_once('../classes/ListEtudiants.class.php');
require_once('../DAO/EtudiantDAO.class.php');

$dao = new EtudiantDAO();
  
$etudiant1 = new Etudiant();  

$etudiant1->setIdEtudiant("e3");
$etudiant1->setNomEtudiant("Benaddi");
$etudiant1->setPrenom("Hassan");
$etudiant1->setNomUtilisateur("chel26017903");
$etudiant1->setMotDePasse("bobo78");

echo $etudiant1;

if ($dao->create($etudiant1))
	echo "<br />Le Etudiant ".$etudiant1->getIdEtudiant()." est cree";
?>
<?php
require_once('../configs/config.php');
class Database
{	
	private static $connexion = null;
	
	private function __construct() {}
	
	public static function getInstance()
	{
		if(self::$connexion == null)
			self::$connexion = new PDO(
				"mysql:host=".Config::DB_HOST.";dbname=".Config::DB_NAME."", 
				Config::DB_USER, 
				Config::DB_PWD);
		return self::$connexion;
	}
}
?>
<?php	
	interface Config
	{	
		const URL = "localhost/TestAcademique";
		const DB_HOST = "localhost";
		const DB_USER = "root";
		const DB_PWD = "";
		const DB_NAME = "bdtests";
	}
?>
Modifié en dernier par moogli le 22 juil. 2013, 22:00, modifié 1 fois.
Raison : ajout bb code !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 juil. 2013, 22:04

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ


salut,

tu essai d'utiliser une méthode sur quelque chose qui n'est pas un objet, donc tu a une erreur.

en clair ce que tu pense être un objet est null ou une valeur "simple" (entier, chaine etc)

vu la densité du code je vais pas plus loin sans un condensé du code et le message d'erreur.
de plus de déplace ton message dans la section "php débutant"

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 2 Messages

22 juil. 2013, 22:30

tu veux dire que je le mettrerai dans php debutant c'est ca

Petit nouveau ! | 5 Messages

23 juil. 2013, 12:27

Bonjour,

Il a une erreur dans le constructeur de ta classe Etudiant.

Essaye de remplacer :
$lResultats = new ListeResultats();
par :
$this->lResultats = new ListeResultats();