logo

INTERNETNE STORITVE

- IZDELAVA SPLETNIH STRANI - OBLIKOVANJE - PROGRAMIRANJE DODATKOV

PHP - izdelava galerije - preprosta skripta za prikazovanje slik

Za zelo preprost projekt sem potreboval skripto, ki bi z določenega direktorija (imenika) pridobila vse slike in jih nato prikazala na strani. Nismo potrebovali ničesar drugega kot le to, zato sem se odločil spisati nekaj kratke in enostavnega, sedaj pa kodo delim z vami.

Koda, ki prebere iz določenega direktorija (in vseh pod-direktorijev le-tega) vse slike in vrne tabelo slik:

PHP:
  1. function populateArrayWithFolderContent($folder){
  2.     $folderReader = @opendir($folder);
  3.  
  4.     if($folderReader){
  5.         $listArray = array();
  6.         while(false !== ($folderEntry = readdir($folderReader))){
  7.             if (($folderEntry != '.' and $folderEntry != '..')){
  8.                 if (getimagesize($folder.'/'.$folderEntry) != false){
  9.                     $listArray[$folder][] = array('picture' => $folderEntry, 'folder' => $folder.'/'.$folderEntry);
  10.                 }else{
  11.                     $tempListArray = populateArrayWithFolderContent($folder.'/'.$folderEntry);
  12.                     if ($tempListArray !== false){
  13.                         $listArray = array_merge($listArray, $tempListArray);
  14.                     }
  15.                 }
  16.             }
  17.         }
  18.         return $listArray;
  19.     }else{
  20.         return false;
  21.     }
  22. }

Kratek opis funkcije:
Kreiramo upravjalnik za direktorij s katerim gremo čez vse njegove datoteke in pod-direktorije. Kreiramo zanko, ki se izteče ko v direktoriju preberemo vse vnose. Pri vsakem vnosu pregledamo ali je slika s pomočjo getimagesize PHP funkcije. V obratnem primeru, če je vnos direktorij rekurzivno pokličemo funkcijo in nato združimo dve tabeli (array, array_merge). Ko pregledamo vse vnose (imenike, slike) funkcija vrne false v primeru, da ni nobenega vnosa oz. tabelo (array) slik, ki smo jih našli.

Primer uporabe:

PHP:
  1. if ($pictures === false) {
  2.     'Trenutno ni dodanih nobenih slik';
  3. } else {
  4.     //foreach($pictures as $picture)
  5. }

Sama koda se zanaša le na pure PHP funkcije, torej lahko kodo kopirate kamorkoli želite na katerikoli strežnik. Preizkusite delovanje.

Dodatne informacije:

Večje in bolj napredne skripte:

Upam, da bo komu kdaj v pomoč.

7x komentirano na “PHP - izdelava galerije - preprosta skripta za prikazovanje slik”

  1. Cobra je napisal:

    Kako bi pa recimo dobil size slike v kB ali v večjih enotah? Vem da z funkcijo filesize () dobiš velikost ampak le v bitih..

  2. Carli je napisal:

    BTW: Ko si enkrat na PHP5 uporabiš scandir in je življenje lažje ... :D

  3. gasper_k je napisal:

    hvala za omembo. Moj nick je sicer fatg, ampak nič hudega :)

  4. Roky je napisal:

    gasper_k oz. fatg: Sorry, pozna ura.

    carli: ja, sam pol je PHP5 limited.

    Cobra:

    PHP:
    1. <?php
    2. function format_size($size, $round = 0) {
    3.     //Size must be bytes!
    4.     $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    5.     for ($i=0; $size> 1024 && $i <count($sizes) - 1; $i++) $size /= 1024;
    6.     return round($size,$round).$sizes[$i];
    7. }
    8. ?>

    Vir: http://docs.php.net/filesize

  5. Cobra je napisal:

    Hvala ;)

  6. Carli je napisal:

    @Roky: Imaš prav, ampak je že zadnji čas, da se preide na PHP5.

  7. Roky je napisal:

    Jap, goPHP5.org :)
    Cobra: Np, z veseljem.

Dodaj komentar