Bug sur fonction colors cadre en fonction level id

ivan -  
sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   -
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

14 réponses

  1. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
     
    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
  2. ivan
     
    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
  3. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
     
    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
  4. ivan
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
     
    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
  7. ivan
     
    c bon voilà la version

    PHP Version 5.4.30-1~dotdeb.0
    0
  8. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
     
    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
  9. ivan
     
    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
    1. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
       
      Et donc ?
      0
    2. ivan
       
      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
  10. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
     
    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
  11. ivan
     
    j'ai modifier mais ça ne fonctione pas
    0
    1. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
       
      Reposte ton code
      0
  12. ivan
     
    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
  13. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
     
    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
  14. ivan
     
    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
  15. sipherion Messages postés 1836 Date d'inscription   Statut Membre Dernière intervention   287
     
    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