Php sort
Ph[]b[]s
Messages postés
24
Statut
Membre
-
Ph[]b[]s Messages postés 24 Statut Membre -
Ph[]b[]s Messages postés 24 Statut Membre -
Bonjour,
Après avoir réfléchis toute une journée pour trouver une solution à mon problème. Je vais d'abord vous expliquer ce que je souhaite.
Ayant un serveur ftp, je souhaiterai mettre à la disposition les fichiers qui sont sur un répertoire via un navigateur sans avoir besoin de créer des comptes au ftp.
J'ai trouvé un .php que j'ai pu modifier à ma facon pour permettre de voir les fichiers sans avoir de compte et téléchargeable.
Mais les fichiers sont dans le désordre. Sachant qu'il n'y a que des fichiers (source tv d'un jeu) de match, passer 5h pour trouver les 4 démo cela ne va pas le faire. je dois donc passer par la balise sort, mais je n'ai aucune connaissance en php à part pour modifier (sans trop comprendre) et j'ai besoin de votre aide.
J'ai mis en tableau mais un soucis se pose si il y a 5000 fichier j'aurais un espace vide de 5000 lignes... Ce qui fera un total de 10000 ligne sur la page.
Voici le code :
<body>
<b>VOICI LES SOURCE TV</b>
</body>
blablabla
<? $rep = "./";
$dir = opendir($rep);
function dd($date) {
return date("d/m/Y H:i:s",$date);
}
echo '<center><table border="2" bgcolor="orange"><tr><td>nom</td><td>taille</td><td>date</td></tr>';
while ($f = readdir($dir)) {
if(is_file($rep.$f)) {
echo '<tr><td><a href="' .$f . '">' .$f . '</a></td>';
echo "<td> ".filesize($rep.$f)." octets </td>";
echo "<td> ".dd(filectime($rep.$f))."</td>";
echo "<br><br></tr>";
}
}
echo '</table></center>';
closedir($dir); ?>
Ce que j'aimerai c'est :
- Supprimer le blanc au début de la page (la grandeur dépends du nombre de fichier sur le répertoire)
- Pouvoir classer par nom. (les fichier commencent par : 2009/03/xx)
Merci.
Après avoir réfléchis toute une journée pour trouver une solution à mon problème. Je vais d'abord vous expliquer ce que je souhaite.
Ayant un serveur ftp, je souhaiterai mettre à la disposition les fichiers qui sont sur un répertoire via un navigateur sans avoir besoin de créer des comptes au ftp.
J'ai trouvé un .php que j'ai pu modifier à ma facon pour permettre de voir les fichiers sans avoir de compte et téléchargeable.
Mais les fichiers sont dans le désordre. Sachant qu'il n'y a que des fichiers (source tv d'un jeu) de match, passer 5h pour trouver les 4 démo cela ne va pas le faire. je dois donc passer par la balise sort, mais je n'ai aucune connaissance en php à part pour modifier (sans trop comprendre) et j'ai besoin de votre aide.
J'ai mis en tableau mais un soucis se pose si il y a 5000 fichier j'aurais un espace vide de 5000 lignes... Ce qui fera un total de 10000 ligne sur la page.
Voici le code :
<body>
<b>VOICI LES SOURCE TV</b>
</body>
blablabla
<? $rep = "./";
$dir = opendir($rep);
function dd($date) {
return date("d/m/Y H:i:s",$date);
}
echo '<center><table border="2" bgcolor="orange"><tr><td>nom</td><td>taille</td><td>date</td></tr>';
while ($f = readdir($dir)) {
if(is_file($rep.$f)) {
echo '<tr><td><a href="' .$f . '">' .$f . '</a></td>';
echo "<td> ".filesize($rep.$f)." octets </td>";
echo "<td> ".dd(filectime($rep.$f))."</td>";
echo "<br><br></tr>";
}
}
echo '</table></center>';
closedir($dir); ?>
Ce que j'aimerai c'est :
- Supprimer le blanc au début de la page (la grandeur dépends du nombre de fichier sur le répertoire)
- Pouvoir classer par nom. (les fichier commencent par : 2009/03/xx)
Merci.
A voir également:
- Php sort
- Easy php - Télécharger - Divers Web & Internet
- Aucun son ne sort de mon pc - Guide
- Expert php pinterest - Télécharger - Langages
- Php alert ✓ - Forum PHP
- Tirage au sort excel aléatoire sans doublon - Forum Excel
11 réponses
mama mia !
c'est quoi ce balisage ???
tu fermes ton body et derrière tu continues à écrire ??
et du <br> entre un </td> et un </tr> ??? pour quoi faire ???
Bon, un peu de ménage
Et là j'ai fais que le minimum syndical :o
Bon, j'ai pas résolu ton problème principal, mais, crois moi, je t'ai quand même bien aidé ;)
c'est quoi ce balisage ???
tu fermes ton body et derrière tu continues à écrire ??
et du <br> entre un </td> et un </tr> ??? pour quoi faire ???
Bon, un peu de ménage
<body>
<b>VOICI LES SOURCE TV</b>
blablabla
<?php $rep = "./";
$dir = opendir($rep);
function dd($date) {
return date("d/m/Y H:i:s",$date);
}
echo '<center><table style="border:2px;background-color:#FF9900">'
.'<tr><td>nom</td><td>taille</td><td>date</td></tr>';
while ($f = readdir($dir)) {
if(is_file($rep.$f)) {
echo '<tr>'
.'<td><a href="' .$f . '">' .$f . '</a></td>'
.'<td> '.filesize($rep.$f).' octets </td>'
.'<td> '.dd(filectime($rep.$f)).'</td>'
.'</tr>';
}
}
echo '</table></center>';
closedir($dir); ?>
</body>
Et là j'ai fais que le minimum syndical :o
Bon, j'ai pas résolu ton problème principal, mais, crois moi, je t'ai quand même bien aidé ;)
bon, une indication... (j'ai aps le temps de faire plus pour l'instant)
utilise un tableau (array)
place chaque item de ton répertoire dans le tableau puis trie le tableau
utilise un tableau (array)
place chaque item de ton répertoire dans le tableau puis trie le tableau
J'ai testé les commande avec le array, mais dans les exemples que j'ai vue, les array sont déjà définis alors que là c'est une variable.
Merci.
(pour le blabla ce n'était qu'un test pour voir ce qui n'allait pas)
Merci.
(pour le blabla ce n'était qu'un test pour voir ce qui n'allait pas)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
essayes en cherchant du côté de la commande scandir()
https://www.php.net/manual/fr/function.scandir.php
https://www.php.net/manual/fr/function.scandir.php
J'ai trouvé la base :
<?
echo ("<h1>Directory Overzicht:</h1>");
function getFiles($path) {
//Function takes a path, and returns a numerically indexed array of associative arrays containing file information,
//sorted by the file name (case insensitive). If two files are identical when compared without case, they will sort
//relative to each other in the order presented by readdir()
$files = array();
$fileNames = array();
$i = 0;
if (is_dir($path)) {
if ($dh = opendir($path)) {
while (($file = readdir($dh)) !== false) {
if ($file == "." || $file == "..") continue;
$fullpath = $path . "/" . $file;
$fkey = strtolower($file);
while (array_key_exists($fkey,$fileNames)) $fkey .= " ";
$a = stat($fullpath);
$files[$fkey]['size'] = $a['size'];
if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-";
else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K";
else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
else $files[$fkey]['sizetext'] = $a['size'] . " bytes";
$files[$fkey]['name'] = $file;
$files[$fkey]['type'] = filetype($fullpath);
$fileNames[$i++] = $fkey;
}
closedir($dh);
} else die ("Cannot open directory: $path");
} else die ("Path is not a directory: $path");
sort($fileNames,SORT_STRING);
$sortedFiles = array();
$i = 0;
foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f];
return $sortedFiles;
}
$files = getFiles("./");
foreach ($files as $file) print " <b><a href=\"$file[name]\">$file[name]</a></b><br>\n";
?>
Je me servirai de cette exemple pour faire ce que je veux, merci
<?
echo ("<h1>Directory Overzicht:</h1>");
function getFiles($path) {
//Function takes a path, and returns a numerically indexed array of associative arrays containing file information,
//sorted by the file name (case insensitive). If two files are identical when compared without case, they will sort
//relative to each other in the order presented by readdir()
$files = array();
$fileNames = array();
$i = 0;
if (is_dir($path)) {
if ($dh = opendir($path)) {
while (($file = readdir($dh)) !== false) {
if ($file == "." || $file == "..") continue;
$fullpath = $path . "/" . $file;
$fkey = strtolower($file);
while (array_key_exists($fkey,$fileNames)) $fkey .= " ";
$a = stat($fullpath);
$files[$fkey]['size'] = $a['size'];
if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-";
else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K";
else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
else $files[$fkey]['sizetext'] = $a['size'] . " bytes";
$files[$fkey]['name'] = $file;
$files[$fkey]['type'] = filetype($fullpath);
$fileNames[$i++] = $fkey;
}
closedir($dh);
} else die ("Cannot open directory: $path");
} else die ("Path is not a directory: $path");
sort($fileNames,SORT_STRING);
$sortedFiles = array();
$i = 0;
foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f];
return $sortedFiles;
}
$files = getFiles("./");
foreach ($files as $file) print " <b><a href=\"$file[name]\">$file[name]</a></b><br>\n";
?>
Je me servirai de cette exemple pour faire ce que je veux, merci
Après recherche j'ai modifié la 1ere version en remplacant :
while ($f = readdir($dir)) {
if(is_file($rep.$f)) {
echo '<tr>'
.'<td><a href="' .$f . '">' .$f . '</a></td>'
.'<td> '.filesize($rep.$f).' octets </td>'
.'<td> '.dd(filectime($rep.$f)).'</td>'
.'</tr>';
}
foreach (glob("*.dem") as $f) {
echo '<tr>' .'<td><a href="' .$f . '">' .$f . '</a></td>'
.'<td> '.filesize($rep.$f).' octets </td>'
.'<td> '.dd(filectime($rep.$f)).'</td>'
.'</tr>';
}
Mais j'ai encore quelque chose qui me manque, la il me tri automatiquement dans l'ordre croissant mais j'aimerai dans l'ordre décroissant.
Merci
while ($f = readdir($dir)) {
if(is_file($rep.$f)) {
echo '<tr>'
.'<td><a href="' .$f . '">' .$f . '</a></td>'
.'<td> '.filesize($rep.$f).' octets </td>'
.'<td> '.dd(filectime($rep.$f)).'</td>'
.'</tr>';
}
foreach (glob("*.dem") as $f) {
echo '<tr>' .'<td><a href="' .$f . '">' .$f . '</a></td>'
.'<td> '.filesize($rep.$f).' octets </td>'
.'<td> '.dd(filectime($rep.$f)).'</td>'
.'</tr>';
}
Mais j'ai encore quelque chose qui me manque, la il me tri automatiquement dans l'ordre croissant mais j'aimerai dans l'ordre décroissant.
Merci
tu as array_reverse qui inverse l'ordre des éléments d'un tableau
https://www.php.net/function.array-reverse
https://www.php.net/function.array-reverse