Fatal error: Call to undefined method

Eléphant du PHP | 89 Messages

14 févr. 2010, 19:24

Bonsoir,

J'ai un problème avec une méthode, j'ai le message d'erreur: Fatal error: Call to undefined method
Voici mon User.class.php
<?php

class User {

	private $login;
	private $motDePasse;


	public function __construct ($log,$pass){
		$this->login=       $log;
		$this->motDePasse=  $pass;
	  
	}

	public function Afficher(){
	 echo "$this->login";
	 echo "<br/>";
	 echo "$this->motDepasse";
	}

}
?>
Mon index1.php
<?php

include ("./Connexion.class.php");
include ("./config.php");
include ("./User.class.php");



$_POST['login']='coucou';
$_POST['pwd']='loulou';

if(isSet($_POST['login']) && isSet($_POST['pwd'])){
	$log=$_POST['login'];
	$pass=$_POST['pwd'];

	$c=new User($log,$pass);
	$c->Afficher();

	$database= new Mysql ($serveur,$login,$mdp,$database); //Initialisation des variables et connexion auto à la BDD
	$database->execRequete( "SELECT pwd FROM tbl_user");



}
?>
Je n'arrive pas à trouver l'erreur, pourtant j'ai bien instancier ma classe User.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 févr. 2010, 20:15

Bonsoir,

Donne nous l'erreur complète parce qu'elle contient la méthode qui n'est pas défini, la ligne à laquelle l'erreur survient.
D'ailleurs, en regardant ces informations, tu trouveras peut être toi même la réponse ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 89 Messages

14 févr. 2010, 20:33

Oui, voici le message: Fatal error: Call to undefined method User::afficher() in D:\Programme\wamp\www\telesurveillance\connexion\index1.php on line 17
Cordialement

ViPHP
ViPHP | 5462 Messages

14 févr. 2010, 20:39

bizar ca me le fait pas moi,
parcontre j'ai une erreur sur
echo "$this->motDepasse";
c'est
echo "$this->motDePasse";

Eléphant du PHP | 89 Messages

14 févr. 2010, 20:45

Ah bon chez toi ca marche?
J'ai changer "motDepasse" par motDePasse" Mais j'ai toujours la même erreur.
Cordialement

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

24 févr. 2010, 09:04

Comme le message d'erreur te parle de "User::afficher", essaie donc de renommer ta fonction en "afficher" au lieu de "Afficher", et de l'appeler ainsi dans ton script ($user->afficher()). Si ça corrige le problème il va falloir que tu nous donnes ensuite des indications sur la façon dont tu as installé PHP, ton système, etc... Parce que le case-sensitive sur les fonctions, c'est pas de base :)

Petit nouveau ! | 1 Messages

02 janv. 2014, 06:29

Je viens d'avoir le même problème que vous et en cherchant une solution sur le net, j'ai pu tomber sur ce forum.
je vais vous présenter mon travail pour bien comprendre ma solution.

J'ai ma classe connection.php
ici le code:
<?php
class connection{
var $username;
var $password;
var $host;
var $dbname;

function __construct( $h,$db,$user,$pass){
$this->host = $h;
$this->dbname = $db;
$this->username = $user;
$this->password = $pass;
echo " les variables sont initialisés";
}

function afficherinfo(){
echo " ". $this->host;
echo "" . $this->dbname;
echo "". $this->username;
echo "". $this->password;
}

function __destruct(){echo 'destructed';}

}

?>
j'ai instancié ma classe dans ce fichier testclasse.php
ici le code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Brain| Login</title>
</head>

<body>
<?php
include("connection.php");
$con = new connection('localhost','brain_db','brain', '?????');
$con->afficherinfo();
?>
</body>
</html>
Le problème est survenu quand je mettais le destructeur au dessus de la fonction afficherinfo. Maintenant le programme marche correctement!

Petit nouveau ! | 4 Messages

03 janv. 2014, 05:03

J'ai copié le code initial chez moi, et ça marche aussi.