Autor | Zpráva | ||
---|---|---|---|
TrueFriend Profil |
#1 · Zasláno: 27. 2. 2009, 19:29:41
Zdravím. Již několik dní řeším problém jak napsat script, který by dělal to, že vypíše seznam složek ale soubory v té složce nezobrazí. A tyto složky seřadí podle data jejich vytvoření.
Podařilo se mi najít na internetu script co vypisuje pouze složky, ale nedokážu ho upravit tak, aby tyto složky řadil podle data a ne podle názvu. V první půlce scriptu je také část pro načítání souborů, ale echo na tuto část jsem zrušil, abych dosáhl výpisu pouze adresářů. Lze to nějak překopat? <? $dir = '.'; if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && $file != "style.css" && $file != "index.php" && $file != "indexer.php") { if (is_dir("$dir/$file")) $folder_array[] = strtolower($file); else $file_array[] = strtolower($file); } } closedir($handle); } echo '<p>Folders</p>'; if ($folder_array) { sort ($folder_array); foreach ($folder_array as $file) { echo "<a href='$dir/$file'>$file</a><br>"; } } ?> |
||
Aesir Profil |
#2 · Zasláno: 27. 2. 2009, 19:54:00
TrueFriend:
1. problém je ten, že ukládáte do pole jméno adresáře, takže podle něj i řadíte 2. problém nějspíš bude v tom, že na většině filesystémů (používaných v serverových unix like systémech) se datum vytvoření souborů neukládá, takže si jej možná budete muset ukládat bokem, nebo se spolehnout na datum poslední změny |
||
Alphard Profil |
#3 · Zasláno: 27. 2. 2009, 20:37:21
TrueFriend
jak již psal Aesir, asi se budete muset spokojit s časem změny nedávno jsem se setkal s jednou třídou, která to dělala, šla by napsat lépe, ale můžete se inspirovat <?php class AdrStr { public $path; public $struktura = array(); protected $hn; public $adr = array(); public $file; public $order; public function __construct($path = "./") { $this->path = $path; $this->nacti(); $this->serad(); $this->priprav(); } public function nacti() { $this->hn = opendir($this->path); while(false!==($file = readdir($this->hn))) { if(!in_array($file, array(".", ".."))) $this->struktura[$file] = filemtime($this->path.$file); } closedir($this->hn); } public function serad() { asort($this->struktura); } public function priprav() { foreach($this->struktura as $file => $q) { if(is_dir($this->path.$file)) $this->adr[] = $file; else $this->file[] = $file; } } public function return_adr() { return $this->adr; } public function return_file() { return $this->file; } } $vr = new AdrStr(); echo "<pre>"; print_r($vr->return_adr()); print_r($vr->return_file()); echo "</pre>"; ?> |
||
TrueFriend Profil |
#4 · Zasláno: 28. 2. 2009, 13:42:34 · Upravil/a: TrueFriend
Opravdu to řadí. Díky moc.
Inspirací to pro mne určitě je. Chci se zeptat, jak se dá tento script ještě upravit, aby řadil složky obráceně? Tedy nejnovější aby byly nahoře. A další věc. když spustím tento script v prohlížeči, tak se mi vypíšou složky takhle: Array ( [0] => Slozka1 [1] => Slozka2 [2] => Slozka3 ) Dal by se script upravit tak, aby vypisoval do prohlížeče jen samotné složky takto?: Slozka1 Slozka2 Slozka3 (tedy bez těch závorek a nápisu Array) Případně dal by se script upravit ještě tak, aby ty složky nabízel v prohlížeči jako odkaz? Lámu si nad tím hlavu. V PHP nejsem zatím tak dobrej. Díky |
||
Alphard Profil |
#5 · Zasláno: 28. 2. 2009, 17:32:58
TrueFriend
takhle se budou řadit sestupně je vráceno pole, vypište si ho, jak chcete <?php class AdrStr { public $path; public $order; public $filtr; protected $struktura = array(); protected $adr = array(); protected $file = array(); private $hn; public function __construct($path = "./") { $this->path = $path; $this->nacti(); } public function nacti() { $this->hn = opendir($this->path); while(false!==($file = readdir($this->hn))) { if(!in_array($file, array(".", ".."))) $this->struktura[$file] = filemtime($this->path.$file); } closedir($this->hn); } public function serad(&$s) // $this->order prijima name_asc|name_desc|time_asc|time_desc { if($this->order) switch($this->order) { case "name_asc": ksort($s); break; case "name_desc": krsort($s); break; case "time_asc": asort($s); break; case "time_desc": arsort($s); break; } } public function oddel() { foreach($this->struktura as $file => $q) { if(is_dir($this->path.$file)) $this->adr[] = $file; else $this->file[] = $file; } } public function execute() { $this->serad($this->struktura); $this->oddel(); } public function return_adr() { return $this->adr; } public function return_file() { return $this->file; } } $vr = new AdrStr(); $vr->order = "time_desc"; $vr->execute(); echo "<pre>"; print_r($vr->return_adr()); print_r($vr->return_file()); echo "</pre>"; ?> |
||
TrueFriend Profil |
#6 · Zasláno: 28. 2. 2009, 18:42:50 · Upravil/a: TrueFriend
Chci se ještě zeptat. Dal by se tento script upravit ještě tak, aby dokázal vypsat i ty hodnoty času, kdy byla složka změněna (tedy vytvořena)? Jak na to?
|
||
Časová prodleva: 15 let
|
0