Nommage centralisé de mes pages dans titre.inc.php

Eléphanteau du PHP | 23 Messages

02 févr. 2012, 19:45

Je n'avais pas cette variable mais comme je te l'avais précisé, mon site est statique. J'ai donc testé en ajoutant tout simplement "?lang=en" devant mon lien .php et ça fonctionne (premier merci ! :) ).

Ce qui m'amène à te demander :
- pourquoi ça fonctionne en français sans "?lang=fr" après .php
- même en statique, je dois donc renommer toutes mes pages sur le modèle "ma-page.php?lang=en"

ViPHP
xTG
ViPHP | 7331 Messages

02 févr. 2012, 20:17

Si statique alors oui tu dois renommer tous les liens menant à la version anglaise en rajoutant cette variable.
Pour l'explication du cas français, regarde le premier if. ;)

Eléphanteau du PHP | 23 Messages

02 févr. 2012, 22:17

J'imagine que je ne peux pas ajouter une deuxième condition "if" pour la version "en" ? :roll:

Et est-ce que j'ai un intérêt particulier à ajouter la variable ?lang=fr" après .php des pages françaises ? :?:

Eléphanteau du PHP | 23 Messages

02 févr. 2012, 23:12

J'ai ajouté la variable ?lang=en" après .php des pages en local mais le navigateur ajoute automatiquement à la fin du nom un deuxième... .php soit "ma-page.php?lang=en.php"

Je pense que la variable "?lang=en" est générée automatiquement dans le cas d'un site dynamique mais en statique, je cale.

ViPHP
xTG
ViPHP | 7331 Messages

03 févr. 2012, 11:16

S'il y a un dernier .php qui se rajoute c'est que soit tu l'as rajouté, soit que tu utilises un système de réécriture d'URL.
Car non, un navigateur ne rajoute pas .php à sa convenance. J'imagine même pas l'accès aux sites développés en ASP sinon... :roll:

Quand à un if pour mettre par défaut l'anglais... Semblerait que tu n'ai pas très bien compris ce que voulait dire centralisation et valeur par défaut...

Eléphanteau du PHP | 23 Messages

03 févr. 2012, 14:39

Pour tout préciser, j'utilise Dreamweaver pour m'assister dans la rédaction du code. Oui, l'essentiel des bases du php me sont encore peu familière mais c'est pour moi, le tout début.

Voici mes tests :

- je dispose d'un fichier "ma-page-en.php". Je me connecte sans problème à cette page mais je dois ajouter manuellement dans la barre d'adresse de mon navigateur "?lang=en" pour que le nom de ma page soit ok

- par contre, si je définis en local le nom précis "ma-page-en.php?lang=en", Dreamweaver me signale que les signe \/:*<> sont interdits dans les noms de fichiers et refuse le renommage (et effectivement, ajoute en plus un .php à la fin)

- bien entendu, je pourrais outre cette interdiction en passant par un autre client php mais comme je sens bien que le procédé est un peu "bricolé", est-ce qu'il y a une autre solution pour contourner cette variable sur ce site statique ?

...et je te rassure, j'ai conscience de la lourdeur de mes questions mais dans le cas précis, en attendant d'avoir fait plus de progrès, il faudrait absolument que je trouve une solution :?

Merci pour ta zenitude !!!

ViPHP
xTG
ViPHP | 7331 Messages

03 févr. 2012, 15:05

Ah oui je vois ce que tu tentais de faire... Renomme le fichier. xD

Non non, DW a pas perdu la tête, c'est bien toi qui tentes de faire quelque chose de totalement absurde.
Modifier le nom du fichier ne ferra pas la même chose, car le nom du fichier c'est son nom, alors que les variables ce sont les arguments passés au fichier.

Ton souci actuellement c'est que tu veux des pages statiques tout en utilisant un include dynamique...
C'est en fait totalement dénué d'intérêt. Et du coup ce qu'on t'a fait développé n'est aucunement utile.
Il aurait fallu un titre.inc.php et un titre-en.inc.php pour faire plus simplement.

On peut aussi faire une rustine... A savoir détecter dans le nom du fichier la langue vu qu'elle est présente.
if( strpos('en.php',$_SERVER['REQUEST_URI']) !== false )
  $lang = 'en';

Eléphanteau du PHP | 23 Messages

03 févr. 2012, 19:41

En dernier recours, j'allais effectivement créer un deuxième fichier "titre-en.inc.php" mais si ta rustine peut me permettre de me limiter à un seul fichier, ce sera top.

Tu ne seras pas surpris si je te dis que je ne sais pas où caser ta rustine dans mon code (qui, pour le français, fonctionne nickel) :
<?php

if (isset($_GET['lang'])) { $lang=$_GET['lang']; }
else { $lang="fr"; }
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil','contact.php' => 'contact'),
  'en' => array( 'index.php' => 'Home','contact.php' => 'contact'),
);

$titre_page = $titre_page[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];
$titre_site = 'Le nom de mon site - ';
?>

ViPHP
xTG
ViPHP | 7331 Messages

03 févr. 2012, 20:10

Faut l'intégrer dans le premier if :
if (isset($_GET['lang'])) { 
  $lang=$_GET['lang']; 
}else{ 
  if( strpos('en.php',$_SERVER['REQUEST_URI']) !== false ){
    $lang = 'en';
  }else{
    $lang="fr"; 
  }
}

Eléphanteau du PHP | 23 Messages

03 févr. 2012, 23:17

Ça fonctionne toujours pour le fr mais pas pour l'anglais...

Le code global est donc en l'état :
<?php
if (isset($_GET['lang'])) { $lang=$_GET['lang']; 
}else{ 
if( strpos('en.php',$_SERVER['REQUEST_URI']) !== false ){
    $lang = 'en';
  }else{
    $lang="fr"; 
  }
}
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil','contact.php' => 'contact'),
  'en' => array( 'index.php' => 'Home','contact.php' => 'contact'),
);

$titre_page = $titre_page[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];
$titre_site = 'Le nom de mon site - ';
?>

ViPHP
xTG
ViPHP | 7331 Messages

04 févr. 2012, 09:27

Pour débuguer :
var_dump($_SERVER['REQUEST_URI']);
var_dump(strpos('en.php',$_SERVER['REQUEST_URI']));

Eléphanteau du PHP | 23 Messages

04 févr. 2012, 14:59

Je te remercie encore pour ce nouveau code de débuguage mais comme toujours, je ne sais pas trop ou il se place ou ce qu'il remplace.
Bon, je ne vais pas te faire passer le week-end dessus, je crois que je vais créer une deuxième page titre-en.inc.php, ce sera plus simple.

Par contre, si tu avais la réponse pour mon autre post "Nommage centralisé de mes pages dans titre.inc.php", je pensais que ce serait plus simple et je n'ai trouvé la réponse sur aucun forum

Merci déjà pour ton aide sur ce sujet ! :wink:

ViPHP
xTG
ViPHP | 7331 Messages

04 févr. 2012, 17:19

Un code de debug ne remplace jamais rien.
Il se rajoute pour afficher des informations ou tester des données présentes.
Quand à sa place c'est en fonction de ce qu'on utilise dedans. Là c'est $_SERVER donc peu importe l'endroit vu que c'est une variable globale.

Eléphanteau du PHP | 23 Messages

04 févr. 2012, 17:34

Un sujet que je vais donc également devoir creuser. Merci pour cette piste ! Sinon, j'ai bien créé deux fichiers inc.php et ça fonctionne parfaitement, ton aide a donc été très utile :wink: :wink: