25. februar 2005 - 13:45
Der er
21 kommentarer og 1 løsning
funktion der viser alle mapper
Kan man i PHP lave en funktion der kan fra en rodmappe, går ned gennem alle mapper og vise dem. Og hvis ja, hvordan
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
25. februar 2005 - 14:19
#1
<? $mappe = "."; taelMapper($mappe); function taelMapper($dir) { $d = dir($dir); while (false !== ($file = $d->read())) { if ($file != '.' && $file != '..') { if (is_dir("$dir/$file")) { echo "$file<br />"; taelMapper("$dir/$file"); } } } $d->close(); } ?>
25. februar 2005 - 14:20
#2
PS: funktionen burde nok hedde visMapper ;o)
25. februar 2005 - 14:22
#3
function vis_alle_mapper ( $sti, $level ) { if ( is_dir( $sti ) ) { if ( $dp = opendir( $sti ) ) { $filliste = array(); while ( ($file = readdir($dp)) !== false ) { if ( $file != '.' && $file != '..' ) { $filliste[] = $file; } } closedir($dh); // nu ligger alle fil og mappenavne i arrayet $filliste // du kan evt sortere den alfabetisk eller efter extension, ... foreach( $filliste as $file ) { echo str_pad( "", 4*$level , " ") .$file; if( is_dir( $sti ."/" .$file ) { vis_alle_mapper ( $sti ."/" .$file, $level+1 ) } } } } } mvh JakobA
25. februar 2005 - 14:25
#4
der bør no være et linieskift efter hver linie: echo str_pad( "", 4*$level , " ") .$file ,"<br>\n";
25. februar 2005 - 14:37
#5
Den skal bare smide det en i dropdown sådan her: xxx xxx/aaa xxx/aaa/bbb ccc ddd/eee hvis i kan følge mig....
25. februar 2005 - 14:59
#6
Fx: $mappe = "."; echo "<select name='mappe'>" . visMapper($mappe) . "</select>"; function visMapper($dir) { global $out; $d = dir($dir); while (false !== ($file = $d->read())) { if ($file != '.' && $file != '..') { if (is_dir("$dir/$file")) { $out .= "<option value='$dir/$file'>$dir/$file</option>"; visMapper("$dir/$file"); } } } $d->close(); return $out; }
25. februar 2005 - 15:00
#7
Bare ikke brug variablen: $out til andet.
25. februar 2005 - 15:11
#8
var det ikke nemmere Og sikrere) at lave $out lokal i funktionen: function visMapper($dir) { $out = ""; $d = dir($dir); while (false !== ($file = $d->read())) { if ($file != '.' && $file != '..') { if (is_dir("$dir/$file")) { $out .= "<option value='$dir/$file'>$dir/$file</option>" . visMapper("$dir/$file"); } } } $d->close(); return $out; }
25. februar 2005 - 15:22
#9
jakoba -> Jo, den er at foretrække. Er skrevet bag øret :O)
25. februar 2005 - 15:27
#10
hvis jeg så vil have det på skærmen skriver jeg bare printf visMapper("/home/test/") eller hvad
25. februar 2005 - 15:35
#11
uden / tilsidst, bare: printf visMapper("/home/test"); // eller hvad
25. februar 2005 - 15:39
#12
Så skal du nok bruge en af de første funktioner der blev foreslået. De sidste to laver jo dropdown lister.
25. februar 2005 - 16:16
#13
jeg vil bare have dropdown udskrevet.... Hvad skal jeg skrive for at få den ud...
25. februar 2005 - 16:21
#14
Altså selve koden: <? $mappe = "."; echo nl2br(htmlentities("<select name='mappe'>\n" . visMapper($mappe) . "</select>\n")); function visMapper($dir) { $out = ''; $d = dir($dir); while (false !== ($file = $d->read())) { if ($file != '.' && $file != '..') { if (is_dir("$dir/$file")) { $out .= "<option value='$dir/$file'>$dir/$file</option>\n" . visMapper("$dir/$file"); } } } $d->close(); return $out; } ?>
25. februar 2005 - 16:25
#15
den smider det ikke en dropdown men giver mig: <select name='mappe'> <option value='./minigal'>./minigal</option> <option value='./minigal/styles'>./minigal/styles</option> <option value='./minigal/styles/blackborder'>./minigal/styles/blackborder</option>
25. februar 2005 - 16:33
#16
løste den ved at fjerne htmlentities Takker for hjælpen er det ikke fair hvis i deler eller hvad
25. februar 2005 - 16:45
#17
hvordan sortere jeg det alfabetisk.....
25. februar 2005 - 17:10
#18
Så skal det laves noget anderledes: <? $mappe = "."; $select = "<select name='mapper'>\n"; $liste = visMapper($mappe); natsort($liste); foreach ($liste as $sti) { $select .= "<option value='$sti'>$sti</option>\n"; } $select .= "</select>\n"; echo $select; function visMapper($dir, &$out=array()) { $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(); return $out; } ?>
25. februar 2005 - 17:21
#19
får en fejl her: function visMapper($dir, &$out=array()) {Parse error: parse error, unexpected T_IS_EQUAL, expecting ')'
25. februar 2005 - 17:31
#20
Arh, det er først muligt at sætte en reference variabel som default. Så ved jeg ikke lige om man kan undgå en global, så igen undgå at bruge $out i scriptet; <? $mappe = "."; $select = "<select name='mapper'>\n"; $out = array(); $liste = visMapper($mappe); natsort($liste); foreach ($liste as $sti) { $select .= "<option value='$sti'>$sti</option>\n"; } $select .= "</select>\n"; echo $select; function visMapper($dir) { global $out; $d = dir($dir); while (false !== ($file = $d->read())) { if ($file != '.' && $file != '..') { if (is_dir("$dir/$file")) { $out[] = "$dir/$file"; visMapper("$dir/$file"); } } } $d->close(); return $out; } ?>
25. februar 2005 - 17:31
#21
Ups: Arh, det er først muligt at sætte en reference variabel som default i php version > 5.0.
25. februar 2005 - 17:38
#22
Dette er osse en mulighed: <? $mappe = "."; $select = "<select name='mapper'>\n"; $liste = array(); visMapper($mappe, $liste); natsort($liste); foreach ($liste as $sti) { $select .= "<option value='$sti'>$sti</option>\n"; } $select .= "</select>\n"; echo $select; 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(); } ?>
Vi tilbyder markedets bedste kurser inden for webudvikling