j'ai un soucis dans un code, et je ne vois pas où je fais une erreur ...
include('includes/mysql.inc.php'); /* inclus mes params + création d'un objet de type cClass qui va regrouper toutes mes requetes */
$contact= new cContactsPro($_POST['nomContact'],$_POST['prenomContact'],$_POST['adresseContact']);
/* là je crée un objet cContactPro qui hérite de cContact */
/* maintenant je fais un test sql en dehors de cContact pour voir si ça marche : */
$baseMySQL->mysql_requete("insert into tbl_contacts (contactId) values('')",$baseMySQL->nombre_requete());
/* et ça marche ... */
/* et maintenant je tente une requete depuis la classe cContact : */
$contact->putMySQL();
/* et voici la méthode */
protected function putMySQL()
{
$tempsCourant=time();
$baseMySQL->mysql_requete("INSERT INTO tbl_contact (contactId,userId,contactNom,contactPrenom,contactAdresse,contactDateEntree) VALUES('','$_SESSION[user_id]','$this->nom','$this->prenom','$this->adresse','$tempsCourant')",$baseMySQL->nombre_requete);
}
bien évidemment, le requete normale fonctionne, et celle dans mon cContact me renvoie ça : Fatal error: Call to a member function mysql_requete() on a non-object in
Bon dernièrement j'ai eu droit à mon lot de "non-object".
En fait ca v eut dire que tu fais appel à qqchose qui ne renvoit rien. Il doit y avoir une variable que tu appelle et dont tu n'as pas testé lme résultat (un isset suffit).
Il se peut que ce soit le résultat d'une requete qui soit vide et que tu souhaite utiliser ensuite.
Bon ça c'est la réponse rapide, maintenant je vais voir si par hasard je tombe dessus dans ton code (que je n'ai pas encore regardé )
__________________________
Gabacho
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (les Shadocks)
ajouterContacts.php :
[code]
$contact= new cContactsPro($_POST['nomContact'],$_POST['prenomContact'],$_POST['adresseContact']);
echo $baseMySQL;
$contact->putMySQL();
[/code]
class.cContacts.php :
[code]
function putMySQL()
{
$tempsCourant=time();
echo 'test : '.$baseMySQL;
$baseMySQL->mysql_requete("INSERT INTO tbl_contact (contactId,userId,contactNom,contactPrenom,contactAdresse,contactDateEntree) VALUES('','$_SESSION[user_id]','','','','')",$baseMySQL->nombre_requete);
}[/code]
class.mysql.php :
[code] function __tostring()
{
return "Cette classe permet d'établir une connexion mysql.<br />";
}[/code]
et voila ce que ça renvois :
[quote]Cette classe permet d'établir une connexion mysql.
test :
Fatal error: Call to a member function mysql_requete() on a non-object in d:\perso\pti\leSite\agenda\includes\class.cContacts.php on line 51[/quote]
En théorie un INSERT renvois TRUE si c'est ok et FALSE/RIEN si pas OK, ça pourrais être ce que tu dis quand tu parle de quelque chose qui ne renvois rien.
Dans ma méthode putMySQL je tente un affiche de l'utilité de la classe mysql (echo $baseMySQL) mais ça ne m'affiche rien, alors que dans le fichier principale ça marche.
ma classe mysql étant chargé dans le ajouterContact et ma classe contact aussi, je supose qu'ils devraient se voir non ?
PowOx
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
Je crois avoir touvé ton pb:
la variable $baseMySQL est censé etre un objet vu que c'est elle qui appelle la fonction-membre $baseMySQL()!
Hors, dans tes fonctions tu marques ceci:
[quote]
$baseMySQL->mysql_requete("...");
[/quote]
Mais il faudrait plutot marquer comme ceci:
[quote]
$this->baseMySQL->mysql_requete("...");
[/quote]
car sinon la variable $baseMySQL est considérée comme interne a la fonction et non comme un objet venant d'ailleurs (classe parente, autre fonction-membres...)
ou encore marquer:
[/quote]
Mais il faudrait plutot marquer comme ceci:
[quote]
$GLOBALS['baseMySQL']->mysql_requete("...");
[/quote]
si ton objet est totalement extérieur a ta classe
__________________________
[url=http://www.forum.moteurprog.com/?url=FAQ.php&langage=PHP]FAQ PHP[/url]
[img]http://www.firefox.fr/boutons/getfirefox_large2.png[/img]
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
En effet, avec GLOBALS ça marche trés bien,
j'avais pensais à SESSION qui se rapproche, mais bizarement ça marche pas franchement ... puis GLOBALS c'est bien aussi