21. maj 2011 - 14:21
Der er
9 kommentarer og 1 løsning
Script henter ting i forkert rækkefølge
Hej. Hvordan får jeg mit script til at hente de filer jeg uploadede til mappen først, som de første, og de nyeste uploads, som hentes sidst? <?php $path = "pictures"; $dh = opendir($path); $i=1; while (($file = readdir($dh)) !== false) { if($file != "." && $file != ".." && $file != "index.php") { echo "<div class='panel'><img src='$path/$file' alt='' /></div> "; $i++; } } closedir($dh); ?> Vh. Mikael
Annonceindlæg fra Comm2ig
Gem filerne i et array, lav så en usort-funktion der bruger filemtime ;)
Kan du vise mig hvordan man gør det? Jeg er mere til HTML og CSS end jeg er til PHP..
Har læst på det.. Men ang array- hvordan opsættes det?
$path = "pictures"; $dh = opendir( $path ); $i=1; $files = array(); while ( ( $file = readdir( $dh ) ) !== false ) { if( $file != "." && $file != ".." && $file != "index.php" ) { $files[] = "$path/$file"; $i++; } } closedir( $dh ); Så har du alle filer i $files - brug usort med filemtime til at sortere arrayet :)
jeg er altså virkelig på bar bund her.. hvis du ikke har tid til at vise mig hvordan det laves, og forklare - så fint nok. men ville virkelig sætte pris på det. vh.
Fik klaret den.. Har vendt den om med "!=" Så den viser den ældste først.. Det virker bedre. Hvis man ønsker nyeste først, ændre man blot "!=" til "==" på linje 19. Tak coderdk - smid svar. <?PHP $directory="pictures/"; $sortOrder="newestFirst"; $results = array(); $handler = opendir($directory); while ($file = readdir($handler)) { if ($file != '.' && $file != '..' && $file != "robots.txt" && $file != ".htaccess"){ $currentModified = filectime($directory."/".$file); $file_names[] = $file; $file_dates[] = $currentModified; } } closedir($handler); if ($sortOrder != "newestFirst"){ arsort($file_dates); }else{ asort($file_dates); } $file_names_Array = array_keys($file_dates); foreach ($file_names_Array as $idx => $name) $name=$file_names[$name]; $file_dates = array_merge($file_dates); $i = 0; foreach ($file_dates as $$file_dates){ $date = $file_dates; $j = $file_names_Array[$i]; $file = $file_names[$j]; $i++; echo "<div class='panel'><img src='pictures/$file' alt='' /></div>"; } ?>
Jeg ville bare havet: function sortByFilemtime($a, $b) { if ( filemtime( $a ) == filemtime( $b ) ) { return 0; } return filemtime( $a ) > filemtime( $b ) ? 1 : -1; } $path = "pictures"; $dh = opendir( $path ); $i=1; $files = array(); while ( ( $file = readdir( $dh ) ) !== false ) { if( $file != "." && $file != ".." && $file != "index.php" ) { $files[] = "$path/$file"; $i++; } } closedir( $dh ); usort( $files, "sortByFilemtime" );
Ahh ja.. den var lidt mere overskuelig. Den bruger jeg istedet. Men begge virker. :) God aften.. Smid svar så jeg kan lukke.
Vi tilbyder markedets bedste kurser inden for webudvikling