Page 1 sur 1

ou ex ou inc et ....

Posté : 16 déc. 2005, 13:45
par Ic3Cub3
Bonjour,
Juste une petite question technique qui releve de la syntaxe juste et appropriée a employer :
Je voudrais synthétiser mon code, à savoir a le "résumer".
Je sais que je pourrais utiliser un "ou" mais helas je ne connais pas la syntaxe exacte et puis il y a le probleme du "ou exclusif" et "ou inclusif".
Il me faut votre aide, voici mon code :
<?php
  $LangOK = $_GET['langue'];
  if ($LangOK =='FR')
  {
  $LANG='FR';
  $Titre_Dessus='Bienvenue';
  $navigation='MENUS DE NAVIGATION';
  }
  if ($LangOK =='NL')
  {
  $LANG='NL';
  $Titre_Dessus='Welkom';
  $navigation='NAVIGATIE MENU';
  }
  if ($LangOK =='EN')
  {
  $LANG='EN';
  $Titre_Dessus='Welcome';
  $navigation='SURFING LINK';
  }
  if ($LangOK =='')
  {
  $LANG='FR';
  $Titre_Dessus='Bienvenue';
  $navigation='MENUS DE NAVIGATION';
  }
  if ($LangOK != 'FR' && $LangOK != 'NL' && $LangOK != 'EN' && $LangOK != '')
  {
  $LANG='FR';
  $Titre_Dessus='Bienvenue';
  $navigation='MENUS DE NAVIGATION';
  }
?>
Je sais que l'on pourrait synthétiser en un seul bloc , les parties correspondant a 'FR' a '' et a $LangOK != 'FR' && $LangOK != 'NL' && $LangOK != 'EN' && $LangOK != ''
Mais comment bien le faire en ne négligeant aucuns cas ?
MErci d'avance.

J'avance a petit pas dans le PHP mais c'est génial en tout les cas !!!
Bonne journee

Posté : 16 déc. 2005, 13:56
par mere-teresa
La structure qui me semble la plus adaptée dans ton cas est le switch.

Tu fais
switch($tavaleurATester)
{
case "FR":
break;

//etc...


default:
//tous les autres cas
break;
}

Pour les subtilités : voir la documentation sur le switch

Posté : 16 déc. 2005, 13:59
par jeff
salut
tu pourrai utiliser un tableau a plusieur dimension
le premier index serait celui de la lang et les autres serai tes message
ex:
$tab['fr']['msg']='bienvebu';
$tab['fr']['titre']='titre fr';
et tu teste la variable que tu recoit avec isset et in array
fi(isset($_post['lg'])
{
if(in_array($tab,$_post['lg']))
{
$titre=$tab[$_post['lg']]['titre'];
$msg=$tab[$_post['lg']][msg];
}}

c'est pas tester
et il y surement plus simple

Posté : 16 déc. 2005, 14:03
par mere-teresa
Par ailleurs, pourquoi ne pas tester directement $_GET['langue'] plutôt que de le transvaser dans une variable intermédiaire ?

note : jeff je ne comprends pas ton idée.

Posté : 16 déc. 2005, 14:06
par jeff
l'idée etait de tout mettre dans un tableau
et de parcourir le tableau selon la langue
maois je suis pas sur que se soit terrible comme methode
c'est vri que les case c'est plus simple

Posté : 16 déc. 2005, 14:09
par Ic3Cub3
Non ce que je voudrais plus faire c'est un style comme celui ci :
<?php
  $LangOK = $_GET['langue'];
  if ($LangOK =='FR') & ($LangOK != 'FR' && $LangOK != 'NL' && $LangOK != 'EN' && $LangOK != '') & ($LangOK =='')
  {
  $LANG='FR';
  $Titre_Dessus='Bienvenue';
  $navigation='MENUS DE NAVIGATION';
  }
  if ($LangOK =='NL')
  {
  $LANG='NL';
  $Titre_Dessus='Welkom';
  $navigation='NAVIGATIE MENU';
  }
  if ($LangOK =='EN')
  {
  $LANG='EN';
  $Titre_Dessus='Welcome';
  $navigation='SURFING LINK';
  }
 ?>
Mais avec un "ou" que je ne connais pas helas :S

et j'appelle dans ma page de cette maniere :
<?php echo "$Titre_Dessus" ?>

Posté : 16 déc. 2005, 14:10
par mere-teresa
Je me répète mais bon....
Un switch remplace avantageusement une série de if sur la même valeur, et gère, en plus, un cas "poubelle" càd tous les autres cas hormis ceux cités comme case.

La structure qui me semble la plus adaptée dans ton cas est le switch.

Tu fais
switch($tavaleurATester)
{
case "FR":
break;

//etc...


default:
//tous les autres cas
break;
}

Pour les subtilités : voir la documentation sur le switch

Posté : 16 déc. 2005, 14:11
par Ic3Cub3
ok ok :lol: je lis la doc sur switch :lol:

Posté : 16 déc. 2005, 14:18
par Ic3Cub3
Ok j'adopte le SWITCH !!!
Mais pour info quelle est la syntaxe du "ou" ?
Ensuite quel est la difference entre & et && ?
je crois que je deviens brouillon et je melange tout :S

Posté : 16 déc. 2005, 14:31
par mere-teresa
Le ou dans un if c'est ||
Le et dans un if c'est &&

Le et dans un switch c'est
case 0://superposition des deux cases
case 1:
break;
Et le ou, c'est le prochain case

Posté : 16 déc. 2005, 14:37
par Ic3Cub3
Merci a toi, en tout les cas le SWITCH est tellement plus Propre !!! Je l'ai adopter !
Voici ce que cela donne :
<?php
$LangOK = $_GET['langue'];
switch ($LangOK):
case "NL":
   $LANG='NL';
  $Titre_Dessus='Dag';
  $navigation='NAVIGATIe'; 
   break;
case "EN":
   $LANG='EN';
  $Titre_Dessus='Hi Man';
  $navigation='NAVIGATION'; 
   break;

default:
   $LANG='FR';
  $Titre_Dessus='Bienvenue';
  $navigation='MENUS DE NAVIGATION'; 
endswitch;
?> 
MErci bcp !