Remplir une liste dynamiquement à partir d'un fichier PHP
Bonjour,
Alors en fait je bloque sur un truc qui me parait tout bete mais je n'y arrive pas....
Je vous explique mon probleme depuis le début:
Alors en fait j'ai une page HTML classique,en fait dans cette page j'aimerai afficher une liste de langue.
Mais la liste de langue doit etre générée dynamiquement,en effet cette liste de langue peut changer suivant les langues présentes dans un fichier XML.
Je vous expique donc ce que j'ai fait.
J'ai d'abord un fichier XML (SOURCE-XML.xml) de type:
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
|
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row id="0">
<cell xml:lang="en">English sentence 1</cell>
<cell xml:lang="fr">Phrase Francaise 1</cell>
<cell xml:lang="sp">Phrase Espagnol 1</cell>
<cell xml:lang="jp">Phrase Japonaise 1</cell>
<cell xml:lang="it">Phrase Italienne 1</cell>
<cell xml:lang="ar">Phrase Arabe 1</cell>
</row>
<row id="1">
<cell xml:lang="en">English sentence 2</cell>
<cell xml:lang="fr">Phrase Francaise 2</cell>
<cell xml:lang="sp">Phrase Espagnol 2</cell>
<cell xml:lang="jp">Phrase Japonaise 2</cell>
<cell xml:lang="it">Phrase Italienne 2</cell>
<cell xml:lang="ar">Phrase Arabe 2</cell>
</row>
</rows> |
que je parse avec un fichier PHP (pour récupérer les langues) de ce type:
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
|
<?php
$nom_fichier="SOURCE-XML.xml";
//Copie de la totalité du fichier XML dans une string
$tout=file_get_contents("$nom_fichier");
//Récupération des données
$token=strtok($tout, '<');
$token=strtok('>');
$a=0;
while($token!="/rows"){
$token=strtok('<');
$token=strtok('>');
if($token=="cell xml:lang=\"en\""){
$table[$a]="Anglais";
$a++;
}
else if($token=="cell xml:lang=\"fr\""){
$table[$a]="Francais";
$a++;
}
else if($token=="cell xml:lang=\"jp\""){
$table[$a]="Japonais";
$a++;
}
else if($token=="cell xml:lang=\"ru\""){
$table[$a]="Italien";
$a++;
}
else if($token=="cell xml:lang=\"ch\""){
$table[$a]="Espagnol";
$a++;
}
else if($token=="cell xml:lang=\"sp\""){
$table[$a]="Arabe";
$a++;
}
}
//Ne marche que si le fichier xml contient au moins une langue
$nbrOcc=0;
$y=0;
$i=0;
$z=0;
$list[$i]=$table[0];
$i++;
for($z=1;$z<$a;$z++){
$lang=$table[$z];
for($y=0;$y<$i;$y++){
if($list[$y]==$lang)$nbrOcc++;
}
if($nbrOcc==0){
$list[$i]=$lang;
$i++;
}
$nbrOcc=0;
}
echo "<select name='langage'>";
for($z=0;$z<$i;$z++){
echo "<option value='$list[$z]'>$list[$z]</option>";
}
echo "</select>";
?> |
donc la je recupere bien une liste avec les différentes langues de mon fichier,
maintenant ce que je voudrai faire c'est transmettre cette liste à ma page HTML pour qu'elle l'affiche.
j'arrive à récupérer le code de la liste dans une variable javascript grace à AJAX avec cette fonction:
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
|
function rec_lang() {
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("GET", "PHP/rec_lang.php", false);
xhr_object.send(null);
if(xhr_object.readyState == 4) {
alert(xhr_object.responseText);
listlang = eval(xhr_object.responseText);
alert(listlang);
alert("Liste de langue bien générée !");
}
} |
Et voilà,j'aimerai maintenant afficher ma liste dans ma page html,il faut pour celà que j'invoque la fonction rec_lang() et une fois recu la liste que je l'affiche dans ma page mais je n'ai aucune idée de comment faire.
En effet d'habitude je fais ma liste avec un simple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<FORM>
Langue source <select name="langsName" id="langs" onChange="var ls = document.getElementById('srcLang'); ls.value = document.getElementById('langs').value;">
<option value="default" label=""></option>
<option value="ar" label="">Arabe</option>
<option value="en" label="">Anglais</option>
<option value="sp" label="">Espagnol</option>
<option value="fr" label="">Francais</option>
<option value="it" label="">Italien</option>
<option value="jp" label="">Japonais</option>
</select>
<FORM> |
Mais là j'aimerai que la liste soit celle générée par le fichier PHP car le contenu du fichier XML peut changer pour n'avoir plus que 3 langues par exemple...
Voilà,j'espere que j'ai été assez clair.
Et donc si quelqu'un connaissais une solution celà m'aiderait grandement...
Merci