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. Bonjour, pourquoi ne pas utiliser les standars internationnaux ?
    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,`
        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
          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,

            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
              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']'.