Accueil
Forum PHPBoost
Développement
Développement des modules
Mini-module : Problème lors de l'appel de fonction
Forum PHPBoost
Développement
Développement des modules
Mini-module : Problème lors de l'appel de fonction
Forum PHPBoost
Bonjour,
Je suis en train de développer un module pour PhpBoost et pour ce module, j'ai également développer un mini-module. Le mini-module s'affiche bien, pas de problème jusque là.
Le problème est lorsque j'appelle une fonction externe que j'ai créée ailleurs.
Voici mon code PHP :
/course/kernel/info_user.class.php
Code PHP :
/course/course_mini.php
Code PHP :
Donc dans course_mini.php, j'ai mis deux ligne en commentaires. En fait, quand je les commente, tout se passe bien, mon mini-module s'affiche, et une fois que je les décommente, le site tout entier ne s'affiche plus. Une belle page blanche et rien de plus. J'ai constaté aussi que quand je faisais juste un require_once à la place de l'include_once, j'avais aussi directement cette page blanche. Avec un include_once, ca passe, mais une fois que j'exécute ma fonction, page blanche.
Que se passe-t-il ?
Merci d'avance pour vos réponse
Je suis en train de développer un module pour PhpBoost et pour ce module, j'ai également développer un mini-module. Le mini-module s'affiche bien, pas de problème jusque là.
Le problème est lorsque j'appelle une fonction externe que j'ai créée ailleurs.
Voici mon code PHP :
/course/kernel/info_user.class.php
Code PHP :
<?php class Info_user { function Info_user() { global $User; $this->user_id=$User->Get_attribute('user_id'); } function get_user_fname($user_id_given=0) { ($user_id_given==0)?$user_id=$this->user_id:$user_id=$user_id_given; global $Sql; $user_fname = $Sql->query("SELECT f_prenom FROM ".PREFIX."member_extend WHERE user_id=".$user_id,__LINE__,__FILE__); if(empty($user_fname)) return "##Error : bad user id##"; else return $user_fname; } }
/course/course_mini.php
Code PHP :
<?php function course_mini($position, $block) { global $LANG, $Session, $User; load_module_lang('course'); $tpl = new Template('course/course_mini.tpl'); import('core/menu_service'); MenuService::assign_positions_conditions($tpl, $block); //include_once('/course/kernel/info_user.class.php'); //Info_user::get_user_fname(2); $tpl->assign_vars(array( 'TITLE_MODULE' => $LANG['title_mini_module'], 'IS_ADMINISTRATOR' => (($User->check_level(2))?true:false), 'MY_PROGRESSION' => $LANG['my_progression'], )); return $tpl->parse(TEMPLATE_STRING_MODE); } ?>
Donc dans course_mini.php, j'ai mis deux ligne en commentaires. En fait, quand je les commente, tout se passe bien, mon mini-module s'affiche, et une fois que je les décommente, le site tout entier ne s'affiche plus. Une belle page blanche et rien de plus. J'ai constaté aussi que quand je faisais juste un require_once à la place de l'include_once, j'avais aussi directement cette page blanche. Avec un include_once, ca passe, mais une fois que j'exécute ma fonction, page blanche.
Que se passe-t-il ?

Merci d'avance pour vos réponse
Ta classe comporte plusieurs problème et elle n'est pas cohérente par rapport à ton appel.
La méthode get_user_fname n'est pas statique. Ensuite je te conseil de passer ton code à PHP 5 (de toute façon avec la méthode statique tu n'as pas le choix.
Je te propose :
Code PHP :
Correction des problèmes, passage de ta fonction en statique.
Edité par ReidLos Le 20/03/11 à 20h01
La méthode get_user_fname n'est pas statique. Ensuite je te conseil de passer ton code à PHP 5 (de toute façon avec la méthode statique tu n'as pas le choix.
Je te propose :
Code PHP :
<?php class Info_user { private static $user_id; public function __static() { global $User; self::$user_id = $User->Get_attribute('user_id'); } public static function get_user_fname($user_id_given = null) { global $Sql; $user_id = $user_id_given == null ? self::$user_id : $user_id_given; $user_fname = $Sql->query("SELECT f_prenom FROM '".PREFIX."'member_extend WHERE user_id = '" . $user_id . "'",__LINE__,__FILE__); if(empty($user_fname)) throw new Exception("##Error : bad user id##"); else return $user_fname; } } ?>
Correction des problèmes, passage de ta fonction en statique.
Edité par ReidLos Le 20/03/11 à 20h01
En effet, j'ai copié pas mal sur du code déjà existant dans phpboost pour être "aux normes".
Mais ceci dit, même après correction de la classe, j'ai toujours la page blanche une fois que je fait le require_once. Si je fais un include_once à la place, c'est la page blanche dès que j'appelle la fonction statique
Merci pour la réponse aussi
Mais ceci dit, même après correction de la classe, j'ai toujours la page blanche une fois que je fait le require_once. Si je fais un include_once à la place, c'est la page blanche dès que j'appelle la fonction statique

Merci pour la réponse aussi
Ton mini module est appelé sur n'importe qu'elle page, il faut donc que tu rajoute le path dans le include.
Code PHP :
Code PHP :
require_once(PATH_TO_ROOT .'/course/kernel/info_user.class.php');
Ca je n'y avais pensé par contre ! Et c'est tellement logique 
Un grand merci, ça fonctionne parfaitement bien à présent
Bonne soirée

Un grand merci, ça fonctionne parfaitement bien à présent

Bonne soirée
1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne: Aucun membre connecté
Utilisateur en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie





PHPBoost

Support
Téléchargements
Développement
Communauté














