PHP:llä tehty automaattinen kuvaesitys, joka näyttää vuorotellen kaikkia hakemistosta löytyviä kuvia, ja viimeisen kuvan näytettyään siirtyy takaisin alkuun.
Nopeuden ja näytettävien kuvatiedostojen päätteet voi itse säätää haluamakseen.
Esimerkki löytyy osoitteesta: http://koti.mbnet.fi/xmore/Kuvaesitys/
<?php ################################# # Kuvaesitys # # Nikolai Lampola 2004 # # nlampola@gmail.com # # # # Näyttää automaattisesti kaikki# #hakemistossa olevat jpg, png ja# #gif-kuvat. # ################################# //Vähän asetuksia, näitä voi muokkailla ihan vapaasti $asetus_paatteet = array("jpg","gif","png"); //Mitkä kuvat näytetään (jpg,gif,png) $asetus_nopeus = 5; //Kuinka monta sekuntia yhtä kuvaa näytetään //Monennessa TIEDOSTOSSA (ei kuvassa) ollaan if (isset($_GET['m'])) { $mones = trim($_GET['m']); } if ($mones == '') { $mones = 1; } $kuva = ""; $kahva = opendir("./"); $nro = 0; $pois = false; while (false !== ($tiedostonimi = readdir($kahva))) { if ($tiedostonimi != "." AND $tiedostonimi != "..") { //Ja katotaan että on jokin sallituista tiedostopäätteistä foreach ($asetus_paatteet as $paate) { if (strtolower(substr($tiedostonimi,strrpos($tiedostonimi,".")+1)) == strtolower($paate)) { $nro++; if ($nro >= $mones) { $pois = true; break; } } } } if ($pois) { break; } } closedir($kahva); //Jos yhtään tiedostoa ei ole if ($nro == 0) { die("Kuvatiedostoja ei ole."); } //Jos tiedostoa ei löytynyt (mentiin yli), aloitetaan alusta if ($tiedostonimi == '') { Header("Location: ?m=1"); } $kuva = $tiedostonimi; $seuraavakuva = $mones+1; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <!-- nlampola@gmail.com --> <head> <title>Automaaginen kuvaesitys</title> <meta http-equiv="refresh" content="<?php echo $asetus_nopeus; ?>; url=?m=<?php echo $seuraavakuva; ?>" /> </head> <body> <div style="text-align: center; border: #6C6C6C solid 1px; background: #DBDBDB; font-family: verdana; font-size: 10px"> <br /> <img src="<?php echo $kuva; ?>" alt="" /><br /> <br /> <a href="<?php echo $kuva; ?>"><?php echo $kuva; ?></a><br /> <br /> </div> <div style="text-align: center; font-family: verdana; font-size: 10px"> <br /> Näytetään seuraava kuva <?php echo $asetus_nopeus; ?> sekunnin sisällä...<br /> </div> </body> </html>
Ihan hyvä vinkkihän tämä on :)
...Vaikkakin glob()-funktiolla on mukavampaa listailla hakemistojen sisälmyksiä ;)
Tiedän, mutta jostain syystä glob()-funktio ei ole toiminut itellä tässä koneessa. :/ Saahan sen noinkin.
Vinkki:
if ($nro >= $mones) { $pois = true; break; }
Muotoon:
if($nro >= $mones) break 2;
Jolloin voit poistaa seuraavan if-lauseen:
if ($pois) { break; }
Kaarisulkeet tosiaan kannattaa jättää pois sellaisista if-lauseista joissa on vain yksi lauseke joka on lyhyt (selvempää).
Jos rivität if-lauseen, niin sitten kaarisulkeet ovat paikallaan.
TUossa on vain yksi ongelma. Jos käyttäjällä on hidas netti, niin sivu vaihtuu, ennenkö kuva on edes latautunut. Sen voisi korjata pienellä javascript kikkailulla. ...tietenkin muistetaan javascriptittomia <noscript> tageilla.
Muutos suosituksia: Näytettäisiin, monesko kuva on kyseessä "albumissa". Jos on viimeinen kuva, palataan alkuun tai näytetään jokin lopetus-viesti
lainaus:
Muutos suosituksia: Näytettäisiin, monesko kuva on kyseessä "albumissa". Jos on viimeinen kuva, palataan alkuun tai näytetään jokin lopetus-viesti
//Jos tiedostoa ei löytynyt (mentiin yli), aloitetaan alusta if ($tiedostonimi == '') { Header("Location: ?m=1"); }
Senhän toi tekeekin ;) Jokainen voi tietenkin ite muokkailla haluamakseen tota.
Aihe on jo aika vanha, joten et voi enää vastata siihen.