Autor Zpráva
Ricky4852
Profil
Zdravím, našiel som si príklad na zobrazenie stromoveho zoznamu všetkých súborov pomocou jQuery na stránke http://ludo.cubicphuse.nl/jquery-treetable/, ibaže ten tam už má rovno vpísané tabuľky s imaginárnymi súbormi a zložkami, preto som chcel vyrobiť PHP kód, ktorý mi vie zistiť všetky súbory, zložky a podzložky so súbormi, a zároveň by mi vykresloval tabuľku. Skript mi funguje, ale mám problém ho zakomponovať, pretože ho musím mať v takom tvare, aby mi vykreslilo riadky v tabuľke nasledovne (s ohľadom na tie čísla v atribútoch data-tt-id):
<tr data-tt-id='1'><td><span class='file'>Acknowledgements.rtf</span></td><td>File</td><td>480.95 KB</td></tr>
<tr data-tt-id='2'><td><span class='folder'>CHUD</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='2-1' data-tt-parent-id='2'><td><span class='folder'>amber</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='2-1-1' data-tt-parent-id='2-1'><td><span class='file'>AmberTraceFormats.pdf</span></td><td>File</td><td>124.46 KB</td></tr>
<tr data-tt-id='2-2' data-tt-parent-id='2'><td><span class='folder'>BigTop</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='2-2-1' data-tt-parent-id='2-2'><td><span class='file'>BigTopUserGuide.pdf</span></td><td>File</td><td>1314.71 KB</td></tr>
<tr data-tt-id='2-3' data-tt-parent-id='2'><td><span class='folder'>Saturn</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='2-3-1' data-tt-parent-id='2-3'><td><span class='file'>SaturnUserGuide.pdf</span></td><td>File</td><td>694.29 KB</td></tr>
<tr data-tt-id='2-4' data-tt-parent-id='2'><td><span class='folder'>Shark</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='2-4-1' data-tt-parent-id='2-4'><td><span class='file'>SharkUserGuide.pdf</span></td><td>File</td><td>12902.51 KB</td></tr>
<tr data-tt-id='2-5' data-tt-parent-id='2'><td><span class='folder'>simg4</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='2-6' data-tt-parent-id='2'><td><span class='folder'>simg4_plus</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='2-7' data-tt-parent-id='2'><td><span class='folder'>simg5</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='3'><td><span class='folder'>DocSets</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='3-1' data-tt-parent-id='3'><td><span class='folder'>com.apple.Reference_Library.docset</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='3-1-1' data-tt-parent-id='3-1'><td><span class='folder'>Contents</span></td><td>Folder</td><td>--</td></tr>
<tr data-tt-id='3-1-1-1' data-tt-parent-id='3-1-1'><td><span class='file'>Info.plist</span></td><td>File</td><td>1.23 KB</td></tr>
<tr data-tt-id='3-1-1-2' data-tt-parent-id='3-1-1'><td><span class='folder'>Resources</span></td><td>Folder</td><td>--</td></tr>

Skript ktorý mi zisťuje všetky (pod)súbory a (pod)adresáre:
function directoryToArray($directory, $recursive = true, $listDirs = false, $listFiles = true, $exclude = '') {
            $arrayItems = array();
            $skipByExclude = false;
            $handle = opendir($directory);
            if ($handle) {
               while (false !== ($file = readdir($handle))) {
               preg_match("/(^(([\.]){1,2})$|(\.(svn|git|md))|(Thumbs\.db|\.DS_STORE))$/iu", $file, $skip);
               if($exclude){
                  preg_match($exclude, $file, $skipByExclude);
               }
               if (!$skip && !$skipByExclude) {
                  if (is_dir($directory. DIRECTORY_SEPARATOR . $file)) {
                     if($recursive) {
                        $arrayItems = array_merge($arrayItems, (array)($directory . DIRECTORY_SEPARATOR . $file));
                        $arrayItems = array_merge($arrayItems, directoryToArray($directory. DIRECTORY_SEPARATOR . $file, $recursive, $listDirs, $listFiles, $exclude));
                     }
                     if($listDirs){
                        $file = $directory . DIRECTORY_SEPARATOR . $file;
                        $arrayItems[] = $file;
                     }
                  } else {
                     if($listFiles){
                        $file = $directory . DIRECTORY_SEPARATOR . $file;
                        $arrayItems[] = $file;
                     }
                  }
               }
            }
            closedir($handle);
            }
            return $arrayItems;
         }

Avšak už som to skúšal roznymi spôsobmi, neviem tak tie čísla dosadiť do poradia aby sa mi list so súbormi zobrazoval správne... Ak by mi vedel niekto pomôcť, bol by som mu vďačný...
peta
Profil
function ff ($path, &$list, $deep = array(1))
{
$handle = opendir($path);
while (false !== ($name = readdir($handle))) 
  {
  //... ocesani na vybrana jmena / pripony a zbaveni se "." a ".."
  $path2 = $path. '/' . $name;
  $bool = is_dir($path2);
  $list[] = array($name,$bool,implode('-',$deep)); // melo by to udelat pole nazev, true/false, 1-2-2-1 (treba, netestovano!)
  if ($bool) {ff($path2, $deep[]=1, $list));}
  }
closedir($handle);
}

$list = array();
ff('.', $list);
Pro parent, children si to uz upravis, pokud to funguje...
Ricky4852
Profil
Vďaka, ale práve ten deep neviem vytvoriť, resp. to poradie tých súborov a zložiek, tento skript som skúšal aplikovať, ale aj napriek mojej snahe vyhnúť sa tým množstvom chýb mi veľmi nepomohol

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0