Probleme avec les ? les variables

techsguide -  
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   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
  2. Profil bloqué
     
    Bonjour, pourquoi ne pas utiliser les standars internationnaux ?
    0
  3. techsguide
     
    standards internationaux ? je n'ai pas compris
    0
  4. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   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
  8. 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