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. 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é
  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 , 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>
      

  4. 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. 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 ...