Mappen sorteren op datum laatst gewijzigd
Quote:
$dirinhoud = showdirs('../../images/');
$count_album = 0;
foreach($dirinhoud as $dir)
{
$no_show = array('_', '../../images/');
$dirshow = str_replace($no_show, ' ', $dir);
$getLastModDir = date ("d-m-y", filemtime($dir));
echo '
<div>' . $dirshow . '</div>
<div>' . $getLastModDir .'</div>
';
$count_album ++;
}
$count_album = 0;
foreach($dirinhoud as $dir)
{
$no_show = array('_', '../../images/');
$dirshow = str_replace($no_show, ' ', $dir);
$getLastModDir = date ("d-m-y", filemtime($dir));
echo '
<div>' . $dirshow . '</div>
<div>' . $getLastModDir .'</div>
';
$count_album ++;
}
Gewijzigd op 26/02/2011 20:09:01 door Marlon Veldman
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
$dir = 'images/';
$dirinhoud = getSubdirs($dir);
$sortedDirs = sortByFiletime($dirinhoud, $dir);
// controleren of alles goed zit
foreach ($sortedDirs as $item) {
echo $item .' - '. date ("Y-m-d H:i:s", filemtime($dir . $item)) .'<br/>';
}
function sortByFiletime($dirs, $dir) {
$result = array();
// indien nodig een "/" toegoegen op het einde
if (substr($dir, -1) != '/') {
$dir .= '/';
}
// we vullen een tijdelijke array met enkel de file times
$fileTimes = array();
foreach($dirs as $key=>$item) {
$fileTimes[] = date ("Y-m-d H:i:s", filemtime($dir . $item));
}
// we sorteren de tijdelijke array. We krijgen niet de waarde (die tijd) terug, maar de key van de array
$keys = getSortedKeys($fileTimes);
foreach($dirs as $key=>$item) {
// $key is: 0, 1, 2, ...
// $keys is: een array van (de gesorteerde index naar tijd van $dirs)
// [ $keys[$key] ] is: de juiste key voor $dir
$result[] = $dirs[ $keys[$key] ];
}
return $result;
}
// geeft niet de items zelf terug, maar de key
function getSortedKeys($items) {
$result = array();
asort($items);
foreach($items as $key=>$item) {
$result[] = $key;
}
return $result;
}
function getSubdirs ($dir) {
$result = array();
// indien nodig een "/" toegoegen op het einde
if (substr($dir, -1) != '/') {
$dir .= '/';
}
$files = scandir($dir);
for ($i=0; $file=$files[$i]; $i++) {
if ($file == '.' || $file == '..' ) { // deze komen altijd voor, maar hebben we niet nodig
continue;
}
if (is_dir($dir . $file)) {
$result[] = $file;
}
}
return $result;
}
?>
$dir = 'images/';
$dirinhoud = getSubdirs($dir);
$sortedDirs = sortByFiletime($dirinhoud, $dir);
// controleren of alles goed zit
foreach ($sortedDirs as $item) {
echo $item .' - '. date ("Y-m-d H:i:s", filemtime($dir . $item)) .'<br/>';
}
function sortByFiletime($dirs, $dir) {
$result = array();
// indien nodig een "/" toegoegen op het einde
if (substr($dir, -1) != '/') {
$dir .= '/';
}
// we vullen een tijdelijke array met enkel de file times
$fileTimes = array();
foreach($dirs as $key=>$item) {
$fileTimes[] = date ("Y-m-d H:i:s", filemtime($dir . $item));
}
// we sorteren de tijdelijke array. We krijgen niet de waarde (die tijd) terug, maar de key van de array
$keys = getSortedKeys($fileTimes);
foreach($dirs as $key=>$item) {
// $key is: 0, 1, 2, ...
// $keys is: een array van (de gesorteerde index naar tijd van $dirs)
// [ $keys[$key] ] is: de juiste key voor $dir
$result[] = $dirs[ $keys[$key] ];
}
return $result;
}
// geeft niet de items zelf terug, maar de key
function getSortedKeys($items) {
$result = array();
asort($items);
foreach($items as $key=>$item) {
$result[] = $key;
}
return $result;
}
function getSubdirs ($dir) {
$result = array();
// indien nodig een "/" toegoegen op het einde
if (substr($dir, -1) != '/') {
$dir .= '/';
}
$files = scandir($dir);
for ($i=0; $file=$files[$i]; $i++) {
if ($file == '.' || $file == '..' ) { // deze komen altijd voor, maar hebben we niet nodig
continue;
}
if (is_dir($dir . $file)) {
$result[] = $file;
}
}
return $result;
}
?>
(ben ik toch wel even mee bezig geweest)
Gewijzigd op 03/03/2011 14:09:36 door Kris Peeters
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
/**
* function to get the directorys from a directory
**/
function getDirs($dirname)
{
if(substr($dirname,-1) != '/')
{
$dirname .= '/';
}
$dirs = array();
if(is_dir($dirname))
{
foreach(scandir($dirname) AS $file)
{
if($file != '.' && $file != '..' && is_dir($dirname . $file))
{
$dirs[] = $dirname . $file;
}
}
}
return $dirs;
}
/**
* compare the directory times
**/
function compareDirTime($dirA, $dirB)
{
$timeA = (int) filemtime($dirA);
$timeB = (int) filemtime($dirB);
return $timeA - $timeB;
}
echo '<pre>';
$dirs = getDirs('./dirtimedemo');
print_r($dirs);
usort($dirs, 'compareDirTime');
print_r($dirs);
echo '</pre>';
?>
/**
* function to get the directorys from a directory
**/
function getDirs($dirname)
{
if(substr($dirname,-1) != '/')
{
$dirname .= '/';
}
$dirs = array();
if(is_dir($dirname))
{
foreach(scandir($dirname) AS $file)
{
if($file != '.' && $file != '..' && is_dir($dirname . $file))
{
$dirs[] = $dirname . $file;
}
}
}
return $dirs;
}
/**
* compare the directory times
**/
function compareDirTime($dirA, $dirB)
{
$timeA = (int) filemtime($dirA);
$timeB = (int) filemtime($dirB);
return $timeA - $timeB;
}
echo '<pre>';
$dirs = getDirs('./dirtimedemo');
print_r($dirs);
usort($dirs, 'compareDirTime');
print_r($dirs);
echo '</pre>';
?>
Demo: http://phphulp.tjvb.nl/dirtimedemo.php
Ik krijg alleen één melding:
Notice: Undefined offset: 11 in /path.php on line 85.
Lijn 85 begint bij mij met:
for ($i=0; $file=$files[$i]; $i++)for ($i=0; $file=$files[$i]; $i++)
Enig idee waar dat aan ligt?
Gewijzigd op 03/03/2011 14:17:11 door Marlon Veldman
maak daar eens van:
foreach($files AS $file)
Ik zet notice's meestal af.
Okay, vervang die for (bij mijn post: lijn 49) dan door
Bedankt voor de goede hulp.