Probleme avec les ? les variables

techsguide -  
Dalida Messages postés 7114 Statut Contributeur -
Bonjour, j'ai un site qui est multi langue je fais ça :

include("lang/languages.php");

$i=0;
while (list($key, $value) = each($languages))
{
if($i++)echo ' | ';
echo "<a href=\"".$_SERVER['REQUEST_URI']."?lang=".$key."\">".$value."</a>";

}
include "langsettings.php";
if(empty($lang)) {

}else {
include("lang/$lang.php");
}

ce que j'obtiens

c'est <a href="/?lang=en">English</a> | <a href="/?lang=fr">Francais</a> | <a href="/?lang=ru">Русский</a>

lorsque je clique successivement j'obtiens un bug

?lang=en?lang=fr?lang=ru

je veux avoir un seule ? et je ne sais pas comment effacer les ? présent si il n'y en a pas


si quelqu'un peux m'aider

merci

7 réponses

Dalida Messages postés 7114 Statut Contributeur 923
 
re,

on s'en tape de la place de l''include()'…

'REQUEST_URI'
L'URI qui a été fourni pour accéder à cette page. Par exemple : '/index.html'.
manuel PHP

avec '$_SERVER['REQUEST_URI']' tu reçois par exemple
header.php?lang=en

auquel tu ajoutes un autre paramètre ce qui fait
header.php?lang=en?lang=fr

et ainsi de suite.

il faut que tu ajoutes le paramètres au bout de l'url du fichier seulement.
ça tu l'as avec '__FILE__' ou '$_SERVER['PHP_SEFL']'.
1
Profil bloqué
 
Bonjour, pourquoi ne pas utiliser les standars internationnaux ?
0
techsguide
 
standards internationaux ? je n'ai pas compris
0
Dalida Messages postés 7114 Statut Contributeur 923
 
salut,

que veux-tu dire par lorsque je clique successivement ?

tu peux déjà simplifier ta boucle avec 'foreach()' et pour le lien j'enlèverais les slashs et j'optimiserais avec un seul 'echo()' et des apostrophes.
<?php
	// --------------------------------
	$i=0;
	while (list($key, $value) = each($languages))
	{
		if($i++)echo ' | '; // à quoi sert le test ? $i peut toujours s'incrémenter donc le résultat doit toujours être positif
		echo "<a href=\"".$_SERVER['REQUEST_URI']."?lang=".$key."\">" .$value."</a>";
	}
	// équivalent à : --------------
	foreach( $languages as $key => $value )
	{
		echo ' | <a href='.$_SERVER['REQUEST_URI'].'?lang='.$key.'>' .$value.'</a>'."\n"; // \n pour le retour à la ligne dans le code HTML, c'est plus lisible
	}
	// --------------------------------
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
techsguide
 
Bonjour,`
tout d'abord merci pour cette simplification je vais tester et je clarifie

j'obtiens dans ma page http://techsguide.free.fr

lorsque je clique sur les liens "en haut" de langue (français anglais ....) successivement

les requêtes s'accumulent

http://techsguide.free.fr/?lang=en?lang=fr?lang=ru et ça pose problème je cherche un moyen qu'il n'y ai qu 'une seule à la fois .


merci pour votre aide
0
Dalida Messages postés 7114 Statut Contributeur 923
 
ouui puisque tu lui demande de coller une nouvelle variable à celles déjà envoyées ('$_SERVER['REQUEST_URI']').
remplace le par '__FILE__' ou enlève le paramètre 'lang' dans la requête reçue.
echo ' | <a href='.__FILE__.'?lang='.$key.'>' 

0
techsguide
 
bonjour,

C'est pas loin mais malheureusement le script s'execute a partir de mon header.php ce qui me permet de l'appliquer à tout le site

donc la requete s'execute sur http://..../header.php?lang=en et cela ne marche pas .

merci quand mm pour ces conseil
0