Liste dynamique multilingue
Bonjour à tous.
Après avoir terminé un site immobilier avec de moteur de recherche multicritères, je souhaite sur cette base le faire évoluer : le faire en 3 langues.
Je me suis documenté, jusque-là tout fonctionne (coockies, session) mais j’ai besoin d’un conseil concernant une requête sur une liste déroulante alimentée par la base de données.
J’aimerai que la requête se fasse sur la colonne estate_type_en si c’est l’anglais qui est sélectionné, etc. Car pour le moment, ce que j’ai fait fonctionne comme dans mon exemple mais je trouve cela assez lourd comme code...
Je vous remercie d'avance.
David
Exemple de la structure type de bien :
Code:
1 2 3 4 5 6 7 8
|
CREATE TABLE IF NOT EXISTS `estate_type` (
`id_estate_type` int(10) unsigned NOT NULL auto_increment,
`estate_type` varchar(45) NOT NULL,
` estate_type_en ` varchar(45) NOT NULL,
`estate_type_nl` varchar(45) NOT NULL,
PRIMARY KEY (`id_estate_type`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ; |
et ma liste déroulante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
<select name="country">
<option value="">-----</option>
<?php
if ($_GET['lang']=='fr'){
$sql_fr = "SELECT DISTINCT estate_type.estate_type, id_estate_type FROM estate_type
INNER JOIN estate ON estate_type.id_estate_type=estate.estate_type
WHERE visible=1
ORDER BY id_estate_type ASC";
$result = mysql_query($sql_fr);
while($ln_estate_type = mysql_fetch_array($result)){
if($ln_estate_type['estate_type']==$_REQUEST['estateType']){
$selected="selected='selected'";
} else {
$selected="";
}
echo "<option value='".($ln_estate_type['id_estate_type'])."' $selected>".utf8_encode($ln_estate_type['estate_type']). "</option>";
}
}
else if ($_GET['lang']=='en'){
$sql_en = "SELECT DISTINCT estate_type_en, id_estate_type FROM estate_type
ORDER BY id_estate_type ASC";
$result = mysql_query($sql_en);
while($ln_estate_type = mysql_fetch_array($result)){
if($ln_estate_type['estate_type']==$_REQUEST['estateType']){
$selected="selected='selected'";
} else {
$selected="";
}
echo "<option value='".($ln_estate_type['id_estate_type'])."' $selected>".utf8_encode($ln_estate_type['estate_type_en']). "</option>";
}
}
else if ($_GET['lang']=='nl'){
$sql_nl = "SELECT DISTINCT estate_type_nl, id_estate_type FROM estate_type
ORDER BY id_estate_type ASC";
$result = mysql_query($sql_nl);
while($ln_estate_type = mysql_fetch_array($result)){
if($ln_estate_type['estate_type']==$_REQUEST['estateType']){
$selected="selected='selected'";
} else {
$selected="";
}
echo "<option value='".($ln_estate_type['id_estate_type'])."' $selected>".utf8_encode($ln_estate_type['estate_type_nl']). "</option>";
}
}
else{
$sql_fr = "SELECT DISTINCT estate_type.estate_type, id_estate_type FROM estate_type
INNER JOIN estate ON estate_type.id_estate_type=estate.estate_type
WHERE visible=1
ORDER BY id_estate_type ASC";
$result = mysql_query($sql_fr);
if(!$result){
echo "pas de resultats";
}else{
while($ln_estate_type = mysql_fetch_array($result)){
if($ln_estate_type['estate_type']==$_REQUEST['estateType']){
$selected="selected='selected'";
} else {
$selected="";
}
echo "<option value='".($ln_estate_type['id_estate_type'])."' $selected>".utf8_encode($ln_estate_type['estate_type']). "</option>";
}
}
}
?>
</select> |
Liste dynamique multilingue
Bonjour à tous,
Je reviens vers vous car je ne m'en sors pas du tout avec mes requêtes.
Un exemple concret vaut mieux qu'une longue explication:
La structure de ma table type de bien avec les traduction en fonction de la langue:
Code:
1 2 3 4
|
|id_estate_type|estate_type_fr|estate_type_en|estate_type_nl|
| 1 | maison | house | huizen |
| 2 | terrain | plot | bouwgronden| |
Le code de ma requête initiale avant le choix de traduire le site en différents langues (voir premier post).
Mon souci c'est que je ne suis pas assez expérimenté pour jongler avec PHP et je ne sais vraiment pas m'y prendre correctement.
Code:
1 2 3 4 5 6
|
$sql_fr =
"SELECT DISTINCT estate_type.estate_type, id_estate_type FROM estate_type
INNER JOIN estate ON estate_type.id_estate_type=estate.estate_type
WHERE visible=1
ORDER BY id_estate_type ASC"; |
Ma question est la suivante: est ce que c'est jouable avec la structure que j'ai ou alors je dois repartir sur une autre structure? Si tel est le cas, est ce qu'il existe un exemple concret car là je ne sais pas pas quel bout commencer :s
P.S: mes textes récurrents sont stockés dans des fichiers langues et fonctionne parfaitement et je fonctionne avec une session pour la naviguation de pages en pages.
Merci d'avance de vos lumières.
David