[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с сортировкой
Demolution
Доброго времени суток! Есть вот такой код (кусок):
<?
$newdir = 'files';
chdir($newdir);
$dir=opendir('.');
while ($d = readdir($dir))
if (is_file($d)) {
$filesizename = array(" Байт", " KБ", " MБ", " ГБ", " TБ", " ПБ", " EБ", " ЗБ", " ЙБ");
$size = filesize($d);
echo '<tr><td><a href="files/'.$d.'">'.$d.'</a></td><td>'.round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i].'</td><td>'.date ('d.m.Y G:i:s', filemtime($d)).'</td><td align="center"><a href="log.php?del='.$d.'">удалить</a></td><td><form action="log.php" method="post"><input type="hidden" name="name" value="'.$d.'"><input type="text" name="new_name" size="25" maxlength="50" value=""><input type="submit" value="Go"></form></td></tr>';

подскажите как сделать чтобы файлы выводились от самого нового до самого старого. Заранее благодарен.



Спустя 27 минут, 49 секунд (9.10.2010 - 23:05) kovaldm написал(а):
Попробуй в имени файла указать время его создания.

Спустя 4 минуты, 32 секунды (9.10.2010 - 23:10) Demolution написал(а):
Цитата (kovaldm @ 9.10.2010 - 20:05)
Попробуй в имени файла указать время его создания.

Не думаю что оптимальным вариантом будет переименование всех файлов на сервере...

Спустя 6 минут, 38 секунд (9.10.2010 - 23:17) kovaldm написал(а):
Юзай функцию stat().

Спустя 26 минут, 4 секунды (9.10.2010 - 23:43) Demolution написал(а):
Цитата (kovaldm @ 9.10.2010 - 20:17)
Юзай функцию stat().

мм.. а по точней, я что-то не понимаю как с помощью нее организовать сортировку..

Спустя 16 минут, 24 секунды (9.10.2010 - 23:59) kovaldm написал(а):
while($d = readdir($dir))
{
if(is_file($d))
{
$stat = stat($d);
$filelist[$stat[9]] = $d;
}
}


$filelist=ksort($filelist);//массив с отсортированными по дате создания именами файлов

Спустя 10 минут, 19 секунд (10.10.2010 - 00:09) Demolution написал(а):
Цитата (kovaldm @ 9.10.2010 - 20:59)
while($d = readdir($dir))
    {
        if(is_file($d))
        {
            $stat = stat($d);
            $filelist[$stat[9]] = $d;
        }
    }

   
    $filelist=ksort($filelist);//массив с отсортированными по дате создания именами файлов

Спасибо! Но выскакивает:
Warning: Cannot use a scalar value as an array in D:\www\l.php on line 155

Warning: ksort() expects parameter 1 to be array, boolean given in D:\www\l.php on line 156


Что-то никак не получается с моим слепить, сразу куча ошибок лезет...

Спустя 22 минуты, 42 секунды (10.10.2010 - 00:32) kovaldm написал(а):
<?php
$dir = opendir('.');

while($d = readdir($dir))
{
if(is_file($d))
{
$stat = stat($d);
$filelist[$stat[10]] = $d;
}
}


krsort($filelist);//массив с отсортированными по дате создания именами файлов

foreach($filelist as $k=>$v)
{

echo $k.'=>'.$v.'<br>';

}

У меня так работает.

Спустя 3 минуты, 56 секунд (10.10.2010 - 00:36) Demolution написал(а):
Цитата (kovaldm @ 9.10.2010 - 21:32)
<?php
$dir = opendir('.');

while($d = readdir($dir))
{
if(is_file($d))
{
$stat = stat($d);
$filelist[$stat[10]] = $d;
}
}


krsort($filelist);//массив с отсортированными по дате создания именами файлов

foreach($filelist as $k=>$v)
{

echo $k.'=>'.$v.'<br>';

}

У меня так работает.

Так работает.. А в мой кусок деревянного кода это всунуть никак?

Спустя 2 минуты, 1 секунда (10.10.2010 - 00:38) Demolution написал(а):
Просто у меня вывод данных идет внутри а у Вас снаружи..

Спустя 9 минут, 55 секунд (10.10.2010 - 00:48) kovaldm написал(а):
$newdir = 'files';

chdir($newdir);

$dir = opendir('.');

$filesizename = array(" Байт", " KБ", " MБ", " ГБ", " TБ", " ПБ", " EБ", " ЗБ", " ЙБ");

while($d = readdir($dir))
{
if(is_file($d))
{
$size = filesize($d);
$stat = stat($d);
$filelist[$stat[10]] = '<tr><td><a href="files/'.$d.'">'.$d.'</a></td><td>'.
round($size/pow(1024, ($i = floor(log($size, 1024)))), 2)
.
$filesizename[$i].'</td><td>'.date ('d.m.Y G:i:s', filemtime($d)).'</td>
<td align="center"><a href="log.php?del='
.$d.'">удалить</a></td><td>
<form action="log.php" method="post">
<input type="hidden" name="name" value="'
.$d.'">
<input type="text" name="new_name" size="25" maxlength="50" value="">
<input type="submit" value="Go"></form></td></tr>'
;
}
}


krsort($filelist);//массив с отсортированными по дате создания именами файлов

foreach($filelist as $k=>$v)
{

echo $v.'<br>';

}


Не представляю как отсортировать внутри. readdir() ''Возвращает имя следующего по порядку элемента каталога. Имена элементов возвращаются в порядке, зависящем от файловой системы.'' (с) php.su

Спустя 23 минуты, 28 секунд (10.10.2010 - 01:11) Demolution написал(а):
Цитата (kovaldm @ 9.10.2010 - 21:48)
$newdir = 'files';

chdir($newdir);

$dir = opendir('.');

$filesizename = array(" Байт", " KБ", " MБ", " ГБ", " TБ", " ПБ", " EБ", " ЗБ", " ЙБ");

while($d = readdir($dir))
    {
        if(is_file($d))
        {
            $size = filesize($d);
            $stat = stat($d);
            $filelist[$stat[10]] = '<tr><td><a href="files/'.$d.'">'.$d.'</a></td><td>'.
          round($size/pow(1024, ($i = floor(log($size, 1024)))), 2)
          .
$filesizename[$i].'</td><td>'.date ('d.m.Y G:i:s', filemtime($d)).'</td>
          <td align="center"><a href="log.php?del='
.$d.'">удалить</a></td><td>
          <form action="log.php" method="post">
          <input type="hidden" name="name" value="'
.$d.'">
          <input type="text" name="new_name" size="25" maxlength="50" value="">
          <input type="submit" value="Go"></form></td></tr>'
;
        }
    }

   
    krsort($filelist);//массив с отсортированными по дате создания именами файлов
   
    foreach($filelist as $k=>$v)
    {
   
        echo $v.'<br>';
   
    }


Не представляю как отсортировать внутри. readdir() ''Возвращает имя следующего по порядку элемента каталога. Имена элементов возвращаются в порядке, зависящем от файловой системы.'' (с) php.su

Ооо!! То что нужно! Спасибо огромное!! rolleyes.gif

Плюс не могу поставить sad.gif

Спустя 2 минуты, 47 секунд (10.10.2010 - 01:14) kovaldm написал(а):
Только одно НО! Если файл будет весить о байт - получится ошибка.

Спустя 12 минут, 52 секунды (10.10.2010 - 01:27) Demolution написал(а):
Цитата (kovaldm @ 9.10.2010 - 22:14)
Только одно НО! Если файл будет весить о байт - получится ошибка.

Это помоему не из-за сортировки?

Спустя 7 минут, 7 секунд (10.10.2010 - 01:34) kovaldm написал(а):
Нет, не из-за сортировки, а из-за вот этого:

round($size/pow(1024, ($i = floor(log($size, 1024)))), 2)

Спустя 9 минут, 29 секунд (10.10.2010 - 01:44) Demolution написал(а):
Цитата (kovaldm @ 9.10.2010 - 22:34)
Нет, не из-за сортировки, а из-за вот этого:

round($size/pow(1024, ($i = floor(log($size, 1024)))), 2)

Спасибо, думаю пустых файлов не будет

Спустя 36 минут, 47 секунд (10.10.2010 - 02:20) aH6y написал(а):
проверяй на вес, если больше 0 байт, то выполняешь:

round($size/pow(1024, ($i = floor(log($size, 1024)))), 2)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.