Site multilingue, regrouper plusieurs requêtes en une seule

Eléphanteau du PHP | 24 Messages

05 déc. 2006, 08:34

Bonjour,

Je travaille sur un site qui pourrait devenir mulitlingue.

Dans ma page html, j'appelle le texte en utilisant la syntaxe suivante, par exemple pour afficher le titre :
$txt = "SELECT français FROM texte WHERE section='titre'";
$reqtxt = mysql_query($txt);
$restxt = mysql_fetch_assoc($reqtxt);
$affichage = $restxt[$langue]; 
print $affichage;
où section désigne l'emplacement (ou la "cible", si vous préférez) dans la page.

La structure de ma table "texte" est la suivante :

Code : Tout sélectionner

CREATE TABLE 'texte' ( 'identifiant' tinyint(4) NOT NULL auto_increment, 'page' varchar(25) NOT NULL, 'section' varchar(25) NOT NULL, 'français' mediumtext NOT NULL, 'anglais' mediumtext NOT NULL, PRIMARY KEY (`identifiant`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;
Sachant que la page compte une quarantaine de champs, ne serait-il pas plus opportun (et plus rapide !) d'essayer de récupérer les champs de ma table en une seule requête ?

Oui, mais... comment faire ?

J'ai essayé de travailler avec mysql_fetch_assoc et mysql_fetch_array avec une syntaxe comme
$txt = "SELECT section,français FROM texte WHERE page='index'";
$reqtxt = mysql_query($txt);
while ($row = mysql_fetch_assoc($reqtxt)) {
   echo $row["section"];
   echo $row["français"];
}
mais les champs s'affichent les uns derrières les autres, quelle que soit la fonction.

Or, je souhaiterai pouvoir récupérer le couple section/texte distinctement pour utiliser une syntaxe comme
$titre = ma "sous-requête" Sql_a
print $titre;
$adresse = ma "sous_requête" Sql_b
print $adresse
Il me semble que ce genre de requête doit utiliser un tableau associatif, mais cette notion ne m'est pas familière. J'ai essayé aussi avec mysql_dataseek, sans résultat intéressant.

J'espère ne pas avoir été confus.

Merci de votre aide.

Cordialement,

I.