Autor | Zpráva | ||
---|---|---|---|
Pan X Profil |
#1 · Zasláno: 2. 6. 2011, 15:01:36
Zdravím,
potřeboval bych poradit. Mám tento script na výpis souborů ze složky $root = 'upload/'; $dir = $root.$_GET['f'].'/'; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if(filetype($dir . $file) == "dir"){ if($file != "." and $file != ".."){ echo '<a href="index.php?f='.$file.'">'.$file.'</a><br>'; } }else{ if(isset($_GET['f'])){ echo '<a href="'.$root.$_GET['f'].'/'.$file.'">'.$file.'</a><br>'; }else{ echo '<a href="'.$root.$_GET['f'].$file.'">'.$file.'</a><br>'; } } } closedir($dh); } } ?> Výsledek vypadá následovně: auto1.jpg kung_fu_morce.jpg houba.jpg Nová složka tvar_strom.jpg kancelarska_skrin_stacionarni_kontejner_hloubka_600mm_lux_exsl06041_large.jpg Já bych potřeboval poradit, jak daný script upravit tak, aby vypsal nejprve složky a až poté vypsal ostatní soubory |
||
impakt Profil * |
#2 · Zasláno: 2. 6. 2011, 15:41:57
function ParseDirectory($Path='.') { if($DirObj = dir($Path)){ //echo'Path: '.$DirObj->path; //echo'Handle: '.$DirObj->handle; $Dir['dirscount'] = 0; $Dir['filescount'] = 0; $Dir['totalsize'] = 0; while(FALSE!==($Item=$DirObj->read())) { if($Item != '.' && $Item != '..') { if(@is_dir($DirObj->path.'/'.$Item)) { $Dir['dirs'][$Item] = $Info; $Dir['dirscount']+=1; } if(@is_file($DirObj->path.'/'.$Item)) { $Dir['files'][$Item] = $Info; $Dir['filescount']+=1; $Dir['totalsize']+=$Info['size']; } if(@is_link($DirObj->path.'/'.$Item)) { $Dir['links'][$Item] = $Info; $Dir['linkscount']+=1; } } } $DirObj->rewind(); $DirObj->close(); ksort($Dir['dirs'], SORT_STRING); ksort($Dir['files'], SORT_STRING); ksort($Dir['links'], SORT_STRING); return $Dir; } else { echo'Directory Parser Error. Wrong path.'; return FALSE; } } |
||
impakt Profil * |
#3 · Zasláno: 2. 6. 2011, 15:48:11
V riadku 15 chyba tato časť:
$Info=@pathinfo($DirObj->path.'/'.$Item); |
||
Majkl578 Profil |
#4 · Zasláno: 3. 6. 2011, 01:20:03 · Upravil/a: Majkl578
Jednoduchá funkce, která projde adresář a vrátí složky a soubory v seřazeném pořadí:
function listDirectory($dirname) { $contents = array(); foreach (new DirectoryIterator($dirname) as $item) { if ($item->isDot()) continue; $contents[$item->getType()][] = $item->getFilename(); } natsort($contents['dir']); natsort($contents['file']); return array_merge($contents['dir'], $contents['file']); } Použití je intuitivní: $dir = listDirectory('/tmp'); //vrátí pole - obsah složky /tmp kde nejdříve budou složky, poté soubory Vypsat toto pole iterací už je jednoduché… |
||
Časová prodleva: 13 let
|
0