webForumDet fria alternativet

Lista innehåll i en mapp

PHP

7 svar · 942 visningar · startad av Mycodez

Medlem sedan feb. 2010445 inlägg
Frågan#1

Hej,
Jag är lite aktiv som ni ser nu, Men nu har jag fastnat lite igen, vet inte hur jag ska lösa detta:/

Jag listar alla ett ex antal mappar som finns i mapp. Allt innehåll har ett unik namn men dem har ett versionsnummer: så namnet lyder
[name]-V[versionsnummer].pdf
Men jag vet inte hur jag ska gå till väga för att få till detta. Det jag vill ha det är alltså jag vill ha det sorterat störst först.

min kod nu ser ut

<?php
                        $pfdRootDir = 'pdf';
                        $pdfd = scandir($pfdRootDir);
                        unset($pdfd[0],$pdfd[1]);
                        foreach ($pdfd as $key => $val) {
                            $pdfd2 = $pfdRootDir.'/'.$val;
                            echo '<h3><b>'.$val.' ('.count(scandir($pdfd2)).')</b></h3><br/>';
                            //Open images directory
                            $dir = opendir($pdfd2); 
                            //List files in images directory
                            while (($file = readdir($dir)) !== false)
                            {
                                if($file != '.' && $file != '..'){
                                    echo "File: <a href='".$pdfd2."/".$file."' target='_blank'>" . $file . "</a><br />";
                                } 
                            }
                            closedir($dir);
                            echo '<hr/>';
                        }
                    ?>

Tack på förhand :)

Medlem sedan jan. 2005953 inlägg
#2

Vad menar du med "sorterat störst först". Är det filstorlek? Eller är det högst versionsnummer först?

I vilket fall som helst så får du lagra de olika filnamnen i en array istället för att skriva ut dem direkt i loopen. Sedan sorterar du arrayen med lämplig funktion (beror på hur du vill sortera). Därefter loopar du igenom posterna i arrayen och skriver ut dem.

Medlem sedan feb. 2010445 inlägg
#3

Vet är versions numret jag jag vill listas högst, men sen kom jag på nu, när jag skulle försöka göra detta, är att det kan var fler olika namn med olika versions nummer, hur ska man kanske sortera ena filen med desso lika verionser sne ta nästa fil.
typ såhära

mapp1
fil1-V1.pdf
fil1-V2.pdf

fil2-V1.pdf
fil2-V2.pdf
fil2-V3.pdf

mapp2
filen1-V1.pdf
filen1-V2.pdf

Hoppas jag är tydlig :)

Medlem sedan jan. 2005953 inlägg
#4

Mycodez skrev:

hur ska man kanske sortera ena filen med desso lika verionser sne ta nästa fil.

Det där förstod jag inte mycket alls av, tyvärr.

Men i alla fall, du borde kunna använda natsort() för att sortera värdena.

Exempel:

<?php
$dir = './';
$dh = opendir($dir);
$files = array();
while (false !== ($file = readdir($dh)) {
    if ($file == '.' || $file == '..') continue;

    $files[] = $dir . $file;
}
natsort($files);

foreach($files as $file) {
    echo '<a href="' . $file . '">' . $file . '</a>';
}
Medlem sedan feb. 2010445 inlägg
#5

Det jag menar är att den tar som i mitt exempel fil1-[VERSION].pdf och listar den förre fil2-[VERSION].pdf Lite mer förklaring :)

Medlem sedan jan. 2005953 inlägg
#6

Vid närmare eftertanke får du nog använda usort för att sköta sorteringen. Då skriver du din egen sorteringsalgoritm, och kan alltså sortera precis hur du vill.

Medlem sedan feb. 2010445 inlägg
#7

Okej, Jag har funderat på att skriva min egna, men det verkar vara lite knepigt men ty den som ge sig som man säger. Får kolla lite på detta med en sorteringsalgoritm :)

Medlem sedan feb. 2010445 inlägg
#8

metalboy skrev:

Men i alla fall, du borde kunna använda natsort() för att sortera värdena.

Jag testade att köra natsort och den gjorde precis så som jag ville ha det.
Tack så mycket Metalboy :birp

257 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)