---
title: "Kolla mapp efter bilder och lista dem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/171138-kolla-mapp-efter-bilder-och-lista-dem"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "silfver"
published: "2008-04-28T17:16:54.000Z"
updated: "2008-08-21T12:09:13.000Z"
replies: 29
views: 1950
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/171138-kolla-mapp-efter-bilder-och-lista-dem"
---

# Kolla mapp efter bilder och lista dem

_Sida 1 av 2._

## #1 — silfver, 2008-04-28T17:16Z

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-love-hong-kong-150x150.jpg*

Kan man nu på ett enkelt sätt kolla den här katalogen efter jpg-bilder som innehåller 150x150 och sedan lista dem? Helst i datumordning.

Är det genomförbart? :) Jag antar att man måste köra någon slags ftp-anslutning eftersom bilderna inte ligger i en databas.

Permalänk: https://www.webforum.nu/p/171138

## #2 — metalboy, 2008-04-28T18:00Z

Du skulle kunna loopa igenom mapparna rekursivt och spara filnamnen i en array. Använd t.ex. scandir() eller glob() för att hämta ut innehållet i en mapp.

Permalänk: https://www.webforum.nu/p/2103767

## #3 — silfver, 2008-04-28T21:50Z

> **metalboy skrev:**
>
> Du skulle kunna loopa igenom mapparna rekursivt och spara filnamnen i en array. Använd t.ex. scandir() eller glob() för att hämta ut innehållet i en mapp.

Haha, du måste ha missat min inledning. Finns det färdig kod för sånt?

Permalänk: https://www.webforum.nu/p/2103797

## #4 — metalboy, 2008-04-28T22:16Z

Det finns säkert färdig kod för det, men inte inbyggt i PHP :)

Ligger det endast bilder i mapparna eller kan det ligga andra filer där också?

Edit: Det finns bra exempelkod i manualen också :)
<http://www.php.net/scandir>
<http://www.php.net/glob>

Permalänk: https://www.webforum.nu/p/2103798

## #5 — silfver, 2008-04-29T08:05Z

> **metalboy skrev:**
>
> Det finns säkert färdig kod för det, men inte inbyggt i PHP :)
> 
> Ligger det endast bilder i mapparna eller kan det ligga andra filer där också?
> 
> Edit: Det finns bra exempelkod i manualen också :)
> <http://www.php.net/scandir>
> <http://www.php.net/glob>

Förmodligen bara jpg-bilder. :)

Ska kolla dina länkar!

Permalänk: https://www.webforum.nu/p/2103832

## #6 — silfver, 2008-05-01T17:03Z

Det är ingen som kan, eller vet, var man kan hitta en färdig sån här kod? Jag själv kan ingenting om sånt här. :l

Permalänk: https://www.webforum.nu/p/2104473

## #7 — tydal, 2008-05-01T17:34Z

En rekursiv funktion är lämpligt här. En rekursiv funktion är en som anropar sig själv. Vi skapar alltså en funktion som går igenom allt innehåll i en mapp. Hittar den en fil som har 150x150 i namnet så skriver den ut den. Hittar den en mapp så skickar den mappen till sig själv...

Så här:

```php
<?php
function kollaMappen($mapp)
{
  $mappinnehall = scandir($mapp);
  foreach ($mappinnehall as $fil)
  {
    if (is_dir($fil))
      kollaMappen($fil);
    elseif (strpos($fil, "150x150"))
    {
      /* Här har du en träff som du då kan göra vad du vill med. */
      echo($fil . "<br />");
    }
  }
}
?>
```

För att starta så anropar du den med mappen du vill starta i... exempelvis:

```php
<?php kollaMappen("/var/uploads/"); ?>
```

Permalänk: https://www.webforum.nu/p/2104484

## #8 — silfver, 2008-05-01T17:37Z

> **tydal skrev:**
>
> En rekursiv funktion är lämpligt här. En rekursiv funktion är en som anropar sig själv. Vi skapar alltså en funktion som går igenom allt innehåll i en mapp. Hittar den en fil som har 150x150 i namnet så skriver den ut den. Hittar den en mapp så skickar den mappen till sig själv...
> 
> Så här:
> 
>
>
> ```php
> <?php
> function kollaMappen($mapp)
> {
>   $mappinnehall = scandir($mapp);
>   foreach ($mappinnehall as $fil)
>   {
>     if (is_dir($fil))
>       kollaMappen($fil);
>     elseif (strpos($fil, "150x150"))
>     {
>       /* Här har du en träff som du då kan göra vad du vill med. */
>       echo($fil . "<br />");
>     }
>   }
> }
> ?>
> ```

Nice! Om mappen då heter uploads, kan jag skriva så här? 

```php
$mapp = uploads/;
```

 Räcker din kod verkligen? Jag trodde man var tvungen att göra nån ftp-anslutning eller nåt i den stilen, fast det kanske inte behövs när koden exekveras på servern? :)

**r\\** Ah, såg din redigering. :)

Permalänk: https://www.webforum.nu/p/2104486

## #9 — silfver, 2008-05-01T17:44Z

tydal: Jag skriver ut min sökväg så här: 

```php
kollaMappen("/wordpress/wp-content/uploads/2008/04");
```

 Men det vill sig inte. Antar att jag har fel sökväg, men jag vet inte hur jag ska skriva ut den exakt.

Kan man göra nåt i stil med 

```php
($_SERVER["DOCUMENT_ROOT"]."/wordpress/wp-content/uploads/2008/04");
```

 Hoppas du förstår vad jag menar. :)

```php
kollaMappen($_SERVER["DOCUMENT_ROOT"]."/wordpress/wp-content/uploads/2008/04");
```

Fungerar alltså inte.

Permalänk: https://www.webforum.nu/p/2104489

## #10 — silfver, 2008-05-02T10:07Z

Nån som vet hur jag kan få till min sökväg? För just nu hänger sig scriptet. :l

Permalänk: https://www.webforum.nu/p/2104602

## #11 — metalboy, 2008-05-02T10:23Z

Det blir en evighetsloop eftersom mapparna . och .. ligger med i arrayen och scriptet inte tar hänsyn till det.

Före raden med is_dir() kan du lägga till
if ($fil == '.' \|\| $fil == '..') continue;

Btw, bland användarkommentarerna på manualsidan för scandir() så finns det en funktion som kan tänkas vara användbar för dig.
<http://se2.php.net/manual/en/function.scandir.php#82470>
Där anger du vilka filändelser som du är intresserad av.

Permalänk: https://www.webforum.nu/p/2104604

## #12 — silfver, 2008-05-02T10:27Z

> **metalboy skrev:**
>
> Det blir en evighetsloop eftersom mapparna . och .. ligger med i arrayen och scriptet inte tar hänsyn till det.
> 
> Före raden med is_dir() kan du lägga till
> if ($fil == '.' \|\| $fil == '..') continue;
> 
> 
> Btw, bland användarkommentarerna på manualsidan för scandir() så finns det en funktion som kan tänkas vara användbar för dig.
> <http://se2.php.net/manual/en/function.scandir.php#82470>
> Där anger du vilka filändelser som du är intresserad av.

Ja, det fungerade! Men nu skriver den ju bara ut filnamnen, så jag försökte med nåt sånt här: 

```php
      echo(<img=\"$fil\" alt=\"\"/> . "<br />");
```

 Men det fungerade ju inget vidare. :)

Permalänk: https://www.webforum.nu/p/2104607

## #13 — metalboy, 2008-05-02T10:30Z

```
echo '<img src="' . $fil . '" alt="" /><br />';
```

Permalänk: https://www.webforum.nu/p/2104610

## #14 — silfver, 2008-05-02T10:36Z

Tack! Nu fungerar det kanonbra! :) Tydal och metalboy! :bire

Permalänk: https://www.webforum.nu/p/2104612

## #15 — silfver, 2008-05-04T15:23Z

En liten fundering. :)

Skulle det vara krångligt ifall jag ville kunna skriva ut en länk till originalfilen? Nu skriver ju scriptet ut tumnageln. En bild, ingenting mer. Men skulle man även kunna koppla tumnageln till originalbilden, som heter samma sak fast utan 150x150?

Förstår ifall det här är olönt att göra, men jag blev nyfiken! :bire

Permalänk: https://www.webforum.nu/p/2107922

## #16 — stevenet, 2008-05-05T14:25Z

<https://www.php.net/str_replace>

```php
$orginalfil = str_replace("150x150", "", $fil);
echo '<a href="' . $orginalfil . '"><img src="' . $fil . '" alt="" /></a><br />';
```

Permalänk: https://www.webforum.nu/p/2108120

## #17 — silfver, 2008-05-05T14:30Z

> **stevenet skrev:**
>
> <https://www.php.net/str_replace>
> 
> 
>
>
> ```php
> $orginalfil = str_replace("150x150", "", $fil);
> echo '<a href="' . $orginalfil . '"><img src="' . $fil . '" alt="" /></a><br />';
> ```

Wow. Enkelt och snyggt. Jag är riktigt tacksam för ditt svar! :bire

Permalänk: https://www.webforum.nu/p/2108122

## #18 — silfver, 2008-08-10T13:43Z

Är det möjligt att få scriptet att sortera bilderna efter datumet som de är uppladdade på servern? :) Så man får någon ordning på bilderna, för nu läggs de hullerombuller.

Permalänk: https://www.webforum.nu/p/2132537

## #19 — silfver, 2008-08-21T10:23Z

Inte? :)

Permalänk: https://www.webforum.nu/p/2134532

## #20 — metalboy, 2008-08-21T10:38Z

Jodå. Titta på [usort()](http://www.php.net/usort) och [filectime()](http://www.php.net/filectime)

Permalänk: https://www.webforum.nu/p/2134537

---

Tråden på webben: https://www.webforum.nu/amne/php/171138-kolla-mapp-efter-bilder-och-lista-dem  
Nästa sida: https://www.webforum.nu/amne/php/171138-kolla-mapp-efter-bilder-och-lista-dem/page2.md
