Bug sur fonction colors cadre en fonction level id

Fermé
ivan - 1 août 2014 à 11:29
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 - 1 août 2014 à 16:49
Bonjour,

j'ai fais une fonction

function GetCadreSelonSexeColorById($membreId,$alignCenter=true,$class='avatar_membre')
 
{
    if(ctype_digit($membreId)||is_int($membreId))
    {
 
    $rang = GetValueFromQuery("SELECT membre_rang as value FROM forum_membres WHERE membre_id=".$membreId);
    $value = GetValueFromQuery("SELECT membre_avatar as value FROM forum_membres WHERE membre_id=".$membreId);
    $sex = GetValueFromQuery("SELECT membre_sexe as value FROM forum_membres WHERE membre_id=".$membreId);
    $level = intval($rang);
    $str = ($alignCenter) ? '' : '';
 
		$avatarHighLevel = function($level) use($class){
			$str = "";
				if($level == ADMIN)	$str .=  '<div class="page_admi"></div>';
 
			else if($level == MODO) $str .=  '<div class="page_modo"></div>';
 
			return $str;
		};
 
    if(!empty($value))
 
    { 
		if(file_exists(DIR_AVATAR."/avatar_membres/".$value))
        	$str .= '<div class="page_question"></div>';
		else{
			$a = $avatarHighLevel($level);
				if($a!="")
					$str .= $a;
				else
					$str .= '<div class="page_question"></div>';
		}
    }else {
 
        if($level == ADMIN || $level == MODO || $level == NEWSER || $level == HOMME || $level == FEMME)
 
            $str .= '<a class="separator" title=""></a>';
 
 
 
        $a = $avatarHighLevel($level);
	  if($a!="")
			$str .= $a;
      else if($level == NEWSER)
 
            $str .=  '<div class="page_newswer"></div>';
 
        else if($sex===HOMME && $value=="")
 
            $str .=  '<div class="page_homme"></div>';
 
        else if($sex===FEMME && $value=="")
 
            $str .=  '<div class="page_femme"></div>'; 
 
        else
 
        {
 
            $str .= '<div class="page_question"></div>';
 
        }
 
    }
 
    $str .= ($alignCenter) ? "" : '';
 
 
 
    return $str;
    }else{
		return '<div class="page_question"></div>';
	}
}



et sur ma page pour affiche

<?php ''. GetCadreSelonSexeColorById($data1['membre_sexe'],$data1['membre_id']) . '';?>


le souci il ne veux pas colorer mon cadre en fonction des level pseudo

      .page_admi
	  {
	  background-color:#FF0000;
	  }
      .page_modo
	  {
	  background-color:#00FF00;
	  }

      .page_homme
	  {
	  background-color:#0000FF;
	  }
      .page_femme
	  {
	  background-color:#FF00FF;
	  }



merci
A voir également:

14 réponses

sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 1/08/2014 à 11:37
Bonjour,

Si tu convertis ton $level en int, tu ne peux pas tester apres avec une chaine de caractere.

$level = intval($rang); 

Apres tu fais

if($level == ADMIN)

C'est faux.

Comment est stocke la valeur de membre_rang dans ta bdd ? Si c'est un string, alors supprimes ton code qui convertit ce resultat en nombre et fais un test en ajoutant des guillemets pour chaque valeur :

$level = intval($rang); 
=> A supprimer

if($level == ADMIN)

REMPLACER PAR
if($level == "ADMIN")


(Message redige sans accent pour cause de bug de message vide)

"Il vaut mieux savoir tout chercher que chercher a tout savoir."
0
merci, mais ca fait erreur fatal

Fatal error : Uncaught exception 'LogicException' avec le message «Fonction» CadreSelonSexeColor 'est introuvable (fonction' CadreSelonSexeColor 'est introuvable ou non valide nom de la fonction)' in / var / www / legtux.org / users / mon site / function.inc.php: 85 Stack trace: # 0 / var / www / legtux.org / users / mon site / function.inc.php (85): spl_autoload_register ('CadreSelonSexeC ...') # 1 / var / www / legtux.org / users / mon site / modules / activites / module.config.php (6): include_once ('/ var / www / legtux ...') # 2 [fonction interne]: {} de fermeture ('/ var / www / legtux ... ') # 3 / var / www / legtux.org / users / mon site / includes / classes / Hook.abstract.class.php (72): call_user_func_array (Object (Clôture), Array) # 4 / var / www / legtux. org / utilisateurs / mon site / includes / Hook.inc.php (13): Crochet :: garde («KERNEL.MODULE.F ... ',' / var / www / legtux ... ') # 5 / var / www / legtux.org / users / mon site / includes / Hook.config.php (19): require_once ('/ var / www / legtux ...') # 6 / var / www / legtux.org / users / mon site / index.php (42): require_once ('/ var / www / legtux ...') # 7 {main} jeté dans / var / www / legtux.org / users / mon site / function.inc.php sur la ligne 85



merci

ligne 85

spl_autoload_register("CadreSelonSexeColor");
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
1 août 2014 à 12:09
Peux tu créer une page test.php et y mettre en première ligne :

phpinfo(); 


et me donner ici la version de PHP que tu utilises ?
0
j'ai mis mais on dirait qu'il ne trouves pas la fonction

j'ai supprimer la fonction et recommencer mas malgrez ca il y a une erreur fatal
0

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

Posez votre question
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
1 août 2014 à 12:33
C'est impossible que le serveur php ne puisse pas exécuter la commande phpinfo.

Regarde cette page et assures toi de l'avoir écrit correctement, et aussi que tu pointes bien ton navigateur vers ce fichier test.php
0
c bon voilà la version

PHP Version 5.4.30-1~dotdeb.0
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 1/08/2014 à 14:41
Voici ton message d'erreur :
fonction' CadreSelonSexeColor 'est introuvable ou non valide
Voici le début de ta fonction:
function GetCadreSelonSexeColorById(
Il y a visiblement un problème de nom de fonction.
"Il vaut mieux savoir tout chercher que chercher à tout savoir."
0
je les corigers

voilà

<?php echo ''. GetCadreSelonSexeColorById($data1['membre_sexe'],$data1['membre_id']) . '';?>

et

	  spl_autoload_register("GetCadreSelonSexeColorById");

function GetCadreSelonSexeColorById($membreId,$alignCenter=true,$class='avatar_membre')
 
{
    if(ctype_digit($membreId)||is_int($membreId))
    {
 
    $rang = GetValueFromQuery("SELECT membre_rang as value FROM forum_membres WHERE membre_id=".$membreId);
    $value = GetValueFromQuery("SELECT membre_avatar as value FROM forum_membres WHERE membre_id=".$membreId);
    $sex = GetValueFromQuery("SELECT membre_sexe as value FROM forum_membres WHERE membre_id=".$membreId);
    $str = ($alignCenter) ? '' : '';
 
		$avatarHighLevel = function($level) use($class){
			$str = "";
				if($level == "ADMIN")	$str .=  '<div class="page_admi"></div>';
 
			else if($level == MODO) $str .=  '<div class="page_modo"></div>';
 
			return $str;
		};
 
    if(!empty($value))
 
    { 
		if(file_exists(DIR_AVATAR."/avatar_membres/".$value))
        	$str .= '<div class="page_question"></div>';
		else{
			$a = $avatarHighLevel($level);
				if($a!="")
					$str .= $a;
				else
					$str .= '<div class="page_question"></div>';
		}
    }else {
 
        if($level == ADMIN || $level == MODO || $level == NEWSER || $level == HOMME || $level == FEMME)
 
            $str .= '<a class="separator" title=""></a>';
 
 
 
        $a = $avatarHighLevel($level);
	  if($a!="")
			$str .= $a;
      else if($level == NEWSER)
 
            $str .=  '<div class="page_newswer"></div>';
 
        else if($sex===HOMME && $value=="")
 
            $str .=  '<div class="page_homme"></div>';
 
        else if($sex===FEMME && $value=="")
 
            $str .=  '<div class="page_femme"></div>'; 
 
        else
 
        {
 
            $str .= '<div class="page_question"></div>';
 
        }
 
    }
 
    $str .= ($alignCenter) ? "" : '';
 
 
 
    return $str;
    }else{
		return '<div class="page_question"></div>';
	}
}

0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
1 août 2014 à 15:08
Et donc ?
0
il ne recupere pas le css pour coloré mon cadre en fonction des niveau

par exemple

si tu visite un moderateur tu verra le cadre vert et si c admin ca sera le cadre rouge

etc...

mais je ne voit pas la couleur appara^tre
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 1/08/2014 à 15:30
Désolé si je vais paraitre méchant, mais j'ai l'impression que tu ne réfléchit pas beaucoup sur ton code. Quand j'ai dit tu supprimes
$level = intval($rang);
, je sous-entendais que tu allais également remplacer cette variable dans tout le reste de ton code puisqu'elle n'est plus utilisée ni déclarée.

Donc tu remplaces partout
$level
par
$rang

Et quand je dis
if($level == ADMIN)
à remplacer par
if($level == "ADMIN")
ca ne veut pas dire qu'il faut le faire une fois, il faut le faire pour tous tes tests, et même si c'est un MODO, NEWSER, HOMME et FEMME.

EDIT : Sans compter le fait que tu ne mets presque jamais d'accolades, ce qui est très dangereux dans php et hors normes.
if (condition) {
echo 'condition respectée';
} else {
echo 'condition non respectée';
}


"Il vaut mieux savoir tout chercher que chercher à tout savoir."
0
j'ai modifier mais ça ne fonctione pas
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
1 août 2014 à 16:09
Reposte ton code
0
function GetCadreSelonSexeColorById($membreId,$alignCenter=true,$class='avatar_membre')
 
{
    if(ctype_digit($membreId)||is_int($membreId))
    {
 
    $rang = GetValueFromQuery("SELECT membre_rang as value FROM forum_membres WHERE membre_id=".$membreId);
    $value = GetValueFromQuery("SELECT membre_avatar as value FROM forum_membres WHERE membre_id=".$membreId);
    $sex = GetValueFromQuery("SELECT membre_sexe as value FROM forum_membres WHERE membre_id=".$membreId);
    $str = ($alignCenter) ? '' : '';
 
		$avatarHighLevel = function($level) use($class){
			$str = "";
				if($level == "ADMIN")	$str .=  '<div class="page_admi"></div>';
 
			else if($level == "MODO") $str .=  '<div class="page_modo"></div>';
 
			return $str;
		};
 
    if(!empty($value))
 
    { 
		if(file_exists(DIR_AVATAR."/avatar_membres/".$value))
        	$str .= '<div class="page_question"></div>';
		else{
			$a = $avatarHighLevel($level);
				if($a!="")
					$str .= $a;
				else
					$str .= '<div class="page_question"></div>';
		}
    }else {
 
        if($level == ADMIN || $level == MODO || $level == NEWSER || $level == HOMME || $level == FEMME)
 
            $str .= '<a class="separator" title=""></a>';
 
 
 
        $a = $avatarHighLevel($level);
	  if($a!="")
			$str .= $a;
      else if($level == "NEWSER")
 
            $str .=  '<div class="page_newswer"></div>';
 
        else if($level == "HOMME")
 
            $str .=  '<div class="page_homme"></div>';
 
        else if($level == "FEMME")
 
            $str .=  '<div class="page_femme"></div>'; 
 
        else
 
        {
 
            $str .= '<div class="page_question"></div>';
 
        }
 
    }
 
    $str .= ($alignCenter) ? "" : '';
 
 
 
    return $str;
    }else{
		return '<div class="page_question"></div>';
	}
}

0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
1 août 2014 à 16:26
Si tu ne lis pas ce que j'écris et que tu n'appliques pas ce que je te demandes de faire, on ne va pas avancer.

Ce que tu as déjà fais c'est bien, mais tu ne l'as pas fait partout.

Et qu'est ce qu'on a dit pour la variable $level ?
0
j'ai remplacer level par rang mais ca n'affiche pas la page

voil le code

function GetCadreSelonSexeColorById($membreId,$alignCenter=true,$class='avatar_membre')
 
{
    if(ctype_digit($membreId)||is_int($membreId))
    {
 
    $rang = GetValueFromQuery("SELECT membre_rang as value FROM forum_membres WHERE membre_id=".$membreId);
    $value = GetValueFromQuery("SELECT membre_avatar as value FROM forum_membres WHERE membre_id=".$membreId);
    $sex = GetValueFromQuery("SELECT membre_sexe as value FROM forum_membres WHERE membre_id=".$membreId);
    $str = ($alignCenter) ? '' : '';
 
		$avatarHighRang = function($rang) use($class){
			$str = "";
				if($rang == "ADMIN")	$str .=  '<div class="page_admi"></div>';
 
			else if($rang == "MODO") $str .=  '<div class="page_modo"></div>';
 
			return $str;
		};
 
    if(!empty($value))
 
    { 
		if(file_exists(DIR_AVATAR."/avatar_membres/".$value))
        	$str .= '<div class="page_question"></div>';
		else{
			$a = $avatarHighRang($rang);
				if($a!="")
					$str .= $a;
				else
					$str .= '<div class="page_question"></div>';
		}
    }else {
 
        if($rang == ADMIN || $rang == MODO || $rang == NEWSER || $rang == HOMME || $rang == FEMME)
 
            $str .= '<a class="separator" title=""></a>';
 
 
 
        $a = $avatarHighRang($rang);
	  if($a!="")
			$str .= $a;
      else if($rang == "NEWSER")
 
            $str .=  '<div class="page_newswer"></div>';
 
        else if($rang == "HOMME")
 
            $str .=  '<div class="page_homme"></div>';
 
        else if($rang == "FEMME")
 
            $str .=  '<div class="page_femme"></div>'; 
 
        else
 
        {
 
            $str .= '<div class="page_question"></div>';
 
        }
 
    }
 
    $str .= ($alignCenter) ? "" : '';
 
 
 
    return $str;
    }else{
		return '<div class="page_question"></div>';
	}
}

0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 1/08/2014 à 16:51
Ton code n'est pas propre.

Je pars dans 10 minutes et ne reviens que jeudi.

Comme je suis dans une bonne semaine, je te donne mon code corrigé, un conseil étudie le pour bien comprendre le formatage des conditions en PHP.

Si ça ne fonctionne toujours pas, donnes nous plus d'info que "Ma page s'affiche pas" parce que ça on s'en fout. Donne un message d'erreur, qu'est ce qui se passe, qu'est ce que tu as à l'écran, etc.

<?php
spl_autoload_register("GetCadreSelonSexeColorById");

function GetCadreSelonSexeColorById($membreId,$alignCenter=true,$class='avatar_membre') {
if(ctype_digit($membreId)||is_int($membreId))
{

	$rang = GetValueFromQuery("SELECT membre_rang as value FROM forum_membres WHERE membre_id=".$membreId);
	$value = GetValueFromQuery("SELECT membre_avatar as value FROM forum_membres WHERE membre_id=".$membreId);
	$sex = GetValueFromQuery("SELECT membre_sexe as value FROM forum_membres WHERE membre_id=".$membreId);
	$str = ($alignCenter) ? '' : '';

	$avatarHighrang = function($rang) use($class){
		$str = "";
		
		if ($rang == "ADMIN")
		{
			$str .=  '<div class="page_admi"></div>';
		}
		elseif($rang == "MODO")
		{
			$str .=  '<div class="page_modo"></div>';
		}
		return $str;
	};

	if(!empty($value))
	{
		if(file_exists(DIR_AVATAR."/avatar_membres/".$value))
		{
			$str .= '<div class="page_question"></div>';
		}
		else
		{
			$a = $avatarHighrang($rang);
			if($a != "")
			{
				$str .= $a;
			}
			else
			{
			$str .= '<div class="page_question"></div>';
			}
		}
	}
	else
	{
		if($rang == "ADMIN" || $rang == "MODO" || $rang == "NEWSER" || $rang == "HOMME" || $rang == "FEMME")
		{
			$str .= '<a class="separator" title=""></a>';
			$a = $avatarHighrang($rang);
			if($a!="")
			{
				$str .= $a;
			}
			elseif($rang == "NEWSER")
			{
				$str .=  '<div class="page_newswer"></div>';
			}
			elseif($sex == "HOMME" && $value=="")
			{
				$str .=  '<div class="page_homme"></div>';
			}
			elseif($sex == "FEMME" && $value=="")
			{
				$str .=  '<div class="page_femme"></div>'; 
			}
			else
			{
				$str .= '<div class="page_question"></div>';
			}
		}
	}
	$str .= ($alignCenter) ? "" : '';
	return $str;
}
else
{
	return '<div class="page_question"></div>';
}
}
?>


"Il vaut mieux savoir tout chercher que chercher à tout savoir."
0