Probleme avec les ? les variables

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
Configuration: Mac OS X
Firefox 3.0

7 réponses

  1. Contributeur
    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. 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
      1. Contributeur
        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.'>' 

        1. 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
          1. Contributeur
            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
            	}
            	// --------------------------------
            ?>
            1. Bonjour, pourquoi ne pas utiliser les standars internationnaux ?