Page 1 sur 1

Fatal error: Call to undefined function ??

Posté : 13 mars 2015, 13:06
par vinzmeister
Bonjour tout le monde,

Il m'arrive cette bizarrerie que je n'arrive pas à résoudre, j'ai une fonction dans un A.php que j'appelle depuis un B.php sans avoir oublié d'inclure le A.php dans le B.php, et pourtant, j'ai cette erreur "Call to undefined function" quand je tente d'appeler ma fonction ?!

Y aurait-il un truc que j'aurai omis ? .. je sollicite votre aide sur ce point ...

Fichier A.php (PageUpdateRoleNNI.php)

Code : Tout sélectionner

<?php function cellule($num, $valeur, &$tableau, &$matrice, $nni_tmp){...} function affiche_liste_role($cx, $value){...} include_once("./Vue/menu_onglets.php"); echo "-----------------------------"; $menu = test(); include_once('Modele/connexion_REPORT.php'); include_once('Modele/FonctionsSQL.php');
...
[/code]

Et dans mon fichier B.php (qui est menu_onglets.php) j'ai :

Code : Tout sélectionner

<?php function affiche_menu(){....} echo "************************************\n"; function test(){ return "tu vas marcher oui ?!"; }
A l'éxécution, j'ai :
Image

Mon arborescence est :
Image


Merci pour votre aide !

Re: Fatal error: Call to undefined function ??

Posté : 13 mars 2015, 13:20
par synergie
Es-tu sûr que ton lien d'include est le bon ?

Ton include menu_onglets est dans le même dossier que la page ou tu appelles la fonction, donc pas besoin de ./Vue, je pense.

Re: Fatal error: Call to undefined function ??

Posté : 13 mars 2015, 14:23
par xTG
Pas de souci au niveau du chemin d'include à ce que je vois moi.

Je ne vois pas de raison à cette erreur.
Si tu modifies la chaîne echo du fichier menu_onglets.php cela change bien ?

Re: Fatal error: Call to undefined function ??

Posté : 13 mars 2015, 15:09
par Ryle
Attention aux includes, car tu n'appelles pas la page A via ton navigateur, mais la page index.php. Cette page index inclue ton script A, et le script A inclue le script B.

Les script inclus s'exécutent comme s'ils étaient physiquement présents dans le fichier parent qui les appels. Il faut donc bien aller chercher B non pas par rapport à A, mais par rapport à Index, d'où le besoin du chemin ./Vues/.

Re: Fatal error: Call to undefined function ??

Posté : 13 mars 2015, 15:53
par vinzmeister
Woaw, des experts s'occupent de mon cas, c'est cool :o

@Synergie, mon include est bien le bon, sinon j'aurai un message d'erreur du type :
Warning: include_once(./PageUpdateRoleNNI.php): failed to open stream: No such file or directory in (...)

@Ryle, j'avais bien compris la notion de l'include et qu'il faut se positionner par rapport au fichier en haut de la pyramide des include pour indiquer la bonne arborescence.

@xTG, oui, mon echo modifié s'affiche bien :
Image

En fait, je lance index.php (fichier A) où il y a un include_once sur le fichier B : PageUpdateRoleNNI.php dans le dossier Vue, et B inclut C : include_once("./Vue/menu_onglets.php"). L'arborescence de ces fichiers est celui dont j'ai mis l'image dans mon premier post.

Si vous me dites plus tard qu'ici le fichier A ne sert à rien, je suis d'accord, c'est que mon code avait évolué ces derniers jours.

Contenu entier de A (index.php) :

Code : Tout sélectionner

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php include_once('Vue/PageUpdateRoleNNI.php'); ?> </body> </html>
Contenu partiel de B : (PageUpdateRoleNNI.php)

Code : Tout sélectionner

<?php function cellule($num, $valeur, &$tableau, &$matrice, $nni_tmp){....} function affiche_liste_role($cx, $value){....} //include_once("./menu_onglets.php"); include_once("./Vue/menu_onglets.php"); echo "-----------------------------"; $menu = test(); include_once('Modele/connexion_REPORT.php'); include_once('Modele/FonctionsSQL.php'); ...
Contenu partiel de C (avec echo modifié) :

Code : Tout sélectionner

<?php function affiche_menu(){...} echo "++++++ Oui ça change bien /////// Comme quoi ".pathinfo($_SERVER['PHP_SELF'])['basename']." est bien appelé<br>"; function test(){ return "tu vas marcher oui ?!"; }
Malgré ça, j'ai toujours l'erreur :
Fatal error: Call to undefined function test()

Et je ne C.O.M.P.R.E.N.D.S. pas !! :priere:

Re: Fatal error: Call to undefined function ??

Posté : 13 mars 2015, 17:17
par vinzmeister
Bon, ça marche maintenant ....

Je n'ai rien fait de particulier sauf enlever le bout de code et remettre ...

Ce qui suit marche :
Fichier B :

Code : Tout sélectionner

include_once('Vue/menu_onglets.php'); $menu=affiche_menu(); include_once('Modele/connexion_REPORT.php'); include_once('Modele/FonctionsSQL.php');
Je ne sais pas pourqui ça a marché tout d'un coup ...
Enfin bon, je mets à RESOLU ...