un petit coup de main pour une erreur de code

Eléphanteau du PHP | 25 Messages

12 nov. 2007, 12:51

Bonjour.

Je suis en train de faire un site multilangues et j’ai un petit souci.

Voici le code de mon fichier index.php

<?
if(!empty($_COOKIE[lang]))$lang=$_COOKIE[lang];
if(!empty($_GET[lang]))$lang=$_GET[lang];
if(!empty($lang) && ($lang==eng || $lang==fr || $lang==esp)){
  include(lang_.$lang..php);
  setcookie(lang,$lang,time()+3600*25*365,/);
}else include(lang_fr.php);
?>

<html>
<body>
<a href=?lang=fr><img src=images/Drapeau/fr.gif border=0></a>
<a href=?lang=eng><img src=images/Drapeau/eng.gif border=0></a>
<a href=?lang=esp><img src=images/Drapeau/esp.gif border=0></a>
<br>
<?php echo $txt001; ?>
</body>
</html>

le code des fichiers langues.

lang_eng.php.

Code : Tout sélectionner

<?php $txt001=hi welcome; ?>
lang_fr.php.

Code : Tout sélectionner

<?php $txt001=salut bienvenue; ?>
lang_esp.php.

Code : Tout sélectionner

<?php $txt001=hola recepción; ?>

Quand je lance index.php dans le navigateur, il me met l’erreur suivante.

Parse error: parse error in c:\program files\easyphp1-8\www\multilangues 2\index.php on line 5

quelqu'un peut il regarder ce code et me filer un petit coup de main pour savoir d'ou vien cette erreur.

je vous remerci d'avance.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

12 nov. 2007, 12:56

comme un petit souci ici, non ?
include(lang_.$lang..php);

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 25 Messages

12 nov. 2007, 13:13

c'est un code que j'ai recopié car je ne suis pas un as de php.

as tu la solution a cette erreur ?

si oui merci beaucoup je galere dessus depuis 3 jours.

quelle perte de temps je suis vert.

enfin c'est comme ça je suis entrain d'apprendre php mais tout seul c'est pas facile facile.

Eléphanteau du PHP | 25 Messages

12 nov. 2007, 13:18

sinon j'ai aussi essayé ce tuto.

mais je ne sais pas comment faire la gestion des langues avec des drapeaux.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 nov. 2007, 13:19

Quand tu fait un include normal, tu doit faire un truc du genre
include('lang_fr.php');
Avec ton système multilangue, tu essayes que le 'fr' ne soit pas en dur, mais contenu dans une variable.
Pour celà, il te suffit juste de remplacer le 'fr' par la variable et la concaténation
include('lang_'. $lang .'.php');
Mais il ne faut retirer les ' autour des parties fixes du nom du fichier ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

12 nov. 2007, 13:23

"Débutant" pourquoi ne pas profiter du forum "Débuter en PHP" alors ?
Les réponses sont adaptés au niveau du posteur.

Enfaite tu as plusieurs erreurs
1.
$_COOKIE[lang]
doit etre
$_COOKIE["lang"]
avec des guillemets

2. Comparaison de chaine de caractères avec une variable :
$lang==eng
doit etre
$lang=="eng"
Idem pour les autres.

3. Concaténation de chaine de caractères avec une variable
include(lang_.$lang..php);
doit être
include("lang_".$lang.".php");
4. include doit être le nom d'un fichier en tant que chaine de caractères
include(lang_fr.php);
doite être
include("lang_fr.php");
5. Affectation d'une chaine de caractères à une variable
$txt001=hi welcome;
doit être
$txt001="hi welcome";
Tu sembles avoir un problème avec les chaines de caractères (= mot, phrase)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 25 Messages

12 nov. 2007, 13:40

merci je test et je clos le topic par resolusi ça fonctionne.

c'est super sympat le réponse, en esperant etre aussi bon un jour pour repondre a des debutants comme moi.

encore merci

Eléphanteau du PHP | 25 Messages

12 nov. 2007, 15:10

les liens fonctionnent mais les constantes ne changent pas.

Mammouth du PHP | 19672 Messages

12 nov. 2007, 15:12

...mais les constantes ne changent pas.
C'est le propre des constantes : erreur de formulation ? :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 25 Messages

12 nov. 2007, 15:17

excusez moi.

les echo du fichier index ne changent pas quand je change de langue.

pourtant dans l'url le lien change bien.

Mammouth du PHP | 19672 Messages

12 nov. 2007, 15:23

Fais donc voir ton code corrigé qu'on voie où tu en es au juste...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 25 Messages

12 nov. 2007, 15:23

Code : Tout sélectionner

<?php require("lang/decide-lang.php"); ?> <html> <body> <table width="100" border="0" cellspacing="0" cellpadding="0"> <tr> <td><div align="center"><a href="?lang=fr"><img src="images/Drapeau/fr.gif" width="21" height="13" border="0"></a></div></td> <td><div align="center"><a href="?lang=eng"><img src="images/Drapeau/eng.gif" width="21" height="13" border="0"></a></div></td> <td><div align="center"><a href="?lang=esp"><img src="images/Drapeau/esp.gif" width="21" height="13" border="0"></a></div></td> </tr> </table> <?php echo TXT_ACCUEIL_INDEX; ?> <br> Meteo du jour : <?php echo TXT_METEO; ?> <br> Conseil du jour : <?php echo TXT_CONSEIL_INDEX; ?> </body> </html>
merci

Mammouth du PHP | 19672 Messages

12 nov. 2007, 15:28

Mouais, pour celui-ci, pas de problème, mais le fichier decide-lang.php serait plus utile :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 25 Messages

12 nov. 2007, 15:29

Code : Tout sélectionner

<?php if(isset($HTTP_COOKIE_VARS['lang'])) { $lang = $HTTP_COOKIE_VARS['lang']; } else { // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); } //script d'origine if ($lang=='fr') { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php include('lang/fr-lang.php'); } elseif ($lang=='en') { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php include('lang/en-lang.php'); } elseif ($lang=='en') { // si la langue est 'en' (anglais) on inclut le fichier esp-lang.php include('lang/esp-lang.php'); } //fin du script d'origine //définition de la durée du cookie (1 an) $expire = 365*24*3600; //enregistrement du cookie au nom de lang setcookie("lang", $lang, time() + $expire); ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 nov. 2007, 15:38

Quand tu cliques sur le lien, tu envoi la variable lang en get. Avant de vérifier si une langue est définie dans le cookie, il faudrait peut être t'assurer qu'aucune langue n'a été sépcifiée dans $_GET['lang']. Et si une langue est spécifiée, utiliser la nouvelle langue demandée pour ouvrir le bon fichier et mettre à jour le cookie :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...