Kolla mapp efter bilder och lista dem

PHP

29 svar · 1 950 visningar · startad av silfver · sida 2 av 2

Trådstarten, av silfver

Okej, här kommer en nybörjarfråga som jag hoppas ni kan svara på snällt. :) Jag har en mapp på servern som heter uploads. I den här mappen skapas en mapp för år och månad när jag laddar upp en bild. (Kan tänka mig ändra på det här ifall det blir problem med mappnivåer.) När jag laddar upp en bild så skapas där två filer - originalfilen samt en thumbnail som innehåller 150x150 i namnet, t.ex. i-

Läs hela trådstarten →
Medlem sedan apr. 200312 679 inlägg
#21

Förstår tyvärr ingenting av det där. Funderar på om det verkligen spelar någon roll... hm.

Medlem sedan jan. 2005953 inlägg
#22

Ett litet exempel då:

<?php
function sortByDate($a, $b) {
    $a = filectime($a);
    $b = filectime($b);
    if ($a < $b) return -1; // Fil $a är äldre än fil $b
    if ($a == $b) return 0; // Fil $a och fil $b är lika gamla
    return 1;  // Fil $b är äldre än fil $a
}

$filer = glob('./uploads/*.jpg'); // Hämta alla jpg-filer i mappen uploads
usort($filer); // Sortera arrayen $filer efter filernas ålder

echo '<pre>' . print_r($filer, 1) . '</pre>'; // Skriv ut innehållet i arrayen $filer
?>
Medlem sedan apr. 200312 679 inlägg
#23

Hm. Ditt exempel skriver ut följande:

<pre>Array
(
)
</pre>

Ska det vara så? :)

Medlem sedan jan. 2005953 inlägg
#24

Hmm... nej. Såg att jag hade missat en sak.

usort($filer);

ska ju vara

usort($filer, 'sortByDate');
Medlem sedan apr. 200312 679 inlägg
#25

metalboy skrev:

Hmm... nej. Såg att jag hade missat en sak.

usort($filer);

ska ju vara

usort($filer, 'sortByDate');

Blev faktiskt ingen skillnad med följande kod:

<?php
function sortByDate($a, $b) {
    $a = filectime($a);
    $b = filectime($b);
    if ($a < $b) return -1; // Fil $a är äldre än fil $b
    if ($a == $b) return 0; // Fil $a och fil $b är lika gamla
    return 1;  // Fil $b är äldre än fil $a
}
$filer = glob('/wordpress/wp-content/uploads/*.jpg'); // Hämta alla jpg-filer i mappen uploads
usort($filer, 'sortByDate'); // Sortera arrayen $filer efter filernas ålder
echo '<pre>' . print_r($filer, 1) . '</pre>'; // Skriv ut innehållet i arrayen $filer
?>
Medlem sedan jan. 2005953 inlägg
#26

Ok. Gissar att sökvägen är fel. Finns det en mapp i diskroten som heter wordpress, eller ligger den i webbroten? PHPs filfunktioner utgår alltid ifrån diskroten om du anger / i början.

Medlem sedan apr. 200312 679 inlägg
#27

metalboy skrev:

Ok. Gissar att sökvägen är fel. Finns det en mapp i diskroten som heter wordpress, eller ligger den i webbroten? PHPs filfunktioner utgår alltid ifrån diskroten om du anger / i början.

Webbroten. Kan man ändra till ($_SERVER["DOCUMENT_ROOT"]."/wordpress/wp-content/uploads/"); på nåt sätt?

Medlem sedan jan. 2005953 inlägg
#28

Ja. Fungerade inte det eller?

$filer = glob($_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp_content/uploads/*.jpg');
Medlem sedan apr. 200312 679 inlägg
#29

metalboy skrev:

Ja. Fungerade inte det eller?

$filer = glob($_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp_content/uploads/*.jpg');

Jo, när man skriver det som du gjorde. ;)

Okej, nu fick jag ut en lista:

Array
(
    [0] => /Applications/MAMP/htdocs/wordpress/wp-content/uploads/i-love-hong-kong.jpg
    [1] => /Applications/MAMP/htdocs/wordpress/wp-content/uploads/i-love-hong-kong-100x75.jpg
    [2] => /Applications/MAMP/htdocs/wordpress/wp-content/uploads/hong-kong-by-night-100x75.jpg
    [3] => /Applications/MAMP/htdocs/wordpress/wp-content/uploads/hong-kong-by-night.jpg
    [4] => /Applications/MAMP/htdocs/wordpress/wp-content/uploads/backyard-baby-100x75.jpg
[...]
)

Nu listas ju bara filnamnen, dessutom alla. Vill ju bara lista miniatyrer, men det känns som en massa onödigt jobb att göra om det här. Känns dumt också att låta någon annan göra allt jobb (du metalboy). :)

Medlem sedan jan. 2005953 inlägg
#30

Mitt exempel var mest för att visa hur du ska sortera efter datum. Du kan ju fortfarande hämta filnamnen som du har gjort förut, så får du ju ut de du vill ha. Men istället för att skriva ut filnamnet direkt, så lägger du in det i en array som du sedan sorterar.

374 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
117 ms — hämta statistik (db)
129 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)