Liste déroulante fichier xml

Résolu
lesloup Messages postés 20 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 1 septembre 2012 - 30 août 2012 à 12:27
lesloup Messages postés 20 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 1 septembre 2012 - 1 sept. 2012 à 00:15
Bonjour à tous & toutes !
Je suis débutant, déja , mais j'essaye de faire une lister des fichiers xml à partir d'un FTP !

Voici le code :
<?php

function listing($repertoire){

$fichier = array();

if (is_dir($repertoire)){

$dir = opendir($repertoire);                              //ouvre le repertoire courant désigné par la variable
while(false!==($file = readdir($dir))){                             //on lit tout et on récupere tout les fichiers dans $file

if(!in_array($file, array('.','..'))){            //on eleve le parent et le courant '. et ..'
$siteURL="http://www.lesdeglingosdutarmac.fr/test_result/";
$page = $file;                            //sort l'extension du fichier
$page = explode('.', $page);
$nb = count($page);
$nom_fichier = $page[0];
for ($i = 1; $i < $nb-1; $i++){
$nom_fichier .= '.'.$page[$i];
}
if(isset($page[1])){
$ext_fichier = $page[$nb-1];
if(!is_file($file)) { $file = '/'.$file; }
}
else {
if(!is_file($file)) { $file = '/'.$file; }            //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
$ext_fichier = '';
}

if($ext_fichier != 'php' and $ext_fichier != 'html') {        //utile pour exclure certains types de fichiers à ne pas lister
array_push($fichier, $file);
}
}
}
}

natcasesort($fichier);                                    //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse

foreach($fichier as $value) {
          echo "<form name='standings' action='" . $siteURL . "/resultsFiles_transform.php?file=".$value."' method='POST'>\n";

echo '<select name="standings" onchange="document.standings.submit()"><option selected="selected">Choisir une course</option><option value="'.$value. '">'.$value. '</option></select></form>
';

}

}

//exemple d'utilisation :

listing('.');        //chemin du dossier


?>

$Value vaut le nom du fichier
On doit utiliser une boucle (while je pense ) mais je n'arrive toujours pas à faire
Une boucle, car actuellement, la liste déroulante est répéter plusieurs fois...
le formulaire doit rediriger vers la page http://www.lesdeglingosdutarmac.fr/test_result/resultsFiles_transform.php?file=$Value à la sélection du fichier.xml

Je vous remerci de votre aide :)

11 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
30 août 2012 à 17:51
Salut,

Sort le form de la boucle, car là tu créé un nouveau formulaire à chaque fois, ce qui n'est pas ce que tu veux. Et sinon, tu devrais utiliser urlencode() sur le nom du fichier lorsque tu créé l'url.
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
31 août 2012 à 23:34
Ce soucis n'est visible que sous chrome pour une bonne raison : par défaut il considère l'encodage comme étant de l'ISO-8859-1. Bref, la faute est tienne, tu n'as pas bien déclaré l'encodage et , en plus, tu as des caractères assez louches. Soit dit en passant, il manque tout le début du html...
3
lesloup Messages postés 20 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 1 septembre 2012
30 août 2012 à 20:40
<?php

function listing($repertoire){

$fichier = array();

if (is_dir($repertoire)){

$dir = opendir($repertoire);                              //ouvre le repertoire courant désigné par la variable
while(false!==($file = readdir($dir))){                             //on lit tout et on récupere tout les fichiers dans $file

if(!in_array($file, array('.','..'))){            //on eleve le parent et le courant '. et ..'
$siteURL="http://www.lesdeglingosdutarmac.fr/test_result";
$page = $file;                            //sort l'extension du fichier
$page = explode('.', $page);
$nb = count($page);
$nom_fichier = $page[0];
for ($i = 1; $i < $nb-1; $i++){
$nom_fichier .= '.'.$page[$i];
}
if(isset($page[1])){
$ext_fichier = $page[$nb-1];
if(!is_file($file)) { $file = '/'.$file; }
}
else {
if(!is_file($file)) { $file = '/'.$file; }            //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
$ext_fichier = '';
}

if($ext_fichier != 'php' and $ext_fichier != 'html') {        //utile pour exclure certains types de fichiers à ne pas lister
array_push($fichier, $file);
}
}
}
}

natcasesort($fichier);                                    //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
  echo "<form name='standings' action='" . $siteURL . "/resultsFiles_transform.php? method='POST'>\n";
  echo "<select  onchange='document.standings.submit()' name='file'=''>";
foreach($fichier as $value) {

echo '<option selected="selected">Choisir une course</option><option value="'.$value. '">'.$value. '</option></select></form>
';
}

}

//exemple d'utilisation :

listing('.');        //chemin du dossier


?>


Merci TychoBrahe !

Manque plus qu'une seule chose, enfin deux !
Pourquoi je n'ai qu'un seul fichier lister dans la liste déroulante ?
http://www.lesdeglingosdutarmac.fr/test_result/resultsFiles/ftp.php

Optionnel :
Comment faire pour que la page s'actualise et que le XML s'affiche en dessous
et quand je selectionne un autre fichier xml. Le dernier sélectionné s'enlève et que le nouveau sélectionné apparaisse

Merci !
0
lesloup Messages postés 20 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 1 septembre 2012
30 août 2012 à 20:46
<?php

function listing($repertoire){

$fichier = array();

if (is_dir($repertoire)){

$dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable
while(false!==($file = readdir($dir))){ //on lit tout et on récupere tout les fichiers dans $file

if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'
$siteURL="http://www.lesdeglingosdutarmac.fr/test_result";
$page = $file; //sort l'extension du fichier
$page = explode('.', $page);
$nb = count($page);
$nom_fichier = $page[0];
for ($i = 1; $i < $nb-1; $i++){
$nom_fichier .= '.'.$page[$i];
}
if(isset($page[1])){
$ext_fichier = $page[$nb-1];
if(!is_file($file)) { $file = '/'.$file; }
}
else {
if(!is_file($file)) { $file = '/'.$file; } //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
$ext_fichier = '';
}

if($ext_fichier != 'php' and $ext_fichier != 'html') { //utile pour exclure certains types de fichiers à ne pas lister
array_push($fichier, $file);
}
}
}
}

natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
echo "<form name='standings' action='" . $siteURL . "/resultsFiles_transform.php? method='POST'>\n";
echo "<select onchange='document.standings.submit()' name='file'=''>";
echo '<option selected="selected">Choisir une course</option>';

foreach($fichier as $value) {

echo '<option value="'.$value. '">'.$value. '
';
}
echo '</option></select></form>';

}

//exemple d'utilisation :

listing('.'); //chemin du dossier


?>

Hop pardon double post !
Correction du code !
Correction du problème pour la liste des fichiers !


Peut on voir le point optionnel ?
Peut on afficher le fichier xml sous la liste déroulante ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
30 août 2012 à 21:03
Salut,

Correction du code !

Fais gaffe, tu as sortit le </option> alros que tu n'aurais pas du.

Comment faire pour que la page s'actualise et que le XML s'affiche en dessous
et quand je selectionne un autre fichier xml. Le dernier sélectionné s'enlève et que le nouveau sélectionné apparaisse

Déjà, fais pointer le formulaire vers la même page. Ensuite, si on t'a passé un nom de fichier xml via ce formulaire, alors tu l'affiche. La manière de l'afficher va dépendre de ce que tu veux faire.
0
lesloup Messages postés 20 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 1 septembre 2012
30 août 2012 à 21:10
http://www.lesdeglingosdutarmac.fr/test_result/resultsFiles_transform.php?file=2006_02_18_18_05_58-36SR.xml
Exactement ça mais un problème est apparu, l'apparition de AAAAA (mes fichiers sont bien encodage UTF8)
Mais je pense que ça vient de la transformation !

Merci pour la balise option c'est corrigé
Voici la page php ou est affiché la liste déroulante avec un simple include.
Cela fonctionne mais je voudrais enlever ces fichier AAAAA
Merci
<? include("./config.php"); ?>

<!--HEADER-->
<center>
<hr color="Red"  width="90%" size="1" align="center">
,
<? echo $serverName ?>,
<? echo $copyright_zeXav ?>

<hr color="Red"  width="90%" size="1" align="center">
</center>
<!--END HEADER-->




<?php

$file=$_GET['file'];
$chemin=$dir_ResultsFiles.$file;
 include('http://www.lesdeglingosdutarmac.fr/test_result/resultsFiles/ftp.php');
if(file_exists($chemin) and eregi(".xml",$chemin)){
if ((PHP_VERSION>='5')&&extension_loaded('xsl'))
 require_once('xslt-php4-to-php5.php');
$ficXsl="rFactorParser_zeXav.xsl";

$xh = xslt_create();
//xslt_set_encoding($xh,"ISO-8859-1");

$file=fopen($chemin,"r");
$xml=fread($file,filesize($chemin));
fclose($file);

$file=fopen($ficXsl,"r");
$xsl=fread($file,filesize($ficXsl));
fclose($file);

$xml=str_replace('encoding="utf-8"','encoding="ISO-8859-1"',$xml);

//Caractères à la fin du fichier
$xml=ereg_replace("/rFactorXML>.*","/rFactorXML>",$xml);
$arguments = array(
'/_xml' => $xml,
'/_xsl' => $xsl
);

$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);

if (!$result) {
die(printf("<center>! Error present XML file : $chemin --- [%d]: %s !</center>",xslt_errno($xh), xslt_error($xh)));
}

xslt_free($xh);

print "$result";

}else{
die("<center>! Error find XML file : $chemin !</center>");
}


?>
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
31 août 2012 à 20:49
Salut,

Exactement ça mais un problème est apparu, l'apparition de AAAAA (mes fichiers sont bien encodage UTF8)

Où donc ? Pour ma part je n'en vois pas. Poste donc un screenshot si le problème est toujours d'actualité.
0
lesloup Messages postés 20 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 1 septembre 2012
31 août 2012 à 20:53
Ici :http://www.lesdeglingosdutarmac.fr/test_result/resultsFiles_transform.php?file=2006_02_18_18_05_58-36SR.xml

Je remet pas le contenu du fichier transform.php
c'est exactement ce que je veux (bon c'est pas très propre comme code mais ça fonctionne )
Sauf l'apparition de caractère de je ne sais où..peut être dans le fichier transform qui parle d'iso 8859-1 & d'UTF8

merci
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
31 août 2012 à 22:39
Je recommence : chez moi je ne vois pas de problème. Si c'est bien un problème d'encodage que tu as, est-ce que tu peux prendre un screenshot afin de me le montrer stp ? Parce que n'ayant pas le problème, je ne peux rien dire dessus.
0
lesloup Messages postés 20 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 1 septembre 2012
31 août 2012 à 23:08
J'ai compris, il y a un soucis avec le navigateur Google chrome

Voilou
Ce bug n'apparait pas dans Internet explorer ni Mozilla firefox
Bizarre, bizarre

Merci :)
0
lesloup Messages postés 20 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 1 septembre 2012
1 sept. 2012 à 00:15
<? include("./config.php"); ?>

<!--HEADER-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8" />
<center>
<hr color="Red"  width="90%" size="1" align="center">
,
<? echo $serverName ?>,
<? echo $copyright_zeXav ?>

<hr color="Red"  width="90%" size="1" align="center">
</center>
</head>
<!--END HEADER-->




<?php

$file=$_GET['file'];
$chemin=$dir_ResultsFiles.$file;

if(file_exists($chemin) and eregi(".xml",$chemin)){
if ((PHP_VERSION>='5')&&extension_loaded('xsl'))
 require_once('xslt-php4-to-php5.php');
$ficXsl="rFactorParser_zeXav.xsl";

$xh = xslt_create();
//xslt_set_encoding($xh,"ISO-8859-1");

$file=fopen($chemin,"r");
$xml=fread($file,filesize($chemin));
fclose($file);

$file=fopen($ficXsl,"r");
$xsl=fread($file,filesize($ficXsl));
fclose($file);

$xml=str_replace('encoding="utf-8"','encoding="ISO-8859-1"',$xml);
 include('http://www.lesdeglingosdutarmac.fr/test_result/resultsFiles/ftp.php');
//Caractères à la fin du fichier
$xml=ereg_replace("/rFactorXML>.*","/rFactorXML>",$xml);
$arguments = array(
'/_xml' => $xml,
'/_xsl' => $xsl
);

$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);

if (!$result) {
die(printf("<center>! Error present XML file : $chemin --- [%d]: %s !</center>",xslt_errno($xh), xslt_error($xh)));
}

xslt_free($xh);

print "$result";

}else{
die("<center>! Error find XML file : $chemin !</center>");
}


?>

</html>



Que je suis bête n'est ce pas ?


Merci beaucoup
0
Rejoignez-nous