webForumDet fria alternativet

Kolla mapp efter bilder och lista dem

PHPur PHP

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

Frågan, 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 frågan i sin helhet →
silfverMedlem 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.

metalboyMedlem 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
?>
silfverMedlem sedan apr. 200312 679 inlägg
#23

Hm. Ditt exempel skriver ut följande:

<pre>Array
(
)
</pre>

Ska det vara så? :)

metalboyMedlem sedan jan. 2005953 inlägg
#24

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

usort($filer);

ska ju vara

usort($filer, 'sortByDate');
silfverMedlem 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
?>
metalboyMedlem 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.

silfverMedlem 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?

metalboyMedlem sedan jan. 2005953 inlägg
#28

Ja. Fungerade inte det eller?

$filer = glob($_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp_content/uploads/*.jpg');
silfverMedlem 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). :)

metalboyMedlem 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.

135 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)