Autor Zpráva
Pan X
Profil
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 *
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 *
V riadku 15 chyba tato časť:
$Info=@pathinfo($DirObj->path.'/'.$Item);
Majkl578
Profil
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é…

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0