Pb avec ma classe

cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006 - 13 août 2004 à 18:23
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006 - 22 août 2004 à 22:38
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

fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
14 août 2004 à 16:44
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
0
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006
16 août 2004 à 18:14
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!!!!!
0
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
16 août 2004 à 20:34
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
0
flashfun Messages postés 296 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 11 septembre 2004
21 août 2004 à 22:31
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) ]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flashfun Messages postés 296 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 11 septembre 2004
21 août 2004 à 22:33
erreur :

global DB_CX;
FlashFun 8-) [mailto:toujours_zen@hotmail.com :question) ]
0
flashfun Messages postés 296 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 11 septembre 2004
21 août 2004 à 22:34
erreur :

global $DB_CX;

FlashFun 8-) [mailto:toujours_zen@hotmail.com :question) ]
0
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006
22 août 2004 à 22:38
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)
0
Rejoignez-nous