ou ex ou inc et ....

Eléphant du PHP | 105 Messages

16 déc. 2005, 13:45

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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

16 déc. 2005, 13:56

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
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 1311 Messages

16 déc. 2005, 13:59

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
Modifié en dernier par jeff le 16 déc. 2005, 14:03, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

16 déc. 2005, 14:03

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.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 1311 Messages

16 déc. 2005, 14:06

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

Eléphant du PHP | 105 Messages

16 déc. 2005, 14:09

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" ?>

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

16 déc. 2005, 14:10

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
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 105 Messages

16 déc. 2005, 14:11

ok ok :lol: je lis la doc sur switch :lol:

Eléphant du PHP | 105 Messages

16 déc. 2005, 14:18

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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

16 déc. 2005, 14:31

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
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 105 Messages

16 déc. 2005, 14:37

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 !