Ja, har været inde og søge, og kan godt se at problemet har været oppe et par gange, men har desværre ikke kunnet få svar på mit problem.
Har følgende kode til at vise alle filer i en valgt mappe (plus submapper):
<?php
// Hvis der ikke er valgt nogen mappe, sættes $folder til standardmappen (rodmappen) - ellers fjernes %20 fra den valgte mappe i URL'en (hvis mappen selvfølgelig indeholder mellemrum).
if(empty($_GET[folder])) { $folder = "Billeder"; } else { $folder = str_replace("%20", " ", $_GET[folder]); }
// Looper igennem alle filerne i den valgte mappe indtil funktionen melder FALSE, og funktionen hopper ud af løkken.
while (($file = glob("$folder/*", GLOB_NOSORT)) !== false) {
// Hvis $i ikke er sat, sættes den til 0 (så det passer med $file[0]), ellers lægges der en til $i.
if($i <= -1) { $i = 0; } else { $i = $i + 1; }
// Laver forskellig baggrund på hveranden række i tabellen.
if (++$var %2) {$bag = row1;} else {$bag = row2;}
// Da glob() også tager mappenavnet med, fjernes dette.
$filename = str_replace("$folder/", "", $file[$i]);
// Hvis det er en mappe, laves link (?folder=mappenavn), ellers indsættes der et link direkte til billedet.
if(is_dir($file[$i])) {
echo "<tr><td> </td><td class='".$bag."'><img src='icon-folder.png' width='14px' alt='Folder' /></td><td class='".$bag."'><a href='?folder=".$file[$i]."'>".$filename."</a></td><td> </td></tr>";
} else {
echo "<tr><td> </td><td class='".$bag."'><img src='icon-picture.png' width='14px' alt='Picture' /></td><td class='".$bag."'><a href='".$file[$i]."'>".$filename."</a></td><td> </td></tr>";
}
}
?>
Det ser ud til der er flere problemer med denne kode. For det første, så kører koden VIRKELIGT langsomt. Dette har højest sandsynligt noget at gøre med mit problem nummer to. For koden hopper ikke ud af løkken (melder muligvis ikke FALSE), når der ikke er flere filer i mappen. Istedet bliver den ved med at loope igennem, indtil siden er meget meget lang. Resten af siden (efter den har vist de filer den skulle) bliver bare fyldt op med en masse tomme rækker. Dvs. koden bliver simpelthen ved med at loope indtil den bliver stoppet af max_execution_time eller hvad det nu hedder.
Har også haft funktionen lavet med noget allá:
<?php
$file = glob("$folder/*", GLOB_NOSORT);
for($i = 0; $i < 13; $i++) {
// En masse kode.
}
?>
...men i ovenstående eksempel kræver det at jeg manuelt angiver hvor mange filer der er i mappen, og det problem ville jeg helst gerne være fri for.
Så, alt i alt - en der ved hvordan man tæller hvor mange filer der er i mappen (så jeg kan bruge for-funktionen), eller en der kan hjælpe med den øverste kode, og rette DEN lidt til.
Håber der er en eller anden der kan hjælpe lidt, nu har jeg siddet og bøvlet med det hele aftenen.
Mvh
Daniel Grau
Indlæg senest redigeret d. 31.10.2006 20:34 af Bruger #5601