Annonces
Livre d'or

Par ReidLos

@ "Visiteur" : Sign in and post your question on the forum in English preferably please.

@VB_Godfather : Merci de ton soutien

Concernant la tra [Suite...]

Livre d'or

Mini sondage
Disposez-vous de PHP 5 chez votre hébergeur ?








Résultats

 
   Le 20/03/11 à 14h48 Citer      

Booster Fuzil

Groupe: Membre

Sexe:
Inscrit le: 14/03/11
Messages: 65
Lieu: Belgium
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 :
<?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 ? :s

Merci d'avance pour vos réponse :)
____________________
Yannick

pm yanx1990@gmail.com http://www.yanx.eu    
   Le 20/03/11 à 20h01 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 7980
Lieu: Alsace
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 :
<?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

pm http://www.phpboost.com    
   Le 20/03/11 à 20h10 Citer      

Booster Fuzil

Groupe: Membre

Sexe:
Inscrit le: 14/03/11
Messages: 65
Lieu: Belgium
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 :s

Merci pour la réponse aussi ;)
____________________
Yannick

pm yanx1990@gmail.com http://www.yanx.eu    
   Le 20/03/11 à 20h19 Citer      

Administrateur

Chef de projet
Développement Noyau

Sexe:
Inscrit le: 27/02/09
Messages: 7980
Lieu: Alsace
Ton mini module est appelé sur n'importe qu'elle page, il faut donc que tu rajoute le path dans le include.

Code PHP :
require_once(PATH_TO_ROOT .'/course/kernel/info_user.class.php');

pm http://www.phpboost.com    
   Le 20/03/11 à 20h23 Citer      

Booster Fuzil

Groupe: Membre

Sexe:
Inscrit le: 14/03/11
Messages: 65
Lieu: Belgium
Ca je n'y avais pensé par contre ! Et c'est tellement logique :p


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

Bonne soirée
____________________
Yannick

pm yanx1990@gmail.com http://www.yanx.eu    
1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
Annonces