Shortcut to the main page: Alt + Shift + upper 2(@)
Linkedin FB e-mail Google Plus Twitter

Search in this website

 
 
Language versions are not identical,
so visit all versions,
which you can understand.

PHP – Sample of random pictures from directory at the server
Random files with requested extensions; entered count or all,

 

Made
2013-06-17

 

PHP function for random selection of entered number of files (or all ones, if there is not enough of them; or all ones, if such request is entered)
with requested extensions from entered directory at server (webhosting).

Typically for selection and insertion of needed number of random pictures, e.g. with partners of project, sponsors, references to another projects, examples, or illustration and decorative graphics.

//Martin Adámek, www.adamek.cz
/////////////////////////////////////
//$extensions              List of allowed extensions (per 3 or 4 characters)   
//$path                    Path to the directory to exploration at the server (without slash at the end) 
//$how_much                Number of names of files to result (0 == all) 
///////////////////////////////////// 

  //Finding of names of requested number of random files with requested extensions in requested directory
  function return_random_filenames_from_directory($extensions = array('jpg','jpeg','png'), $path = '', $how_much = 1) // V definici funkce uvedeny výchozí hodnoty vstupních proměnných, které se implicitně použijí, když dané proměnné nebudou při volání funkce explicitně zadány 
    { //Initialization
      $how_much = intval($how_much);      //To treat texts, decimal numbers and another unpleasant values //After error or with array at the input returns 0 or 1
      if ($how_much < 0) $how_much = 0;   //To treat negative input 
      $files = array();                   //For found suiting filenames
      $which_ones = array();              //For keys referring to selected names of files
      $result = array();                  //For sample to return (selected names of files)

      //Loading of names of suiting files
      $directory = opendir($path); 
      while ($file = readdir($directory)) 
        if ( in_array( substr($file, strlen($file)-3, 3), $extensions) or in_array( substr($file, strlen($file)-4, 4), $extensions) ) // Note: For list of files with all extensions (any extension) without this restriction is necessary to filter out directory and upper directory: $file!='.' and $file!='..'  
          $files[] = $file;
      closedir($directory);

      //Selection of values to return
      if (/*count($files) <= 1 or */ $how_much == 0 or count($files) <= $how_much)     // Necessary to return all found filenames
                                                                                       //  Platné podmínky: Chce všechny; nebo se jich našlo méně než je požadováno
                                                                                       //  Zakomentovaná podmínka: Našel se žádný nebo jeden (netřeba samostatně řešit, řeší to další dvě podmínky, když nahoře zajišťujeme, že $how_much>=0 a je celé číslo)      
          $result = $files;                                                            // We are returning all ones  
      
      else                                                                             // Necessary to select just requested count
        { $which_ones = array_rand($files,$how_much);        
          if ($how_much == 1)                                                          // array_rand returns directly key
            $result[] = $files[$which_ones];                                           // …but this function will return it as first value of array, to it be possible to process results always the same way
          else                                                                         // array_rand returns array of keys
            foreach ($which_ones as $ktery) $result[] = $files[$ktery];
        }                                                                                      
      return $result;         //Array with filenames with requested extensions in requested directory      
    }


  //Insertion of images with logotypes of partners of project
  function insert_partners_logotypes()
    {     
      $files=return_random_filenames_from_directory(array('jpg','jpeg','png','gif'), '/img/logotypes', 2);            
      echo '<div id="project_partners">';
        foreach ($files as $file) echo '<img src="img/logotypes'.$file.'" alt="Partner projektu" title="Partner projektu" />'; // I když v tomto případě by se do altu správně měl psát přímo konkrétní název firmy (text viditelný na obrázku), což se tu neděje //V případě čistě dekorativního nebo jinak obsahově opravdu bezvýznamného obrázku nechte alt prázdný
      echo '</div>';      
    }

Although function array_rand() returns various results during various running (if it is possible to choose from more possibilities and isn't necessary to return all items),
but the items in result are always in the same mutual order of chosen items.
It is possible to use function shuffle() for randomizing of items' order.

Komentáře návštěvníků

Poskytovatelé diskusních služeb (Facebook, Disqus) si do cookies ve vašem prohlížeči ukládají různé údaje, čímž mohou narušit vaše soukromí. Načtením diskusí na vaši žádost s tím souhlasíte.
Na drtivé většině webů se plug-iny Facebooku, Googlu, Disqusu a jiných třetích stran načítají automaticky; a že u mě se to děje až na vaše výslovné přání (tedy většinou neděje), je moje specialitka pro ochranu vašeho soukromí.
Discussion plugins from 3rd parties (Facebook, Disqus) provide information about you to theirs providers, saving some information into cookies in your browser. If you will load discussion on your request, it means you agree with it.

Pokud máte účet na Facebooku

(nebo jiném z několika podporovaných serverů)

Chovejte se tady jako doma, ať vidíme, jak to u vás vypadá.
[nápis v linkovém autobusu]

A priori upřímně doufám, že mě obsah a forma příspěvků nedonutí k žádným moderátorským zásahům,
ale právo zásahu si vyhrazuji, protože tyto komentáře jsou přístupné komukoliv, kdo se zaregistroval na FB, a já netuším, co se tu může objevit.

V souvislosti s vkládáním odkazů na Vaše weby do komentářů nejsem hysterický. Odkaz na nekomerční web s relevantním obsahem, který může pomoci ostatním návštěvníkům, uvítám.

 
Načíst sem facebookové komentáře
pro čtení (aktuální počet: 0)
nebo přidání vlastního

(vyžadován javascript)
 
Komentáře se záměrně nenačítají samy, aby až do jejich načtení:
Facebook nevěděl, že jste tady právě vy,
nezkazila se přizpůsobivost webu a kvalita kódu
a nezvyšoval se datový tok.
 
Facebook ví, že tuto stránku teď někdo navštívil, ale na rozdíl od řešení obvyklého na drtivé většině jiných webů s FB pluginy tady díky mému způsobu realizace nepoznal, že jste to byli právě vy.

 

Pokud nemáte účet na Facebooku

Komentářový plugin Facebooku umožňuje vkládat komentáře i prostřednictvím účtů na několika dalších serverech (i když u nás nejsou moc používané).

Pokud nemáte žádný účet, prostřednictvím kterého byste sem mohli napsat komentář, neberte to jako diskriminaci. Zkrátka jsou tu komentáře alespoň pro uživatele FB a pár dalších serverů, což je lepší, než kdyby tu nebyly vůbec.

Kromě zjevné nevýhody má toto řešení i své výhody:

  • Při použití své FB identity by se většina uživatelů mohla zamyslet, co vypouští z prstů.
  • Odkaz na komentovanou stránku se může šířít Facebookem.
  • Ve výchozím nastavení se přednostně zobrazují komentáře zanechané návštěvníkovými facebookovými známými, což v důsledku podporuje obě předchozí výhody.

Navíc většina neuživatelů FB zůstává mimo FB ze svého vlastního rozhodnutí, takže jim neužívání Facebooku přináší různé pro ně důležité výhody (soukromí, čas), které snad vykompenzují nemožnost sem něco napsat.
Případně je možné jako náhradní možnost použít návštěvní knihu společnou pro celý web.
Časem třeba napíšu nebo nasadím nějaký jiný komentářový systém, který bude mít menší omezení pro komentátory, ale teď je tu alespoň toto.

Ale i tak si můžete alespoň přečíst komentáře od ostatních.

Strukturovaný opis komentářů

Pro:

  • paranoidní jedince, kteří nechtějí, aby FB věděl, že právě oni navštívili tuto stránku,
  • programátory, kterým se ta struktura vnořených polí bude líbit,
  • uživatele mobilních zařízení, kteří nechtějí, aby FB pokazil přizpůsobivost webu,
  • případný prohlížeč bez javascriptu
  • webový archiv, který si je takto uloží jako statický text dostupný v budoucnu i bez spolupráce Facebooku.
Array
(
    [error] => Array
        (
            [message] => (#4) Application request limit reached
            [type] => OAuthException
            [is_transient] => 1
            [code] => 4
            [fbtrace_id] => FF+cnXOs7VY
        )

)

Komentáře Disqus

Sem se javascriptem vkládají komentáře Disqus, teď Vám ale asi javascript nefunguje.
System for comments Disqus doesn't work without javascript.

Jump up to: Navigation menu (keyboard shortcut „5”)

Are you interested by this page?

  • Add to bookmarks (Ctrl+D)
  • Share link (CB radio)Jump up to:
  • Print (Ctrl+P)
  • Cite according to ISO 690

    This page

    ADÁMEK, Martin. PHP – Sample of random pictures from directory at the server: Random files with requested extensions; entered count or all,. Martin Adámek [online]. Náchod (Czech Republic) [cited 2017-10-18]. Available from: http://www.adamek.cz/en/sw/php/random-sample-of-images

    Whole site

    ADÁMEK, Martin. Martin Adámek [online]. Náchod (Czech Republic) [cited 2017-10-18]. Available from: http://www.adamek.cz/en

 

 
 

National Cultural Heritage

This website is being archived by the National Library of the Czech Republic This website is regularly archived by the National Library of the Czech Republic for its cultural, educational, scientific, research or other values with the aim of documenting an authentic sample of the Czech web. It belongs to a collection of Czech websites to be preserved by the National Library and made available for posterity. Its record is included in the Czech National Bibliography and the National Library catalogue.  

 

 
 

For a distraction

There are 10 kinds of people in the world – those who understand binary and those who don't.

 

For a muse

It is not that we have so little time but that we lose so much.
[Lucius Annaeus Seneca junior]