Pb avec ma classe

Signaler
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006
-
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006
-
voila, j'utilise 1 classe de connexion (MySQL), classe que j'appelle dasn mon fichier de connexion à la base. tout va bien il me suffit d'inclure ce fichier lorsque j'en ai besoin... cependant, dans 1 fichier à part contenant les fonction que j'appelle tout au long de mon site se pose mon pb: la première fonction citée peut tout à fait utiliser ma classe de connexion, mais si cette fonction en appelle une autre qui a elle meme besoin d'acceder a MySQL via cette classe, g droit a 1 msg d'erreur:"Call to a member function on a non-object in ..." et si j'inclue dans cette 2° fonction appellé le fichier de connexion il me dit :"Cannot redeclare class db in ..."
voila g sais pa si c'est bien clair! si quelqu'un peut m'aider. merci

7 réponses

Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

Salut,

Non c'est pas clair ! Mets le code de ta ligne d'include, de ta première fonction et de ta deuxième fonction ! On verra après...

Fabrice
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

fabrice_pi>voila mon code:
_ la 1° fonction avec appel au fichier de connexion a ma base de données, et appel de la 2° fonction:

function save_bdd()
{
include_once("connex.inc.php");
...

...
$requete_struct_table=struct_table($nom_table); //appel de la fonction permettant de créer la structure de la table
...

_ ma 2° focntion appelé par la 1°:

function struct_table($table)
{
include_once("connex.inc.php");
$var=0;
while($type=$DB_CX->DbFetchField($var))
{
print_r($type);
}
$requete_struct_table="CREATE TABLE '".$table."' (' IF NOT EXISTS\n";
return($requete_struct_table);
}

le problème est donc le suivant: si je laisse tel quel, la 2° fonction va me renvoyer l'erreur suivante:
"Fatal error: Call to a member function on a non-object in ..."
j'obtiens aussi cette erreur si je ne mets la ligne "require.." que dans la 1° fonction. Mais si je mets require (ou include) dans les 2 fonctions, j'obtiens l'erreur suivante:
"Fatal error: Cannot redeclare class db in ..." tout simplement parce que ma classe se retrouve appelé 2 fois (1 fois par fonction!)
Je ne sais vraiment pas comment faire...HELP!!!!!
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

Salut,

Je ne comprends toujours pas :-o tu me donnes le code d'appel à la fonction struct_table et ensuite sa defintion, il n'y a pas 2 appels à la même fonction !
Ton message d'erreur signifie que tu appelles une fonction d'un objet qui n'existe pas (la fonction, pas l'objet). Le seul objet que je vois dans le présent code est $DB_CX avec la fonction DbFetchField donc une possibilité est que DbFetchField est mal orthographié...

Au passage tout ce qui est include_once et require_once ne se met pas dans les fonctions, mais une seule fois au début du fichier.

Fabrice
Messages postés
296
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
11 septembre 2004

A quel ligne se situe l'erreur?

$DB_CX est bien créé?

si oui, au début de tes fonction inscrit :

globale DB_CX;

FlashFun 8-) [mailto:toujours_zen@hotmail.com :question) ]
Messages postés
296
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
11 septembre 2004

erreur :

global DB_CX;
FlashFun 8-) [mailto:toujours_zen@hotmail.com :question) ]
Messages postés
296
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
11 septembre 2004

erreur :

global $DB_CX;

FlashFun 8-) [mailto:toujours_zen@hotmail.com :question) ]
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

oki, merci beaucoup flashfun... ce ke tu m'as conseillé de faire marche parfaitement!!!
fabrice_pi->g trouvé 1 terme plus clair pour expliker mon pb: en gros, g cherchai a appeler 1 fonction-membre d'une classe à l'intérieur d'une fonction-membre d'une autre classe ,n'ayant rien a voir avec la première et se trouvant dans un autre fichier... mais le pb est résolu grace à global $DB_CX (encore merci flashfun)