afficher les fichiers d'un repertoire ftp en plusieur colone et par date

DooF-X
Invité n'ayant pas de compte PHPfrance

14 mars 2009, 17:36

bonjour
jaffiche mes fichiers sur cette page http://doof-x.com/son/upload/liste.php mais j'aimerai qu'il soient rangé en 3 colones et par ordre alphabetique

voici mon code

Code : Tout sélectionner

<? $rep = "uploads/"; $dir = opendir($rep); function dd($date) { return date("d/m/Y H:i:s",$date); } while ($f = readdir($dir)) { if(is_file($rep.$f)) { echo '<li>Nom : <a href="uploads/' .$f . '">' .$f . '</a><br>'; echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$f)." octets <br>"; echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$f))."<br>"; echo "</li><br><br>"; } } closedir($dir); ?>

ViPHP
ViPHP | 1996 Messages

14 mars 2009, 21:49

Bonjour stock tes données dans un tableau (array_push devrait t'aider) puis trie ton tableau avec sort() et enfin affiche ton tableau avec foreach ou while() + count(). Voilà revient avec un bout de code, je vais t'aider à le finir.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

DooF-X
Invité n'ayant pas de compte PHPfrance

16 mars 2009, 22:00

quand tu dit dans un tableau tu veut dire dans ma base de donné ? je n'y comprend pas grand chose dsl

ViPHP
ViPHP | 1996 Messages

17 mars 2009, 11:01

Non il faut mettre tes données lu de ton FTP dans un tableau :

regarde cet exemple :
<? $rep = "uploads/";
$dir = opendir($rep); 

 function dd($date) {
   return date("d/m/Y H:i:s",$date);
} 

//je créé un tableau temporaire
$tab_temp = array();

//je scan le dossier puis je stocke les nom dans le tableau
while ($f = readdir($dir)) {

   if(is_file($rep.$f))array_push($tab_temp,$f);
   }

//je trie le tableau par ordre alphabétique en mode humain
natsort($tab_temp);

//j'affiche le tableau en trois colonnes pour cela :
//je calcule le nombre totale de données
$nombre_totale= count ($tab_temp);

//je divise par trois pour connaitre le nombre par colonne
$nombre_par_colonne = $nombre_totale/3;

//j'arrondi à l'entier inférieur
$nombre_par_colonne = floor($nombre_par_colonne);

//je fais l'affichage des trois colonnes en mode div + li en mode float
//première colonne
?>
<div id ="colonne_1" style="float:left;">
<ol>
<?php
for ($i = 0; $i < $nombre_par_colonne ; $i++)
{
echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$f . '">' .$f . '</a><br>';

      echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$f)." octets <br>";

      echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$f))."<br>";

      echo "</li>";
}
?>
</ol>
</div>
et tu fais la même chose pour les deux autres colonnes (faut bien que tu travaille un peu :wink: )
avec
for ($i = $nombre_par_colonne*2; $i < $nombre_par_colonne*3 ; $i++)
et
for ($i = $nombre_par_colonne*3; $i < count($tab_temp) ; $i++)

Enfin n'oublie pas le CCS clear pour revenir à l'affichage classique (tu es en mode float)

il y aura quelque bug d'affichage à mon avis mais essaye déjà cela
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

DooF-X
Invité n'ayant pas de compte PHPfrance

18 mars 2009, 21:39

j'ai essayer de faire le code mais je n'est que des point d'intérogation sur une ligne qui s'affiche

voici le code que j'ai fai :

Code : Tout sélectionner

<!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=utf-8" /> <title>Serveur mp3 www.doof-x.com</title> </head> <body> <? $rep = "uploads/"; $dir = opendir($rep); function dd($date) { return date("d/m/Y H:i:s",$date); } //je créé un tableau temporaire $tab_temp = array(); //je scan le dossier puis je stocke les nom dans le tableau while ($f = readdir($dir)) { if(is_file($rep.$f))array_push($tab_temp,$f); } //je trie le tableau par ordre alphabétique en mode humain natsort($tab_temp); //j'affiche le tableau en trois colonnes pour cela : //je calcule le nombre totale de données $nombre_totale= count ($tab_temp); //je divise par trois pour connaitre le nombre par colonne $nombre_par_colonne = $nombre_totale/3; //j'arrondi à l'entier inférieur $nombre_par_colonne = floor($nombre_par_colonne); //je fais l'affichage des trois colonnes en mode div + li en mode float //première colonne ?> <div id ="colonne_1" style="float:left;"> <ol> <?php for ($i = 0; $i < $nombre_par_colonne ; $i++) { echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$f . '">' .$f . '</a><br>'; echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$f)." octets <br>"; echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$f))."<br>"; echo "</li>"; } ?> </ol> </div> <div id ="colonne_2" style="float:left;"> <ol> <?php for ($i = $nombre_par_colonne*2; $i < $nombre_par_colonne*3 ; $i++) { echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$f . '">' .$f . '</a><br>'; echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$f)." octets <br>"; echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$f))."<br>"; echo "</li>"; } ?> </ol> </div> <div id ="colonne_3" style="float:left;"> <ol> <?php for ($i = $nombre_par_colonne*3; $i < count($tab_temp) ; $i++) { echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$f . '">' .$f . '</a><br>'; echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$f)." octets <br>"; echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$f))."<br>"; echo "</li>"; } ?> </ol> </div> .clear{clear:both; display:block; </body> </html>

DooF-X
Invité n'ayant pas de compte PHPfrance

18 mars 2009, 21:40

merci de ton aide !!!! (j'allai oublier) c'est cool :)

ViPHP
ViPHP | 1996 Messages

19 mars 2009, 11:28

Hmmm :-k J'ai pas bien compris l'histoire de tes points d'interrogations...
Concernant ton code, il m'a l'air propre mais il y a une faute ici :

Code : Tout sélectionner

.clear{clear:both; display:block;
Tu ne peux pas définir du code CSS dans l'HTML sans indiquer qu'il s'agit de CSS (le navigateur ne comprendra rien). Tu as donc deux choix (en fait trois mais dans ton cas deux c'est mieux)
Code en live :

Code : Tout sélectionner

<div style="clear:both; display:block;" </div>
Code "codé"

Code : Tout sélectionner

<div class="clear"> </div> <STYLE type="text/css"> .clear {clear:both; display:block; } </STYLE>
Le troisième est l'intégration dans une feuille de style à part (ce que je recommande mais ce n'est pas le sujet).
Essaye de me monter ton histoire de point d'interrogation.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

DooF-X
Invité n'ayant pas de compte PHPfrance

19 mars 2009, 11:52

j'ai corriger mon erreur mais sa me fait toujour pareil voici la page : http://doof-x.com/son/upload/a.php

ViPHP
ViPHP | 1996 Messages

19 mars 2009, 11:57

Ok.
Dans ta page a.php ton code est-il réellement ce que tu nous a donné?
N'as tu pas une boucle quelques part autre ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

DooF-X
Invité n'ayant pas de compte PHPfrance

19 mars 2009, 16:17

voici mon code :

Code : Tout sélectionner

<!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=utf-8" /> <title>Serveur mp3 www.doof-x.com</title> </head> <body> <? $rep = "uploads/"; $dir = opendir($rep); function dd($date) { return date("d/m/Y H:i:s",$date); } //je créé un tableau temporaire $tab_temp = array(); //je scan le dossier puis je stocke les nom dans le tableau while ($f = readdir($dir)) { if(is_file($rep.$f))array_push($tab_temp,$f); } //je trie le tableau par ordre alphabétique en mode humain natsort($tab_temp); //j'affiche le tableau en trois colonnes pour cela : //je calcule le nombre totale de données $nombre_totale= count ($tab_temp); //je divise par trois pour connaitre le nombre par colonne $nombre_par_colonne = $nombre_totale/3; //j'arrondi à l'entier inférieur $nombre_par_colonne = floor($nombre_par_colonne); //je fais l'affichage des trois colonnes en mode div + li en mode float //première colonne ?> <div id ="colonne_1" style="float:left;"> <ol> <?php for ($i = 0; $i < $nombre_par_colonne ; $i++) { echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$f . '">' .$f . '</a><br>'; echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$f)." octets <br>"; echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$f))."<br>"; echo "</li>"; } ?> </ol> </div> <div id ="colonne_2" style="float:left;"> <ol> <?php for ($i = $nombre_par_colonne*2; $i < $nombre_par_colonne*3 ; $i++) { echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$f . '">' .$f . '</a><br>'; echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$f)." octets <br>"; echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$f))."<br>"; echo "</li>"; } ?> </ol> </div> <div id ="colonne_3" style="float:left;"> <ol> <?php for ($i = $nombre_par_colonne*3; $i < count($tab_temp) ; $i++) { echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$f . '">' .$f . '</a><br>'; echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$f)." octets <br>"; echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$f))."<br>"; echo "</li>"; } ?> </ol> </div> <div class="clear"> </div> <STYLE type="text/css"> .clear {clear:both; display:block; } </STYLE> </body> </html>
non je n'est pas de boucle

merci de ton aide [/code]

ViPHP
ViPHP | 1996 Messages

19 mars 2009, 22:39

Ok j'ai vu une erreur. Dans les boucles for il ne faut plus utiliser $f car il est enregistré dans le tableau $tab_temp. Aussi, voici le code modifié :
<!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=utf-8" />
<title>Serveur mp3 www.doof-x.com</title>
</head>
<body>
<? $rep = "uploads/";
$dir = opendir($rep);

 function dd($date) {
   return date("d/m/Y H:i:s",$date);
}

//je créé un tableau temporaire
$tab_temp = array();

//je scan le dossier puis je stocke les nom dans le tableau
while ($f = readdir($dir)) {

   if(is_file($rep.$f))array_push($tab_temp,$f);
   }

//je trie le tableau par ordre alphabétique en mode humain
natsort($tab_temp);

//j'affiche le tableau en trois colonnes pour cela :
//je calcule le nombre totale de données
$nombre_totale= count ($tab_temp);

//je divise par trois pour connaitre le nombre par colonne
$nombre_par_colonne = $nombre_totale/3;

//j'arrondi à l'entier inférieur
$nombre_par_colonne = floor($nombre_par_colonne);

//je fais l'affichage des trois colonnes en mode div + li en mode float
//première colonne
?>
<div id ="colonne_1" style="float:left;">
<ol>
<?php
for ($i = 0; $i < $nombre_par_colonne ; $i++)
{
echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$tab_temp[$i] . '">' .$tab_temp[$i] . '</a><br>';

      echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$tab_temp[$i])." octets <br>";

      echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$tab_temp[$i]))."<br>";

      echo "</li>";
}
?>
</ol>
</div>

<div id ="colonne_2" style="float:left;">
<ol>
<?php
for ($i = $nombre_par_colonne*2; $i < $nombre_par_colonne*3 ; $i++)
{
echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$tab_temp[$i] . '">' .$tab_temp[$i] . '</a><br>';

      echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$tab_temp[$i])." octets <br>";

      echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$tab_temp[$i]))."<br>";

      echo "</li>";
}
?>
</ol>
</div>

<div id ="colonne_3" style="float:left;">
<ol>
<?php
for ($i = $nombre_par_colonne*3; $i < count($tab_temp) ; $i++) {
echo '<li style="margin-bottom :2 em;">Nom : <a href="'.$rep.$tab_temp[$i] . '">' .$tab_temp[$i] . '</a><br>';

      echo " &nbsp; &nbsp;&nbsp; Taille : ".filesize($rep.$tab_temp[$i])." octets <br>";

      echo " &nbsp; &nbsp;&nbsp; Création : ".dd(filectime($rep.$tab_temp[$i]))."<br>";

      echo "</li>";
}
?>
</ol>
</div>
<div class="clear">
</div>
<STYLE type="text/css">
  .clear
 {clear:both;
 display:block;
  }
  </STYLE>
</body>
</html>
J'espère que cela va marcher.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

DooF-X
Invité n'ayant pas de compte PHPfrance

20 mars 2009, 09:48

j'ai essayer le code toujours le meme message (les points d'intérogation)

ViPHP
ViPHP | 1996 Messages

20 mars 2009, 10:34

Je pense que cela vient d'une boucle : mets les boucle while en commentaire puis après celle des for pour voir d'où vient le problème
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

DooF-X
Invité n'ayant pas de compte PHPfrance

20 mars 2009, 13:17

j'ai essayé de les mettre une a une en commentaire puis toute en meme temps toujours les point d'interrogtation :(

décidément j'ariverai jamais a la finir cette page lol

ViPHP
ViPHP | 1996 Messages

20 mars 2009, 13:24

Ta page est en inclue ou pas ?
Tu n'as pas de problème de lien relatif (avec le dossier upload) vu que n'est plus dans le même dossier.
Essaye d'utiliser die(); pour stopper le script à un endroit précis pour savoir où cela coince.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr