Php débutant multilangue
yesetno1000
Messages postés
62
Date d'inscription
Statut
Membre
Dernière intervention
-
doctormad Messages postés 430 Date d'inscription Statut Membre Dernière intervention -
doctormad Messages postés 430 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens de faire des pages mutlilangues, j'aimerais être conseillé pour améliorer ce script que je viens de faire.
Le Fichier index.php.
ce que j'ai mis en gras ce sont les procédures.
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>School Handicapp</title>
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
</head>
<body>
<div id="page">
<div id="left">
<ul class="lang">
<li><a href="index.php">FR</a> | <a href="en/index.php">EN</a>|<a href="it/index.php">IT</a></li>
</ul>
<!--lang-->
<div class="menu">
<?
include("lib/global.php");
include("lib/nav.php");
include("lib/content.php");
?>
</div> <!--menu-->
</div><!--left-->
<div id="center">
</div><!--center-->
</div><!--page-->
</body>
</html>
</ul>
<!--lang-->
<div class="menu">
<?
include("lib/nav.php");
switch($m)/*gerer le contenue*/
{
case"1":
include("contenu/theschool.php");
break;
case"2":
include("contenu/volunters.php");
break;
case"3":
include("contenu/donations.php");
break;
case"4":
include("contenu/multimedia.php");
break;
case"5":
include("contenu/contacts.php");
break;
default:
include("contenu/home.php");
break;
}
?>
</div> <!--menu-->
</div><!--left-->
<div id="center">
</div><!--center-->
</div><!--page-->
</body>
</html>
--------------------------------------------------------------------------------------------------------------------------------------------------------
LES FICHIERS FRANCAIS/ ANGLAIS/ITALIENS:CHAQU'UN DANS UN REPERTOIRE
REPERTOIRE: FRANCAIS:
j'ai fais une page index.php dans le répertoire FRANCAIS et un sous-repertoire qui s'appelle"CONTENU"
Page "index.php" Pour le FRANCAIS:
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Francais</title>
<link rel="stylesheet" type="text/css" href="../style.css" media="screen" />
</head>
<body>
<div id="page">
<div id="left">
<ul class="lang">
<li><a href="index.php">FR</a> | <a href="../en/index.php">EN</a>|<a href="../it/index.php">IT</a></li><!--attention au direction de langue-->
</ul>
<!--lang-->
<div class="menu">
<?
include("../lib/global.php");
include("../lib/nav.php");
include("../lib/content.php");
?>
</div> <!--menu-->
</div><!--left-->
<div id="center"><!--attention au class déja créé-->
</div><!--center-->
</div><!--page-->
</body>
</html>
Le sous-répertoire qui s'appelle "CONTENU" ou je pourrais mettre mon contenu.
J'ai mis un fichier home.php
<div class="text">
<?
$allNews="SELECT NEW_TEXT_FR FROM news";
$result=mysql_query($allNews);
$row=mysql_fetch_array($result);
echo $row["NEW_TEXT_FR"];
//echo "news";
?>
</div>
Et les autres fichiers aussi.
Tous c'est fichiers seront relier au REPERTOIRE "lib" sur la même racine que index.php au début la page.
-------------J'AI FAIS PAREIL POUR LES AUTRES REPERTOIRE DE /"FR"/"AN/"IT"/LANGUES-------------
REPERTOIRE: ANGLAIS:
j'ai fais une page index.php dans le répertoire Anglais et un sous-repertoire qui s'appelle"CONTENU"
Page "index.php" POUR L'ANGLAIS:
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>School Handicapp</title>
<link rel="stylesheet" type="text/css" href="../style.css" media="screen" />
</head>
<body>
<div id="page">
<div id="left">
<ul class="lang">
<li><a href="../fr/index.php">FR</a> | <a href="index.php">EN</a>|<a href="../it/index.php">IT</a></li>
</ul>
<!--lang-->
<div class="menu">
<?
include("../lib/global.php");
include("../lib/nav.php");
include("../lib/content.php");
?>
</div> <!--menu-->
</div><!--left-->
<div id="center">
</div><!--center-->
</div><!--page-->
</body>
</html>
Le sous-répertoire qui s'appelle "CONTENU"
j'ai mis un autre fichier home.php.c'est juste comme exemple, je pourrais mettre le contenu que je veux.
----------------------------------------------------------------J''ai fais un REPERTOIRE "lib"-----------------------------------
le premier FICHIER s'appelle "nav.php"
Ca va me permettre de pouvoir controler mes menus.
<?
$navArray=array();
if($lang=="fr")
{
$navArray[0]="home";
$navArray[1]="ecole";
$navArray[2]="volontaire";
$navArray[3]="Don";
$navArray[4]="multimedia";
$navArray[5]="contacts";
}
if($lang=="en")
{
$navArray[0]="home";
$navArray[1]="theschool";
$navArray[2]="volunters";
$navArray[3]="donations";
$navArray[4]="multimedia";
$navArray[5]="contacts";
}
if($lang=="it")
{
$navArray[0]="homa";
$navArray[1]="schola";
$navArray[2]="volunteria";
$navArray[3]="dona";
$navArray[4]="multimedia";
$navArray[5]="contacto";
}
?>
<ul>
<?
foreach($navArray as $keyNav=>$menuNom)/*equivaut 0=0*/
{
if($m==$keyNav) $navon="class=\"bnt_$keyNav\"";/*code html class=*/
else $navon=NULL
?><li><a href="index.php?m=<? echo $keyNav?>" <? echo $navon; ?>><? echo $menuNom;?></a></li><?
}
?>
</ul>
Apres j'ai fait un fichier que j'ai appellé "content.php"
ce qui me permet de gerer mes menu.
<?
switch($m)
{
case "1":
include("contenu/ecole.php");
break;
case "2":
include("contenu/volontaire.php");
break;
case "3":
include("contenu/don.php");
break;
case "4":
include("contenu/multimedia.php");
break;
case "5":
include("contenu/contacts.php");
break;
default:
include("contenu/home.php");
}
?>
le dernier FICHIER j'ai mis des conditions en "if":
J'ai appelé le fichier "global.php".
<?
//echo $PHP_SELF;
if(strstr($PHP_SELF,"/en/"))
{
$lang="en";
}
if(strstr($PHP_SELF,"/fr/"))
{
$lang="fr";
}
if(strstr($PHP_SELF,"/it/"))
{
$lang="it";
}
//echo $lang;
# Creation de la connexion au serveur MySQL
mysql_connect("localhost","root","") or die(mysql_error());
#selection de la base de donnée de travail
mysql_select_db("association")or die(mysql_error());
?>
J'aimerais savoir si vous pouvez m'aider à améliorer ce script ou bien me proposer un script plus complet afin que je puise progresser en php.
Je vous remercie, et Pardonner-moi de vous donner tous les détails, je débute.merci.
Je viens de faire des pages mutlilangues, j'aimerais être conseillé pour améliorer ce script que je viens de faire.
Le Fichier index.php.
ce que j'ai mis en gras ce sont les procédures.
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>School Handicapp</title>
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
</head>
<body>
<div id="page">
<div id="left">
<ul class="lang">
<li><a href="index.php">FR</a> | <a href="en/index.php">EN</a>|<a href="it/index.php">IT</a></li>
</ul>
<!--lang-->
<div class="menu">
<?
include("lib/global.php");
include("lib/nav.php");
include("lib/content.php");
?>
</div> <!--menu-->
</div><!--left-->
<div id="center">
</div><!--center-->
</div><!--page-->
</body>
</html>
</ul>
<!--lang-->
<div class="menu">
<?
include("lib/nav.php");
switch($m)/*gerer le contenue*/
{
case"1":
include("contenu/theschool.php");
break;
case"2":
include("contenu/volunters.php");
break;
case"3":
include("contenu/donations.php");
break;
case"4":
include("contenu/multimedia.php");
break;
case"5":
include("contenu/contacts.php");
break;
default:
include("contenu/home.php");
break;
}
?>
</div> <!--menu-->
</div><!--left-->
<div id="center">
</div><!--center-->
</div><!--page-->
</body>
</html>
--------------------------------------------------------------------------------------------------------------------------------------------------------
LES FICHIERS FRANCAIS/ ANGLAIS/ITALIENS:CHAQU'UN DANS UN REPERTOIRE
REPERTOIRE: FRANCAIS:
j'ai fais une page index.php dans le répertoire FRANCAIS et un sous-repertoire qui s'appelle"CONTENU"
Page "index.php" Pour le FRANCAIS:
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Francais</title>
<link rel="stylesheet" type="text/css" href="../style.css" media="screen" />
</head>
<body>
<div id="page">
<div id="left">
<ul class="lang">
<li><a href="index.php">FR</a> | <a href="../en/index.php">EN</a>|<a href="../it/index.php">IT</a></li><!--attention au direction de langue-->
</ul>
<!--lang-->
<div class="menu">
<?
include("../lib/global.php");
include("../lib/nav.php");
include("../lib/content.php");
?>
</div> <!--menu-->
</div><!--left-->
<div id="center"><!--attention au class déja créé-->
</div><!--center-->
</div><!--page-->
</body>
</html>
Le sous-répertoire qui s'appelle "CONTENU" ou je pourrais mettre mon contenu.
J'ai mis un fichier home.php
<div class="text">
<?
$allNews="SELECT NEW_TEXT_FR FROM news";
$result=mysql_query($allNews);
$row=mysql_fetch_array($result);
echo $row["NEW_TEXT_FR"];
//echo "news";
?>
</div>
Et les autres fichiers aussi.
contacts.php multimedia.php ecole.php volontaire.php don.php
Tous c'est fichiers seront relier au REPERTOIRE "lib" sur la même racine que index.php au début la page.
-------------J'AI FAIS PAREIL POUR LES AUTRES REPERTOIRE DE /"FR"/"AN/"IT"/LANGUES-------------
REPERTOIRE: ANGLAIS:
j'ai fais une page index.php dans le répertoire Anglais et un sous-repertoire qui s'appelle"CONTENU"
Page "index.php" POUR L'ANGLAIS:
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>School Handicapp</title>
<link rel="stylesheet" type="text/css" href="../style.css" media="screen" />
</head>
<body>
<div id="page">
<div id="left">
<ul class="lang">
<li><a href="../fr/index.php">FR</a> | <a href="index.php">EN</a>|<a href="../it/index.php">IT</a></li>
</ul>
<!--lang-->
<div class="menu">
<?
include("../lib/global.php");
include("../lib/nav.php");
include("../lib/content.php");
?>
</div> <!--menu-->
</div><!--left-->
<div id="center">
</div><!--center-->
</div><!--page-->
</body>
</html>
Le sous-répertoire qui s'appelle "CONTENU"
j'ai mis un autre fichier home.php.c'est juste comme exemple, je pourrais mettre le contenu que je veux.
----------------------------------------------------------------J''ai fais un REPERTOIRE "lib"-----------------------------------
le premier FICHIER s'appelle "nav.php"
Ca va me permettre de pouvoir controler mes menus.
<?
$navArray=array();
if($lang=="fr")
{
$navArray[0]="home";
$navArray[1]="ecole";
$navArray[2]="volontaire";
$navArray[3]="Don";
$navArray[4]="multimedia";
$navArray[5]="contacts";
}
if($lang=="en")
{
$navArray[0]="home";
$navArray[1]="theschool";
$navArray[2]="volunters";
$navArray[3]="donations";
$navArray[4]="multimedia";
$navArray[5]="contacts";
}
if($lang=="it")
{
$navArray[0]="homa";
$navArray[1]="schola";
$navArray[2]="volunteria";
$navArray[3]="dona";
$navArray[4]="multimedia";
$navArray[5]="contacto";
}
?>
<ul>
<?
foreach($navArray as $keyNav=>$menuNom)/*equivaut 0=0*/
{
if($m==$keyNav) $navon="class=\"bnt_$keyNav\"";/*code html class=*/
else $navon=NULL
?><li><a href="index.php?m=<? echo $keyNav?>" <? echo $navon; ?>><? echo $menuNom;?></a></li><?
}
?>
</ul>
Apres j'ai fait un fichier que j'ai appellé "content.php"
ce qui me permet de gerer mes menu.
<?
switch($m)
{
case "1":
include("contenu/ecole.php");
break;
case "2":
include("contenu/volontaire.php");
break;
case "3":
include("contenu/don.php");
break;
case "4":
include("contenu/multimedia.php");
break;
case "5":
include("contenu/contacts.php");
break;
default:
include("contenu/home.php");
}
?>
le dernier FICHIER j'ai mis des conditions en "if":
J'ai appelé le fichier "global.php".
<?
//echo $PHP_SELF;
if(strstr($PHP_SELF,"/en/"))
{
$lang="en";
}
if(strstr($PHP_SELF,"/fr/"))
{
$lang="fr";
}
if(strstr($PHP_SELF,"/it/"))
{
$lang="it";
}
//echo $lang;
# Creation de la connexion au serveur MySQL
mysql_connect("localhost","root","") or die(mysql_error());
#selection de la base de donnée de travail
mysql_select_db("association")or die(mysql_error());
?>
J'aimerais savoir si vous pouvez m'aider à améliorer ce script ou bien me proposer un script plus complet afin que je puise progresser en php.
Je vous remercie, et Pardonner-moi de vous donner tous les détails, je débute.merci.
A voir également:
- Php débutant multilangue
- Easy php - Télécharger - Divers Web & Internet
- Logiciel de programmation pour débutant - Guide
- Logiciel montage vidéo débutant - Guide
- Expert php pinterest - Télécharger - Langages
- Apprendre le coran pour débutant (+ pdf) - Télécharger - Histoire & Religion
3 réponses
Salut,
Il y a autant de méthodes que de développeurs mais la tienne me semble très correcte.
Quelques détails tout de même, dans tes fichiers nav et global il vaudrait mieux définir dès le départ une langue par défaut au cas ou le script ne passerait par aucun de tes tests conditionnels.
Mieux vaut également nommer les variables plus explicitement, pour $m par exemple.
Petit plus tu aurais pu détecter la langue du navigateur pour rediriger sur la bonne page directement.
Quelque chose de ce style (pas testé mais tu comprends le principe) :
[code]
$valid_langs = array ("fr","en","it");
$lang = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang = strtolower(substr(chop($lang[0]),0,2));
if( ! in_array( $lang, $valid_langs ) ){
$lang="fr";
}
header("Location: ".$lang."/home.php");
/code
Tu peux également garder la langue en session ou en cookie
Est-il nécessaire de faire un die si la connexion bdd nefonctionne pas ? Il serait + propre d'afficher une page d'erreur appropriée.
Il y a autant de méthodes que de développeurs mais la tienne me semble très correcte.
Quelques détails tout de même, dans tes fichiers nav et global il vaudrait mieux définir dès le départ une langue par défaut au cas ou le script ne passerait par aucun de tes tests conditionnels.
Mieux vaut également nommer les variables plus explicitement, pour $m par exemple.
Petit plus tu aurais pu détecter la langue du navigateur pour rediriger sur la bonne page directement.
Quelque chose de ce style (pas testé mais tu comprends le principe) :
[code]
$valid_langs = array ("fr","en","it");
$lang = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang = strtolower(substr(chop($lang[0]),0,2));
if( ! in_array( $lang, $valid_langs ) ){
$lang="fr";
}
header("Location: ".$lang."/home.php");
/code
Tu peux également garder la langue en session ou en cookie
Est-il nécessaire de faire un die si la connexion bdd nefonctionne pas ? Il serait + propre d'afficher une page d'erreur appropriée.
Je te remercie des tes conseilles, ça ma aidé.
Juste une question, je n'ai pas compris un" die", je débute et j'ai pas encore tous les termes de language de programmation, j'apprends par des livres.
""Est-il nécessaire de faire un die si la connexion bdd nefonctionne pas ? Il serait + propre d'afficher une page d'erreur appropriée.""
pourrais me dire ce que tu pense de l'url rewriting.aurais-tu des conseilles à me donner.
Merci..encore des tes conseilles et passe un bon week-end
Juste une question, je n'ai pas compris un" die", je débute et j'ai pas encore tous les termes de language de programmation, j'apprends par des livres.
""Est-il nécessaire de faire un die si la connexion bdd nefonctionne pas ? Il serait + propre d'afficher une page d'erreur appropriée.""
pourrais me dire ce que tu pense de l'url rewriting.aurais-tu des conseilles à me donner.
Merci..encore des tes conseilles et passe un bon week-end
Pour le die :
Tu fais mysql_connect("localhost","root","") or die(mysql_error());
mais tu pourrais faire
if ( !mysql_connect("localhost","root","")){
header("Location:page_erreur.php");
}
L'url rewriting peut permettre d'améliorer le référencement du site, sous réserve que les mots clefs de l'url soient bien choisis. Mais attention de bien répertorier toutes les urls possible du site dans la sitemap, sinon c contre productif.
Tu fais mysql_connect("localhost","root","") or die(mysql_error());
mais tu pourrais faire
if ( !mysql_connect("localhost","root","")){
header("Location:page_erreur.php");
}
L'url rewriting peut permettre d'améliorer le référencement du site, sous réserve que les mots clefs de l'url soient bien choisis. Mais attention de bien répertorier toutes les urls possible du site dans la sitemap, sinon c contre productif.