Un script en php un peu moche

Bonsoir ;

j'ai fais un script en php ,ça marche trés bien sauf que c'est moche ! ..voila le code si vous avez une autre idée :

$a="sport" ;
$b="economique";
$c="politique";
$d="artistique";
$e="culture";
$f="international";
$g="interview";
$h="juridique";
$i="sociale";
$j="sondage";

//sport
if ($categorie==$a)

{
$voir="../".$categorie."/contenu" ;
}
//economique
elseif($categorie==$b)

{
$voir="../".$categorie."/contenu" ;
}
//politique
elseif($categorie==$c)

{
$voir="../".$categorie."/contenu" ;
}
//artistique
elseif($categorie==$d)

{
$voir="../".$categorie."/contenu" ;
}

//culture
elseif($categorie==$e)

{
$voir="../".$categorie."/contenu" ;
}
//international
elseif($categorie==$f)

{
$voir="../".$categorie."/contenu" ;
}

elseif($categorie==$g)
//interview
{
$voir="../".$categorie."/contenu" ;
}

elseif($categorie==$h)
//juridique
{
$voir="../".$categorie."/contenu" ;
}

elseif($categorie==$i)
//sociale
{
$voir="../".$categorie."/contenu" ;
}
//sondage
elseif($categorie==$j)
{
$voir="../".$categorie."/contenu" ;

}

Merci :)

6 réponses

  1. Bjr

    Oui en utilisant un tableau par exemple

    <?php
    $categories = array();
    
    $categories[]="sport" ; 
    $categories[]="economique"; 
    $categories[]="politique"; 
    $categories[]="artistique"; 
    $categories[]="culture"; 
    $categories[]="international"; 
    $categories[]="interview"; 
    $categories[]="juridique"; 
    $categories[]="sociale"; 
    $categories[]="sondage"; 
    
    function voirCategorie($categorie)
    {
    	global $categories;
    	if (in_array($categorie,$categories))
    	{
    		return "../".$categorie."/contenu" ; 
    	}
    	else
    	{
    		return "";
    	}
    }
    
    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt­­d"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    </head>
    <body>
    <?php
    echo "Voir=".voirCategorie("politique")."<br />";
    echo "Voir=".voirCategorie("sondage")."<br />";
    echo "Voir=".voirCategorie("sciences")."<br />";
    
    ?>
    </body>
    --

    PhP  
    Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
    1. parfaitement d'accord avec mype, utilise plutot un truc comme ca :

      switch($categorie) {
           case 'sport' :
           case 'economique' :
           case 'politique' :
           case 'artisique' :
           case 'culture' :
           case 'international' :
           case 'juridique' :
           case 'interview' :
           case 'social' :
           case 'sondage' :
              $bool = true;
              break;
           default :
              $bool = false;
              break;
      }
      
      if($bool)
           $voir="../".$categorie."/contenu" ;
      else
           echo 'Erreur : catégorie inexistante';


      Voila, c'est plus propre, et ca te permet tout de même de verifier que tu affiche une catégorie existante, ou d'afficher un message d'erreur si ce n'est pas le cas ;)
      1. Merci beaucoup , mais j'ai oublié de dire que pour le contenu il change aussi mais je connais le nom de chaque contenu : genre

        if ($categorie==$a)

        {
        $voir="../".$categorie."/df753be3ebdff5c3e8c01bc9b1f50b1d" ;
        }
        //economique
        elseif($categorie==$b)

        {
        $voir="../".$categorie."/be8623b1ae813c678e8999c1bec24a1f" ;
        }
        .......etc

        je fais deux switch ?!!
        1. Non tu utilises un tableau associatif

          <?php
          $categories = array();
          
          $categories["sport"]="3df753be3ebdff5c3e8c0­1bc9b1f50b1d"; 
          $categories["politique"]="be8623b1ae813c678e89­99c1bec24a1f"; 
          // etc ...
          
          function voirCategorie($categorie)
          {
          	global $categories;
          	if (isset($categories[$categorie]))
          	{
          		return "../".$categorie."/".$categories[$categorie]; 
          	}
          	else
          	{
          		return "";
          	}
          }
          
          
          ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt­­­d"> 
          <html xmlns="http://www.w3.org/1999/xhtml"> 
          <head> 
          <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
          </head>
          <body>
          <?php
          echo "Voir=".voirCategorie("politique")."<br />";
          echo "Voir=".voirCategorie("sport")."<br />";
          echo "Voir=".voirCategorie("sciences")."<br />";
          
          ?>
          </body>
          

      2. j'ai misi ton code mais ça na pas marché sniif ,voila ce que j'ai mis :

        au début j'ai une variable nommé $categorie qui contient la nom de ma catégorie

        //mon tableau

        $categories = array();

        $categories["sport"]="df753be3ebdff5c3e8c01bc9b1f50b1d";
        $categories["economique"]="be8623b1ae813c678e8999c1bec24a1f";
        $categories["politique"]="0e0eba5c26f15ccd1dce4bc7c379ab4e";
        $categories["artistique"]="803df6248ca47867463c83d0220b89e7";
        $categories["culture"]="69d062ba64bf77c4ea58fb6d2761f26b";
        $categories["international"]="5ba59a02f4385ca1a0d86163d7faf10b";
        $categories["interview"]="92db2d49fcb8742ea6f654cdc2234b45";
        $categories["juridique"]="076aa3739b63df09e6276a9f09280422";
        $categories["international"]="5ba59a02f4385ca1a0d86163d7faf10b";
        $categories["sociale"]="56c9b81e3446d1cc3114c3fd85f311e4";
        $categories["sondage"]="4d7c95f24ab388838fbe0688780a9b40";

        function voirCategorie($categorie)
        {
        global $categories;
        if (isset($categories[$categorie]))
        {
        //je construit ma variable $voir
        $voir= "../".$categorie."/".$categories[$catego­rie];
        }
        else
        {
        return "";
        }
        }

        et aprés quand j'utilise cet variable dans un Url ba ça marche pas ca donne un url du genre

        nomdudossier/.php?i=num

        cad que la fonction retourne ça return ""
        j'ai misi ton code mais ça na pas marché sniif ,voila ce que j'ai mis :

        au début j'ai une variable nommé $categorie qui contient la nom de ma catégorie

        //mon tableau

        $categories = array();

        $categories["sport"]="df753be3ebdff5c3e8c01bc9b1f50b1d";
        $categories["economique"]="be8623b1ae813c678e8999c1bec24a1f";
        $categories["politique"]="0e0eba5c26f15ccd1dce4bc7c379ab4e";
        $categories["artistique"]="803df6248ca47867463c83d0220b89e7";
        $categories["culture"]="69d062ba64bf77c4ea58fb6d2761f26b";
        $categories["international"]="5ba59a02f4385ca1a0d86163d7faf10b";
        $categories["interview"]="92db2d49fcb8742ea6f654cdc2234b45";
        $categories["juridique"]="076aa3739b63df09e6276a9f09280422";
        $categories["international"]="5ba59a02f4385ca1a0d86163d7faf10b";
        $categories["sociale"]="56c9b81e3446d1cc3114c3fd85f311e4";
        $categories["sondage"]="4d7c95f24ab388838fbe0688780a9b40";

        function voirCategorie($categorie)
        {
        global $categories;
        if (isset($categories[$categorie]))
        {
        //je construit ma variable $voir
        $voir= "../".$categorie."/".$categories[$catego­rie];
        }
        else
        {
        return "";
        }
        }

        et aprés quand j'utilise cet variable dans un Url ba ça marche pas ca donne un url du genre

        nomdudossier/.php?i=num

        cad que la fonction retourne :

        else
        {
        return "";
        }
        et que la vérification n'est pas correct du isset ,je dois changer quelque chose ?!

        merci ^^
        1. Bsr

          Il faudrait que tui donnes le code PHP où tu construis ton url en appellant la fonction voirCategorie() car tout le reste me semble correct.
      3. Merci beaucoup ,dsl je n'ai pas pu répondre avant car je suis un peu malade

        bonne journée ;)
        1. Salut,

          a mon avis ton principe de fonction pêche

          ça ne sert à rien de mettre une variable globale $categories dedans ta fonction ça "écrase" celle que tu as définie plus haut dans ton code

          il vaut mieux lui passer la variable, même si c'est un array lors de l'appel de celle çi

          et n'oublie pas de faire le return de ce que fait la fonction:

          function voirCategorie($categorie,$categories){
          
          	if (isset($categories[$categorie])){
          	//je construit ma variable $voir
          	$voir= "../".$categorie."/".$categories[$catego­­rie];
          	return $voir;
          	}else{
          		return "";
          	}
          } 


          et tu appelles ta fonction par voirCategorie($categorie,$categories);
        2. @Alain_42Bjr

          Bien sûr que non ça n'écrase pas le contenu d'une variable de la redéfinir en global à l'intérieur d'une fonction !
          Le préfixe global sert à l'empêcher justement. ;-)
          Si c'était le cas alors les variables globales seraient tout simplement inutiles.

          Cela dit on peut aussi passer le tableau $categories en paramètre naturellement.

          Ici le pb vient plutôt d'une mauvaise utilisation de la fonction voirCategorie() que de la fct elle-même.
        3. @PhPOui tu as raison pour Global, mais perso je pré ferrai la définir comme globale dès le départ plutôt que dans la fonction
        4. @Alain_42Oui c'est vrai qu'utiliser des variables globales c'est pas top car ça lie la fonction à une variable externe.

          En général en PHP je me cantonne aux tableaux superglobaux prédéfinis et je n'ai pas besoin des variables globales car je préfère et de loin créer des classes d'objet. Le hic c'est que pour une raison que j'ignore les gens trouvent souvent que c'est plus compliqué