Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка по дате
 
 автор: YAN   (30.12.2010 в 16:45)   письмо автору
 
 

Здравствуйте.
Сделал небольшой скрипт музыки для ЖЖ.http://audio.yan.kiev.ua/

<?php
print "<head></head><TABLE BORDER=\"1\" CELLPADDING=\"0\" CELLSPACING=\"0\" WIDTH=\"800px\"><TH>Песня</TH><TH>Прослушать</TH><TH>Код для ЖЖ</TH>\n";
if (
$handle opendir('../audio/')){
while (
false !==($file readdir($handle))){
if (
$file !='.'&& $file !='..'&& $file !='player.swf'&& $file !='index.php'&& $file !='upload'){
echo 
"<TR><TD><a href='$file'><b>$file</b></a></TD><TD width=\"20\">
</TD></TR>"
;
}
}
closedir($handle);
}
print 
"\n</TABLE>\n";
?>


Очень хотелось бы, чтобы в нём была сортировка по дате. Насколько я знаю, за это отвечает foreach. Но как его правильно встроить?

Второй вопрос, а "листалку" и разбивку на страницы - сделать сложно для такого скрипта?

Заранее огромное спасибо.

  Ответить  
 
 автор: psychomc   (30.12.2010 в 17:37)   письмо автору
 
   для: YAN   (30.12.2010 в 16:45)
 

нет, foreach за это не отвечает, он просто перебирает массив.
я бы для начала создал и заполнил многомерный массив с именами файлов и их последним обновлением (функция filemtime), потом бы отсортировал его по полю со значением fimemtime и вывел бы с помощью foreach. справитесь?

  Ответить  
 
 автор: YAN   (30.12.2010 в 17:45)   письмо автору
 
   для: psychomc   (30.12.2010 в 17:37)
 

К сожалению, нет.
Теоретически понятно. Но фактически....
Если не сложно...

Буду очень благодарен )

  Ответить  
 
 автор: psychomc   (30.12.2010 в 18:49)   письмо автору
 
   для: YAN   (30.12.2010 в 17:45)
 

если никто не напишет, то сделаю вечером. сейчас под рукой нету необходимых инструментов. если буду писать не проверяя могу накосячить...

  Ответить  
 
 автор: sim5   (30.12.2010 в 19:34)   письмо автору
 
   для: YAN   (30.12.2010 в 16:45)
 

В этой папке нет вложенных папок?

  Ответить  
 
 автор: yan   (30.12.2010 в 20:39)   письмо автору
 
   для: sim5   (30.12.2010 в 19:34)
 

Есть. Но они скрыты. (см 4ю строку кода)

  Ответить  
 
 автор: sim5   (31.12.2010 в 05:54)   письмо автору
 
   для: yan   (30.12.2010 в 20:39)
 

Значит получайте массив файлов по маске, затем формируйте массив со всеми полезными данными о файлах дабы в дальнейшем иметь возможность сортировать по выбору:
<?
$mask 
"{mp3,wma}"//маска всевозможных звуковых файлов в данной папке
$m =  glob("audio/*.".$maskGLOB_BRACE); //полученный массив
$m array_map(null,array_map('basename',$m), array_map('filemtime',$m), array_map('filesize',$m)); //массив параметров
echo "<pre>";
print_r($m);

  Ответить  
 
 автор: psychomc   (31.12.2010 в 10:39)   письмо автору
 
   для: sim5   (31.12.2010 в 05:54)
 

м-да уж...втыкаю...весьма печально, что я не знал о функции glob

  Ответить  
 
 автор: YAN   (31.12.2010 в 16:01)   письмо автору
 
   для: sim5   (31.12.2010 в 05:54)
 

Спасибо большое! Отличный вариант!

  Ответить  
 
 автор: psychomc   (30.12.2010 в 21:39)   письмо автору
 
   для: YAN   (30.12.2010 в 16:45)
 

готово

<?php 
if ($handle opendir('../audio/')) { 
    
// подходящие нам файлы
    
$files = array();
    
// то что не будем трогать
    
$ignore = array("."".."'player.swf''index.php''upload');
    
$i 0;
    while (
false !==($file readdir($handle))) {
        if (!
in_array($file$ignore)) {
            
$files[$i]["fmt"]  = filemtime('../audio/'.$file);
            
$files[$i]["file"] = $file;
            
$i ++;
        }
    }
    if (!empty(
$files)) {
        
// сортируем
        
usort($filescreate_function('$a,$b''return $a["fmt"] > $b["fmt"];'));
        
// ваш вывод
        // он довольно кривой, но я его не трогал (почти)
        
print "<head></head><TABLE BORDER=\"1\" CELLPADDING=\"0\" CELLSPACING=\"0\" WIDTH=\"800px\"><TH>Песня</TH><TH>Прослушать</TH><TH>Код для ЖЖ</TH>\n"
        foreach (
$files as $file) {
            echo 
'<TR><TD><a href="'.$file["file"].'"><b>'.$file["file"].'</b></a></TD><TD width=\"20\"> </TD></TR>'
        }
        print 
"\n</TABLE>\n"
    }
    
closedir($handle); 

?>


может быть не идеальное решение, но должно работать так как вам надо. на большее не было времени

  Ответить  
 
 автор: YAN   (30.12.2010 в 23:04)   письмо автору
 
   для: psychomc   (30.12.2010 в 21:39)
 

Опаа! Сейчас проверю! Спасибо большое!!!

  Ответить  
 
 автор: Trianon   (31.12.2010 в 02:23)   письмо автору
 
   для: psychomc   (30.12.2010 в 21:39)
 

Здесь был мой коммент.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования