cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 juillet 2006
-
13 août 2004 à 18:23
cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 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
cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 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!!!!!
fabrice_pi
Messages postés91Date d'inscriptionvendredi 12 mars 2004StatutMembreDerniè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.
cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 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)