Page 1 sur 2
afficher les fichiers d'un repertoire ftp en plusieur colone
Posté : 14 mars 2009, 17:36
par DooF-X
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 " Taille : ".filesize($rep.$f)." octets <br>";
echo " Création : ".dd(filectime($rep.$f))."<br>";
echo "</li><br><br>";
}
}
closedir($dir); ?>
Posté : 14 mars 2009, 21:49
par Aureusms
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.
RE
Posté : 16 mars 2009, 22:00
par DooF-X
quand tu dit dans un tableau tu veut dire dans ma base de donné ? je n'y comprend pas grand chose dsl
Posté : 17 mars 2009, 11:01
par Aureusms
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 " Taille : ".filesize($rep.$f)." octets <br>";
echo " 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

)
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
re
Posté : 18 mars 2009, 21:39
par DooF-X
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 " Taille : ".filesize($rep.$f)." octets <br>";
echo " 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 " Taille : ".filesize($rep.$f)." octets <br>";
echo " 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 " Taille : ".filesize($rep.$f)." octets <br>";
echo " Création : ".dd(filectime($rep.$f))."<br>";
echo "</li>";
}
?>
</ol>
</div>
.clear{clear:both;
display:block;
</body>
</html>
re
Posté : 18 mars 2009, 21:40
par DooF-X
merci de ton aide !!!! (j'allai oublier) c'est cool

Posté : 19 mars 2009, 11:28
par Aureusms
Hmmm

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 :
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 "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]
re
Posté : 19 mars 2009, 11:52
par DooF-X
j'ai corriger mon erreur mais sa me fait toujour pareil voici la page :
http://doof-x.com/son/upload/a.php
Posté : 19 mars 2009, 11:57
par Aureusms
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 ?
re
Posté : 19 mars 2009, 16:17
par DooF-X
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 " Taille : ".filesize($rep.$f)." octets <br>";
echo " 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 " Taille : ".filesize($rep.$f)." octets <br>";
echo " 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 " Taille : ".filesize($rep.$f)." octets <br>";
echo " 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]
Posté : 19 mars 2009, 22:39
par Aureusms
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 " Taille : ".filesize($rep.$tab_temp[$i])." octets <br>";
echo " 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 " Taille : ".filesize($rep.$tab_temp[$i])." octets <br>";
echo " 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 " Taille : ".filesize($rep.$tab_temp[$i])." octets <br>";
echo " 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.
re
Posté : 20 mars 2009, 09:48
par DooF-X
j'ai essayer le code toujours le meme message (les points d'intérogation)
Posté : 20 mars 2009, 10:34
par Aureusms
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
re
Posté : 20 mars 2009, 13:17
par DooF-X
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
Posté : 20 mars 2009, 13:24
par Aureusms
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.