[PHP]Mapnamen in een array sorteren op tijd en naam

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

ik heb een galleryscript, en die sorteerde de albums op de tijd dat ze t laatst gewijzigd waren. Dit wou ik niet maar op naam, dus ben ik ff bezig geweest. Nu is het zo, bij het sorteren op tijd gaat alles goed. Maar bij het sorteren op naam ontstaat er een album (dus een map eigenlijk) die niet bestaat... de naam van die map is: 1114691066
Hier de code:

config.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php  
// =================================== Instellingen =================================== 
$pathAlbums = "./"; // Directory waar foto albums staan 
$sortAlbums = SORT_ASC; // Sorteren van de albums op datum ( SORT_ASC, SORT_DESC ) 
$sortFotos = SORT_ASC; // Sorteren van de foto's ( SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING ) 
$ext = ".jpg|.jpeg|.gif|.png"; // Extensies die zijn toegestaan 

// ===================================== Kleuren ====================================== 
$cContentheader = "#AEAEAE"; // Header achtergrondkleur 
$cContent = "#F5F5F5"; // Foto achtergrondkleur 
$cBorder = "#000000"; // Border kleur 
?> 


albums.php:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php  
// Include 
include('includes/config.php');  
?>  
<html> 
<head> 
    <title>Foto albums</title> 
    <link href="includes/style.css" rel="stylesheet" type="text/css"> 
</head> 
<body> 
<?php  
// ================================ Error message function ============================ 
function error_message($titel, $message,$cBorder,$cContentheader,$cContent)  
{  
        echo "    <table border='0' cellspacing='1' cellpadding='4' align='center' bgcolor='" . $cBorder . "'> 
                    <tr> 
                        <td align='center' bgcolor='" . $cContentheader . "' class='titel'>" . $titel . "</td> 
                    </tr> 
                    <tr>      
                        <td align='center' bgcolor='" . $cContent . "' colspan='3' class='info'>" . $message . "</td> 
                    </tr> 
                </table>";  
}  
// ==================================== Foto Albums ==================================== 
// Album array decladeren 
$albumArray = array();  
// Alle foto albums zoeken 
if ($dirHandle = opendir($pathAlbums))  
{  
    // Foto directory lezen 
    while ($album = readdir($dirHandle))  
    {  
        // Deze niet meetellen 
        if ($album != "." && $album != "..")  
        {  
            // Volledig path van een fotoalbum maken 
            $pathAlbum = $pathAlbums . "/" . $album;   
            // Controleren of file een directory is 
            if (is_dir($pathAlbum))  
            {  
                // Datum, naam directory opslaan in het array 
                $albumArray[] = array(filemtime($pathAlbum),$album);                  
            }  
        }  
    }  
    closedir($dirHandle);  
}   
// Album array sorteren 
array_multisort($albumArray[1], $sortAlbums); 
// Hier heb ik dus het sorteer gedeelte, als je dat [1] weghaald doet hij alles goed
// maar sorteert hij op tijd, en met [1] sorteert hij op naam maar ontstaat dus dat niet 
// bestaande album 
// Aantal albums 
$aantalAlbums = count($albumArray);  
// Controleren of er foto albums in de map staan 
if ($aantalAlbums > 0)  
{  
    // Fotoalbum header 
    echo "    <table border='0' cellspacing='1' cellpadding='4' bgcolor='" . $cBorder . "'> 
                <tr> 
                    <td bgcolor='" . $cContentheader . "' class='contentheader'>Foto album</td> 
                    <td bgcolor='" . $cContentheader . "' class='contentheader'>Laatst gewijzigd op</td> 
                </tr>";  
    $i = 0;  
    // Alle albums weergeven in een loop 
    while ($i < $aantalAlbums)   
    {  
        // Alle _ in de directory naam vervangen door een spatie 
        $albumName = ereg_replace("_"," ",$albumArray[$i][1]);  
        // Fotoalbum weergeven 
        echo "    <tr> 
                    <td bgcolor='" . $cContent . "'> 
                        <a href='fotos.php?album=" . $albumArray[$i][1] . "' target='_blank' class='content'>" . $albumName . "</a> 
                    </td> 
                    <td align='center' bgcolor='" . $cContent . "' class='content'>" . date ("j-n-Y H:i", $albumArray[$i][0]) . "</td> 
                </tr>";  
        // $i met 1 ophogen 
        $i++;  
    }  
    // Fotoalbum footer 
    echo "    </table>";  
}  
// Geen foto albums aanwezig 
else   
{  
    echo error_message("Error","Geen foto albums aanwezig!",$cBorder,$cContentheader,$cContent);  
}  
?>  
</body> 
</html>

[ Voor 13% gewijzigd door Verwijderd op 28-04-2005 15:13 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Heb je al eens geprobeerd de array $albumArray via print_r() weer te geven na het sorteren? Zo ja, wat staat daar in?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja dat heb ik net gedaan, en daar zie ik dat hij het tijdstip en de mapnaam elke keer bij de 2e map omwisselt :S Als ik van die 1 een 0 maak gebeurt het bij de eerste map.....

[ Voor 22% gewijzigd door Verwijderd op 28-04-2005 16:50 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Overigens: Wat heb je nu precies al allemaal zelf geprobeerd.? Wat lukte daar niet mee?
Zou je daarnaast die lap code wat in willen korten totdat je alleen de relevante code overhoudt? Je topic komt op mij nu over als "help me, hier is alle code", iets wat hier niet de bedoeling is.
Zie ook P&W FAQ - De "quickstart" voor hoe we een topicstart graag zien. Dus als je je startpost nog kan aanpassen dna graag :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het inmiddels opgelost met de hulp van #devschuur leute :)
ik heb
PHP:
1
array_multisort($albumArray[1], $sortAlbums);


vervangen door:
PHP:
1
2
function cmpPath($a, $b) { return strcmp($a[1], $b[1]); }
usort($albumArray, cmpPath);


offtopic:
t resultaat is te zien op http://pics.dutchmaffia.org (18+)

[ Voor 15% gewijzigd door Verwijderd op 28-04-2005 20:05 ]