Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Kuvaesitys

nlampola [27.10.2004 18:30:53]

#

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>

jrantala [29.10.2004 17:30:53]

#

Ihan hyvä vinkkihän tämä on :)

...Vaikkakin glob()-funktiolla on mukavampaa listailla hakemistojen sisälmyksiä ;)

nlampola [29.10.2004 17:38:50]

#

Tiedän, mutta jostain syystä glob()-funktio ei ole toiminut itellä tässä koneessa. :/ Saahan sen noinkin.

T.M. [30.10.2004 02:39:28]

#

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.

Meitsi [10.11.2004 11:55:54]

#

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.

pistemies [24.02.2005 16:38:52]

#

Muutos suosituksia: Näytettäisiin, monesko kuva on kyseessä "albumissa". Jos on viimeinen kuva, palataan alkuun tai näytetään jokin lopetus-viesti

nlampola [24.02.2005 17:13:05]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta