Problème sur la langue d'un site en php

Résolu/Fermé
ddjo - 23 oct. 2008 à 14:31
 ddjo - 23 oct. 2008 à 15:07
Bonjour,
Voila j'ai un site qui gère la langue de son contenu en fonction de son adresse :
www.monsite.com/index.php?lang=FR en francais
www.monsite.com/index.php?lang=EN en anglais
etc...

Je récupère donc la variable lang avec le code php : $lang = $_GET['lang'];

Je voudrais lui dire que si la variable lang est égale à FR, AL, ES le site sera respectivement en francais, allemand, espagnol; si la variable lang est nulle ou inconnue, il se mettra automatiquement en anglais (EN)

Je lui ai donc fixé la condition suivante :

if ($lang=="" || $lang!="FR" || $lang!="AL" || $lang!="ES" )
{
$lang="EN";
}

Le problème est que quelque soit le contenu de la variable au départ, elle récupère toujours la valeur EN...
Pourtant je n'ai pas l'impression d'avoir fait de faute ! si quelqu'un voit une erreur ou a déja connu cette situation, ce serait avec plaisir qu'il puisse m'aider !!!
Merci d'avance !!!
A voir également:

4 réponses

OK ca marche !! merci beaucoup !!
0
Merci tu l'as très bien expliqué! c'est vrai que c'est tout à fait logique...
Et pour ton système de tableau, c'est pas mal du tout, mais je ne pense pas devoir rajouter une langue... Mais je garde ça de côté !

Mais merci beaucoup à vous deux !
0
Utilisateur anonyme
23 oct. 2008 à 14:39
remplace || par &&
-1
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
23 oct. 2008 à 14:52
Bonjour.

if ($lang=="" || $lang!="FR" || $lang!="AL" || $lang!="ES" )
{
$lang="EN";
} 

Exemple avec $lang=AL :
SI $lang=="" faux
OU $lang!="FR" Vrai (puisque lang=AL)
OU $lang!="AL" Faux
OU $lang!="ES" Vrai (puisque lang=AL)

Conditions OU => Comme une des conditions est vrais, le SI est valide.
=> on affecte $lang=EN.

Autre problème : le jour où tu rajoutes une langue, il faut rajouter une condition. C'est vite lourd.

Une possibilité :
// On définit un tableau avec les langues autorisées...
// On pourrait même faire un tableau associant les abréviations avec le nom, 
// ou avec le lien vers l'image du drapeau, ou ...
$arr_lang = Array ("EN", "FR", "AL", "ES");

// Si $lang n'est pas dans le tableau, on lui donne la valeur par défaut
if (! in_array($lang, $arr_lang) ) {
   $lang = 'EN';
}

-1