well, alt kan jo lade sig gøre med PHP :O)
Men er ikke helt med på hvordan dirstruktur er opbygget.
Men for at få vist undermapper til et dir, kan scriptet jo godt bruges.
Hvis du vil lave "krydsende mapper" er det nok noget sql du skal bruge. Hvilket også vil være langt hurtigere end at bruge dir() funktionen.
box_click er javascript.
Et eks. på en kombi:
<html>
<head>
<title>Javascript test</title>
<script type="text/javascript">
// javascript found at exp.dk
function get_id ($id) {
if (document.all && document.getElementById) {
return document.all($id);
} else if (!document.all && document.getElementById) {
return document.getElementById($id);
} else {
return false;
}
}
function box_click ($id) {
if (($bcontent = get_id($id))) {
$bcontent = $bcontent.style;
} else {
return false;
}
if ($bcontent.visibility == 'hidden') {
$bcontent.display = '';
$bcontent.visibility = 'visible';
} else {
$bcontent.display = 'none';
$bcontent.visibility = 'hidden';
}
}
</script>
</head>
<body>
<?php
// detox hjalp mig med dette script! :O)
//
http://www.eksperten.dk/spm/599757// Nedenstående fem variabler er de eneste som skal rettes
$start_path = $_SERVER["DOCUMENT_ROOT"]; // Sti til roden af domain. Skal evt. ændres hvis f.ex. ens side ligger som subdomæne
$read_start = "/handler"; // Fra roden af domain, og frem til dir som skal læses igennem. Kan evt. blot være "/" Bruges ved link til filer
$start_dir = ""; // Navn på dir som skal læses igennem. Kan være tom
$dir_image = "/images/mappe.gif"; // "url-sti" til billede af en mappe. Kan evt. findes på
http://showsource.users.whitehat.dk/images/mappe.gif$indryk = 30; // Hvor meget indrykning pr. subdir der skal være
$mappe = $start_path . $read_start . $start_dir;
$liste = array($mappe);
function visFiler($dir) {
$out = array();
$d = dir($dir);
while (false !== ($file = $d->read())) {
if (is_file($dir ."/". $file)) {
$out[] = $file;
}
}
$d->close();
return $out;
}
function visMapper($dir, &$out) {
$d = dir($dir);
while (false !== ($file = $d->read())) {
if ($file != '.' && $file != '..') {
if (is_dir($dir ."/". $file)) {
$out[] = $dir ."/". $file;
visMapper($dir ."/". $file, $out);
}
}
}
$d->close();
}
if(is_dir($mappe)) {
visMapper($mappe, $liste);
sort($liste);
$ialt = 0;
foreach ($liste as $sti) {
$ialt++;
$visdir = explode($start_path . $read_start, $sti);
$linksti = $read_start . $visdir[1];
$dirantal = explode("/", $visdir[1]);
$t = (count($dirantal)*$indryk);
$dirstien = (!empty($visdir[1]) ? $visdir[1] : "/");
$filer = visFiler($sti);
echo "<div style=\"margin-left: ". $t ."px; padding: 4px;\"><span style=\"cursor: hand;\" onclick=\"box_click('dir_". $ialt ."');\"><img src=\"". $dir_image ."\" align=\"top\" border=\"0\"> <b>". $dirstien .":</b> <small>(". count($filer) ." filer)</small></span>\r\n";
echo "<div style=\"margin-left: ". $indryk ."px; position: relative; visibility: hidden; display:none;\" id=\"dir_". $ialt ."\">\r\n";
if (count($filer) !=0) {
sort($filer);
foreach ($filer as $fil) { //
echo "<a href=\"
http://". $_SERVER["HTTP_HOST"] . $linksti ."/". $fil ."\">". $fil ."</a><br />\r\n";
}
}else{
echo"Ingen filer";
}
echo"</div></div>\r\n";
}
}else{
echo"Fejl i stiangivelse!";
if(is_dir($start_path)) {
echo"<br />\r\n\$start_path er korrekt.";
if(is_dir($start_path . $read_start)) {
echo"<br />\r\n\$read_start er korrekt.";
echo"<br />\r\n<b>\$start_dir</b> findes IKKE!.";
}else{
echo"<br />\r\n<b>\$read_start</b> er forkert defineret.";
}
}else{
echo"<br />\r\n<b>\$start_path</b> er forkert defineret.";
}
}
clearstatcache();
?>
</body>
</html>