Fotoalbum maken maar geeft fouten terug

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
Ben er nu een tijdje mee bezig, maar krijg de fouten er niet uit.
Trek nu maar ff de stoute schoenen aan.
Deze fotoalbum bestaat uit 6 kolommen en 4 rijen.
Krijg bij opstarten de navolgende fout:
- Notice: Undefined index: extension in C:\wamp\www\foto6\foto.php on line 88

Bij het klikken op de eerste foto krijg ik de foto iets groter te zien
en daaronder moeten dan 6 thumnails komen
maar krijg dan ook de melding:
- Notice: Undefined offset: -1 in C:\wamp\www\foto6\foto.php on line 296
- Notice: Undefined offset: -2 in C:\wamp\www\foto6\foto.php on line 327
- Notice: Undefined offset: -1 in C:\wamp\www\foto6\foto.php on line 335
- Notice: Undefined offset: -1 in C:\wamp\www\foto6\foto.php on line 371

Iemand die mij op weg kan helpen?
Zie bijgevoegde bestanden.


Code:
<?php

// Deze variabelen moet je naar eigen wensen veranderen

$dirname = "fotos/"; // map waarin de afbeeldingen staan
$dir_thumbs = "fotos/thumbs/"; // map waarin de thumbnails zitten
$afbeeldingenperrij = "6"; // aantal afbeeldingen per rij
$aantalrijen = "4"; // aantal rijen per pagina
$breedte_thumbnail = "100"; // breedte van de thumbnails
$hoogte_thumbnail = "100"; // hoogte van de thumbnails
$showtitle = "yes"; // wil je bovenaan een titel weergeven? ("yes" of "no")
$albumnaam = "Fotoalbum"; // titel die bovenaan weergegeven wordt

// de huidige locatie op de server vaststellen
$php_self = explode("/",$_SERVER['PHP_SELF']);
if (is_array($php_self))
{
    $php_self = urlencode($php_self[count($php_self)-1]);
}else{
    $php_self = urlencode($php_self);
}
// toegelaten extensies
$ext = "jpg gif png bmp wbmp pjpeg jpeg";

if (!@opendir($dirname) || !@opendir($dir_thumbs))
{
    echo "Kan de map met foto's of de map met thumbnails niet openen";
    exit;
}

$time_start = microtime(true);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Fotoalbum</title>
<link rel="stylesheet" type="text/css" href="foto.css"/>

<script language="javascript" type="text/javascript">

function check_images() {
    for(i=0;i<document.images.length;i++) {
    var maxWidth = 800;
        if(document.images[i].width > maxWidth){
            var origWidth = document.images[i].width;
            var origHeight = document.images[i].height;
            document.images[i].width = maxWidth;
            document.images[i].height = origHeight/(origWidth/maxWidth);
        }
    }
}

setInterval(check_images,1000);

</script>

</head>
<body>
<?php

/*Functie om te controleren of de opgegeven pagina wel bestaat.*/

function pageExists($pagenr)
{
    global $aantalpaginas; 
    if ($pagenr <= $aantalpaginas && $pagenr > 0)
    {
        return true;
    }else{
        return false;
    }
}

/*Functie die het aantal fotobestanden in een map telt.*/

function countPhotos($dirname)
{
    global $ext; //jpg gif png bmp wbmp pjpeg jpeg
    $ext2 = $ext;
    $open = @opendir($dirname);
    $aantalfotos = 0;
    $ext2 = explode(" ",$ext2);    

    while (false !== ($file = @readdir($open)))
    {
        $pathinfo = pathinfo($file);
        if (in_array(strtolower($pathinfo["extension"]), $ext2))
        {
            $aantalfotos++;
        }
    }

    @closedir($open);
    return $aantalfotos;
}

function generateArrDir($dir)
{
    global $ext;
    $ext2 = $ext;
    $handle = @opendir($dir);
    $files = array();
    $ext2 = explode(" ",$ext2);

    if ($handle)
    {
        while (false !== ($file = @readdir($handle)))
        {
            $ext = explode(".",$file);
            $ext = $ext[count($ext)-1];           

            if (in_array(strtolower($ext),$ext2))
            {
                $files[] = $file;
            }
        }
        @closedir($handle);   
        return $files;
    }else{
        return false;
    }
}
/*Functie die thumbnails (=kleine foto's) maakt en ze dan in de thumbnailmap opslaat*/

function thumbnail($map,$thumblocatie,$bestandsnaam,$breedte,$hoogte)
{
    $breedte2 = $breedte;
    $hoogte2 = $hoogte;
    list($breedte_origineel, $hoogte_origineel, $type) = getimagesize($map.$bestandsnaam);

    if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte))
    {
        $breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
    }else{
        $hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
    }

    $afbeelding = imagecreatetruecolor($breedte, $hoogte);
    // eerst controleren of de foto wel verkleind moet worden
    if ($breedte_origineel > $breedte2 || $hoogte_origineel > $hoogte2)
    {
        switch ($type) 
        {
            case 1:
                //gif
                $afbeelding_origineel = imagecreatefromgif($map.$bestandsnaam);
                imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
                imagegif($afbeelding, $thumblocatie.$bestandsnaam);
                break;
            case 2:
                //jpg
                $afbeelding_origineel = imagecreatefromjpeg($map.$bestandsnaam);
                imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
                imagejpeg($afbeelding, $thumblocatie.$bestandsnaam,80);
                break;
            case 3:
                //png
                $afbeelding_origineel = imagecreatefrompng($map.$bestandsnaam);
                imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
                imagepng($afbeelding, $thumblocatie.$bestandsnaam);
                break;
        }   
    }
    // anders kopiëren we de foto gewoon naar de thumbsmap
    else{
        @copy($map.$bestandsnaam,$thumblocatie.$bestandsnaam);
    }
    return true;
}
/*-----------------------------------------------------
    Hieronder dient niets meer veranderd te worden
-------------------------------------------------------*/
$fotosperpagina = $afbeeldingenperrij * $aantalrijen;
$aantalfotos = countPhotos($dirname);
$aantalpaginas = ceil($aantalfotos / $fotosperpagina);
// fotomap openen
$open = @opendir($dirname);

// als er geen actie is opgegeven 
if (empty($_GET['action']))
{
    $photos = generateArrDir($dirname);
    $page = $_GET['page'];   
    // opgegeven paginanummer controleren
    if (!is_numeric($page) || !pageExists($page))
    {
        $page = "1";
    }else{
        $page = $page;
    }
    $photos = array_chunk($photos,$fotosperpagina,true);
    $photos = $photos[$page-1];
    $vorige = $page-1;
    $volgende = $page+1;   

    echo "<table style=\"width: 100%;\">";    

    // titel bovenaan weergeven indien zo ingesteld
    if ($showtitle == "yes")
    {
        echo "<tr>";
        echo "<td colspan=\"2\">";
        echo "<h2 class=\"title\">" . $albumnaam . "</h2>\n";
        echo "</td>";
        echo "</tr>";
    }
    echo "<tr>";

    if (is_array($photos))
    {
        echo "<td style=\"width: 170px; vertical-align: top;\">";
        echo "<div class=\"overzicht\">";
            // enkele statistieke meegeven
            echo "Totaal aantal foto's: ".$aantalfotos;
            echo "\n<br>\n";
            echo "Aantal pagina's: ".$aantalpaginas;
            echo "\n<br>\n";
            echo "Aantal foto's per pagina: ".$fotosperpagina;
            echo "\n<br>\n";
            echo "Ga naar pagina: \n<br>\n<br>\n";
            echo "<form method=\"get\" action=\"" . $php_self . "\">\n";
                echo "<select name=\"page\" onchange=\"this.form.submit()\" style=\"width: 70px;\">\n";
                for ($k = 1; $k <= $aantalpaginas; $k++)
                {
                    if ($k == $page)
                    {
                        echo "<option value=\"" . $k . "\" selected=\"selected\">" . $k . "</option>\n";
                    }else{
                        echo "<option value=\"" . $k . "\">" . $k . "</option>\n";
                    }
                }
                echo "</select>\n";
            echo "</form>\n";
        echo "</div>";
        echo "</td>";
        echo "<td style=\"vertical-align: top;\">";
        echo "<div id=\"mainlayer\">\n";

        // kijken of er een "vorige" knop nodig is
        if (pageExists($vorige))
        {
            echo "<a href=\"" . $php_self . "?page=".$vorige."\">&lt;&lt;&nbsp;Vorige</a>\n";
        }else{
            echo "<span class=\"hidden\">Vorige&nbsp;&gt;&gt;</span>";
        }     
        echo "&nbsp;&nbsp;&nbsp;\n";       

        // kijken of er een "volgende" knop nodig is
        if (pageExists($volgende))
        {
            echo "<a href=\"" . $php_self . "?page=".$volgende."\">Volgende&gt;&gt;&nbsp;</a>\n";
        }else{
            echo "<span class=\"hidden\">Volgende&nbsp;&gt;&gt;</span>";
        }
        echo "<br>\n<br>\n";
        $inrij = 0;
        foreach ($photos as $id => $photo)
        {
            if (!file_exists($dir_thumbs . $photo))
            { // ... dan maken we die aan
                thumbnail($dirname,$dir_thumbs,$photo,$breedte_thumbnail,$hoogte_thumbnail);
            }
            echo "<img src=\"" . $dir_thumbs . $photo . "\" alt=\"" . $photo . "\"  onclick=\"location.href='" . $php_self . "?action=photo&amp;id=".$id."'\" class=\"image\">\n";
            $inrij++;
            // als de foto de laatste van de rij is, breken we de rij af om terug aan de kant te beginnen
           if ($inrij == $afbeeldingenperrij)
            {
                echo "<br>\n";
                // $inrij op 0 zetten
                $inrij = "0";
            }
        }
        echo "</div>\n";
    }else{
        echo "<td>Geen foto's aanwezig";
    }
    echo "<td>";
    echo "</tr>";
    echo "<tr>";
    echo "</table>";
}
// als er op een foto geklikt wordt willen we dat deze foto in het groot wordt weergegeven

elseif ($_GET['action'] == "photo" && isset($_GET['id']) && is_numeric($_GET['id']))
{

    $volgende = $_GET['id']+1;
    $vorige = $_GET['id']-1;
    $photoid = $_GET['id'];
    $page1 = $_GET['id'] + 1;
    $page = $page1 / $fotosperpagina;
    $page = ceil($page);   
    $photos = generateArrDir($dirname);
    echo "<div id=\"mainlayer\">\n";
 // begin navigatie bovenaan...
    if (file_exists($dir_thumbs . $photos[$photoid-1]) && in_array($photos[$photoid-1],$photos))
    {
        echo ($photos[$photoid-1]);
        echo "<a href=\"" . $php_self . "?action=photo&amp;id=".$vorige."\">&lt;&lt;&nbsp;Vorige</a>\n";
    }else{
        echo "<span class=\"hidden\">Vorige&nbsp;&gt;&gt;</span>";
    }
    echo "&nbsp;&nbsp;&nbsp;\n";

    if (file_exists($dir_thumbs . $photos[$photoid+1]) && in_array($photos[$photoid+1],$photos))
    {
        echo "<a href=\"" . $php_self . "?action=photo&amp;id=".$volgende."\">Volgende&nbsp;&gt;&gt;</a>\n";
    }else{
        echo "<span class=\"hidden\">Volgende&nbsp;&gt;&gt;</span>";
    }
    echo "<br>\n";
    echo "<br>\n";
    // ... einde navigatie bovenaan
    //begin foto...
    if (file_exists($dir_thumbs . $photos[$volgende]) && in_array($photos[$volgende],$photos))
    {
        echo "<img src=\"" . $dirname . $photos[$photoid] . "\" alt=\"" . $photos[$photoid] . "\" onclick=\"location.href='" . $php_self . "?action=photo&amp;id=" . $volgende . "'\" class=\"image\">\n";
    }else{
        echo "<img src=\"" . $dirname . $photos[$photoid] . "\" alt=\"" . $photos[$photoid] . "\" class=\"image2\">\n";
    }
    echo "<br>\n";
    echo "<br>\n";
    // ... einde foto
    //============================================================================================
    // begin thumbnailsbalk....    

    if (file_exists($dir_thumbs . $photos[$photoid-2]) && in_array($photos[$photoid-2],$photos))
    {
        $location = $photoid - 2;
        echo "<img src=\"" . $dir_thumbs . $photos[$photoid-2] . "\" class=\"image\" alt=\"" . $photos[$photoid-2] . "\" onclick=\"location.href='" . $php_self . "?action=photo&amp;id=" . $location . "'\">\n";
    }else{
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
    }    

    if (file_exists($dir_thumbs . $photos[$photoid-1]) && in_array($photos[$photoid-1],$photos))
    {
        $location = $photoid - 1;
        echo "<img src=\"" . $dir_thumbs . $photos[$photoid-1] . "\" class=\"image\" alt=\"" . $photos[$photoid-1] . "\" onclick=\"location.href='" . $php_self . "?action=photo&amp;id=" . $location . "'\">\n";
    }else{
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
    }

    if (file_exists($dir_thumbs . $photos[$photoid]) && in_array($photos[$photoid],$photos))
    {
        echo "<img src=\"" . $dir_thumbs . $photos[$photoid] . "\" class=\"this_image\" alt=\"" . $photos[$photoid] . "\">\n";
    }else{
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
    }

    if (file_exists($dir_thumbs . $photos[$photoid+1]) && in_array($photos[$photoid+1],$photos))
    {
        $location = $photoid + 1;
        echo "<img src=\"" . $dir_thumbs . $photos[$photoid+1] . "\" class=\"image\" alt=\"" . $photos[$photoid+1] . "\" onclick=\"location.href='" . $php_self . "?action=photo&amp;id=" . $location . "'\">\n";
    }else{
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
    }

    if (file_exists($dir_thumbs . $photos[$photoid+2]) && in_array($photos[$photoid+2],$photos))
    {
        $location = $photoid + 2;
        echo "<img src=\"" . $dir_thumbs . $photos[$photoid+2] . "\" class=\"image\" alt=\"" . $photos[$photoid+2] . "\" onclick=\"location.href='" . $php_self . "?action=photo&amp;id=" . $location . "'\">\n";
    }else{
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
    }
    echo "<br>";
    echo "<br>";
    // ... einde thumbnailsbalk    
    //===============================================================================================
    // begin navigatie onderaan...

    if (file_exists($dir_thumbs . $photos[$photoid-1]) && in_array($photos[$photoid-1],$photos))
    {
        echo "<a href=\"" . $php_self . "?action=photo&amp;id=".$vorige."\">&lt;&lt;&nbsp;Vorige</a>\n";
    }else{
        echo "<span class=\"hidden\">Vorige&nbsp;&gt;&gt;</span>";
    }
    echo "&nbsp;&nbsp;&nbsp;\n";

    if (file_exists($dir_thumbs . $photos[$photoid+1]) && in_array($photos[$photoid+1],$photos))
    {
        echo "<a href=\"" . $php_self . "?action=photo&amp;id=".$volgende."\">Volgende&nbsp;&gt;&gt;</a>\n";
    }else{
        echo "<span class=\"hidden\">Volgende&nbsp;&gt;&gt;</span>";
    }

    echo "<br>\n";
    echo "<br>\n";
    echo "<a href=\"" . $php_self . "?page=".$page."\">Overzicht</a>\n";
    echo "<br>\n";
    echo "<br>\n";
    echo "[ <a href=\"" . $dirname . $photos[$photoid] . "\">Origineel</a> ]";
    // ... einde navigatie onderaan
    //=========================================================================
    echo "</div>\n";
}
?>

</body>
</html>
<?php
$time_end = microtime(true);
$time = $time_end - $time_start;
//echo "<br />Pagina generatie in $time seconden.\n";
?>
 

Bijlagen

  • Overzicht.jpg
    Overzicht.jpg
    93,9 KB · Weergaven: 25
  • Overzicht1.jpg
    Overzicht1.jpg
    80,9 KB · Weergaven: 45
  • overzicht2.jpg
    overzicht2.jpg
    78,3 KB · Weergaven: 25
Als ik het zo snel zie lijken je problemen altijd gerelateerd aan het gebruik van de PHP in_array functie.

Als ik er zo snel eentje neem:
in_array($photos[$photoid-1],$photos)

Oftewel: Je checkt of een element in een array $photos dat qua inhoud te vinden is in een van de elementen van hetzelfde array.
a. Hoe weet je zeker dat $photoid altijd groter of gelijk is aan 1 (want 1-1 = 0 = het laagste element-nummer in een array)?
b. Wat is het doel ervan? Want (stel dat $photoid inderdaad altijd groter of gelijk is aan 1), dan zal dit altijd True opleveren (lijkt mij).

Voorbeeld:
$photos= array("Familie", "Kennissen", "Sportclub");
en $photoid is gelijk aan 1
dan gaat "Familie" opgezocht worden in array $photos, en (natuurlijk) gaat die gevonden worden want het element dat je zoekt maakt zelf onderdeel uit van het array...

Ik kan me vergissen, maar zijn zo mijn gedachten erbij. Natuurlijk kan het ook zijn dat ik de verkeerde regels bekeken heb. :D

Tijs.
 
Laatst bewerkt:
Oke, heb m nu aan de praat
alleen krijg nog één foutmelding
in de functie countPhotos($dirname)
m. b.t. - extension


Code:
while (false !== ($file = @readdir($open)))
    {
        $pathinfo = pathinfo($file);
        if (in_array(strtolower($pathinfo["extension"]), $ext2))
        {
            $aantalfotos++;
        }
    }
 
Heb de fotoalbum nu goed werkend
Alleen komt niet uit de functie zoals hier bijgevoegd
met name de - extentions- in de
-- if (in_array(strtolower($pathinfo["extension"]), $ext2)) --
Wat ik ervan begrijp is dat kennelijk de juiste extensie van de
de foto's worden gecontroleerd.
foutmelding die ik krijg is:
Notice: Undefined index: extension in C:\wamp\www\foto6\foto.php on line 94
De vraag is dan ook of iemand daar een oplossing
voor weet, dan wel kan uitleggen.

Code:
$ext = "jpg gif png bmp";
function countPhotos($dirname)
{
    global $ext;
    $ext2 = $ext;
    $open = @opendir($dirname);
    $aantalfotos = 0;    

    $ext2 = explode(" ",$ext2);    

    while (false !== ($file = @readdir($open)))
    {
        $pathinfo = pathinfo($file);
        if (in_array(strtolower($pathinfo["extension"]), $ext2))                
        {            
            $aantalfotos++;
        }
    }    
    @closedir($open);
    return $aantalfotos;    
}
 
Laatst bewerkt:
Ik vroeg me de herkomst van het script af.

ik heb je scriptje een beetje aangepast zou beter moeten werken, denk eraan om dit om te zetten naar OO en het zou nog beter zijn(gemakelijker nadien)
Denk ook aan het afzonderen van problemen door meer functies vb existthumps te gebruiken .
PHP:
<?php
    // Deze variabelen moet je naar eigen wensen veranderen
    $dirname = "fotos/"; // map waarin de afbeeldingen staan
    $dir_thumbs = "fotos/thumbs/"; // map waarin de thumbnails zitten
    $afbeeldingenperrij = "6"; // aantal afbeeldingen per rij
    $aantalrijen = "4"; // aantal rijen per pagina
    $breedte_thumbnail = "100"; // breedte van de thumbnails
    $hoogte_thumbnail = "100"; // hoogte van de thumbnails
    $showtitle = "yes"; // wil je bovenaan een titel weergeven? ("yes" of "no")
    $albumnaam = "Fotoalbum"; // titel die bovenaan weergegeven wordt
    // de huidige locatie op de server vaststellen
    $php_self = explode("/",$_SERVER['PHP_SELF']);
    if (is_array($php_self)){
        $php_self = urlencode($php_self[count($php_self)-1]);
    }else{
        $php_self = urlencode($php_self);
    }
    // toegelaten extensies
    $ext = "jpg gif png bmp wbmp pjpeg jpeg";
    if (!@opendir($dirname) || !@opendir($dir_thumbs)){
        echo "Kan de map met foto's of de map met thumbnails niet openen";
        exit;
    }
    $time_start = microtime(true);
//LET OP ONDERSTAANDE REGEL IS NIET HTML5
?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Fotoalbum</title>
    <link rel="stylesheet" type="text/css" href="foto.css"/>
    <script language="javascript" type="text/javascript">
    function check_images() {
        for(i=0;i<document.images.length;i++) {
        var maxWidth = 800;
            if(document.images[i].width > maxWidth){
                var origWidth = document.images[i].width;
                var origHeight = document.images[i].height;
                document.images[i].width = maxWidth;
                document.images[i].height = origHeight/(origWidth/maxWidth);
            }
        }
    }
    setInterval(check_images,1000);
    </script>
    </head>
    <body>
<?php
    /*Functie om te controleren of de opgegeven pagina wel bestaat.*/
    function pageExists($pagenr){
        global $aantalpaginas; 
        if ($pagenr <= $aantalpaginas && $pagenr > 0)    {
            return true;
        }else{
            return false;
        }
    }
    /*Functie die het aantal fotobestanden in een map telt.*/
    function countPhotos($dirname){
        global $ext; //jpg gif png bmp wbmp pjpeg jpeg
        $ext2 = $ext;
        $open = @opendir($dirname);
        $aantalfotos = 0;
        $ext2 = explode(" ",$ext2);    
        while (false !== ($file = @readdir($open))){
            $pathinfo = pathinfo($file);    
            if(!isset($pathinfo['extension'])){
                print "no pictures found @".print_r($pathinfo,true);
            }
            if(isset($pathinfo['extension'])&& in_array(strtolower($pathinfo['extension']), $ext2)){
                $aantalfotos++;
            }
        }
        @closedir($open);
        return $aantalfotos;
    }
    function generateArrDir($dir){
        global $ext;
        $ext2 = $ext;
        $handle = @opendir($dir);
        $files = array();
        $ext2 = explode(" ",$ext2);
        if ($handle){
            while (false !== ($file = @readdir($handle))){
                $ext = explode(".",$file);
                $ext = $ext[count($ext)-1];           
                if (in_array(strtolower($ext),$ext2)) {
                    $files[] = $file;
                }
            }
            @closedir($handle);   
            return $files;
        }else{
            return false;
        }
    }
    /*Functie die thumbnails (=kleine foto's) maakt en ze dan in de thumbnailmap opslaat*/
    function thumbnail($map,$thumblocatie,$bestandsnaam,$breedte,$hoogte){
        $breedte2 = $breedte;
        $hoogte2 = $hoogte;
        list($breedte_origineel, $hoogte_origineel, $type) = getimagesize($map.$bestandsnaam);
        if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte)){
            $breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
        }else{
            $hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
        }
        $afbeelding = imagecreatetruecolor($breedte, $hoogte);
        // eerst controleren of de foto wel verkleind moet worden
        if ($breedte_origineel > $breedte2 || $hoogte_origineel > $hoogte2){
            switch ($type) {
                case 1:
                    //gif
                    $afbeelding_origineel = imagecreatefromgif($map.$bestandsnaam);
                    imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
                    imagegif($afbeelding, $thumblocatie.$bestandsnaam);
                    break;
                case 2:
                    //jpg
                    $afbeelding_origineel = imagecreatefromjpeg($map.$bestandsnaam);
                    imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
                    imagejpeg($afbeelding, $thumblocatie.$bestandsnaam,80);
                    break;
                case 3:
                    //png
                    $afbeelding_origineel = imagecreatefrompng($map.$bestandsnaam);
                    imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
                    imagepng($afbeelding, $thumblocatie.$bestandsnaam);
                    break;
            }   
        } else{// anders kopiëren we de foto gewoon naar de thumbsmap
            @copy($map.$bestandsnaam,$thumblocatie.$bestandsnaam);
        }
        return true;
    }
    /*-----------------------------------------------------
        Hieronder dient niets meer veranderd te worden
    -------------------------------------------------------*/
    $fotosperpagina = $afbeeldingenperrij * $aantalrijen;
    $aantalfotos = countPhotos($dirname);
    $aantalpaginas = ceil($aantalfotos / $fotosperpagina);
    // fotomap openen
    $open = @opendir($dirname);
    // als er geen actie is opgegeven 
    if (empty($_GET['action'])){
        $photos = generateArrDir($dirname);
        if($photos==false){
            print "Tja zonder fotokes zalt echt niet lukken deze te tonen";
        }
        // opgegeven paginanummer controleren
        $page = (isset($_GET['page'])&& is_numeric($_GET['page'])&& pageExists($_GET['page']))?$_GET['page']:"1";
        $photos = array_chunk($photos,$fotosperpagina,true);
        $photos = $photos[$page-1];
        $vorige = $page-1;
        $volgende = $page+1;   
        echo "<table style=\"width: 100%;\">";    
        // titel bovenaan weergeven indien zo ingesteld
        if ($showtitle == "yes"){ ?>
            <tr>
                <td colspan="2">
                    <h2 class="title"><?php print $albumnaam ?></h2>
                </td>
            </tr>
            <?php 
        }
        echo "<tr>";
        if (is_array($photos)){
            echo "<td style=\"width: 170px; vertical-align: top;\">";
            echo "<div class=\"overzicht\">";
                // enkele statistieke meegeven
                echo "Totaal aantal foto's: ".$aantalfotos."\n<br>\n";
                echo "Aantal pagina's: ".$aantalpaginas."\n<br>\n";
                echo "Aantal foto's per pagina: ".$fotosperpagina."\n<br>\n";
                echo "Ga naar pagina: \n<br>\n<br>\n";
                echo "<form method=\"get\" action=\"" . $php_self . "\">\n";
                echo "<select name=\"page\" onchange=\"this.form.submit()\" style=\"width: 70px;\">\n";
                    for ($k = 1; $k <= $aantalpaginas; $k++){
                        if ($k == $page){
                            echo "<option value=\"" . $k . "\" selected=\"selected\">" . $k . "</option>\n";
                        }else{
                            echo "<option value=\"" . $k . "\">" . $k . "</option>\n";
                        }
                    }?>
                    </select>
            </form>
        </div>
    </td><td style="vertical-align: top;">
        <div id="mainlayer">
            <?php
            // kijken of er een "vorige" knop nodig is
            if (pageExists($vorige)){
                echo "<a href=\"" . $php_self . "?page=".$vorige."\">&lt;&lt;&nbsp;Vorige</a>\n";
            }else{
                echo "<span class=\"hidden\">Vorige&nbsp;&gt;&gt;</span>";
            }     
            echo "&nbsp;&nbsp;&nbsp;\n";       
            // kijken of er een "volgende" knop nodig is
            if (pageExists($volgende)){
                echo "<a href=\"" . $php_self . "?page=".$volgende."\">Volgende&gt;&gt;&nbsp;</a>\n";
            }else{
                echo "<span class=\"hidden\">Volgende&nbsp;&gt;&gt;</span>";
            }
            echo "<br>\n<br>\n";
            $inrij = 0;
            foreach ($photos as $id => $photo){
                if (!file_exists($dir_thumbs . $photo)){ // ... dan maken we die aan
                    thumbnail($dirname,$dir_thumbs,$photo,$breedte_thumbnail,$hoogte_thumbnail);
                }
                echo "<img src=\"" . $dir_thumbs . $photo . "\" alt=\"" . $photo . "\"  onclick=\"location.href='" . $php_self . "?action=photo&amp;id=".$id."'\" class=\"image\">\n";
                $inrij++;
                // als de foto de laatste van de rij is, breken we de rij af om terug aan de kant te beginnen
               if ($inrij == $afbeeldingenperrij){
                    echo "<br>\n";
                    // $inrij op 0 zetten
                    $inrij = "0";
                }
            }
            echo "</div>\n";
        }else{
            echo "<td>Geen foto's aanwezig";
        }
        echo "<td>";
        echo "</tr>";
        echo "<tr>";
        echo "</table>";
    }elseif ($_GET['action'] == "photo" && isset($_GET['id']) && is_numeric($_GET['id'])){
        // als er op een foto geklikt wordt willen we dat deze foto in het groot wordt weergegeven
        $volgende = $_GET['id']+1;
        $vorige = $_GET['id']-1;
        $photoid = $_GET['id'];
        $page1 = $_GET['id'] + 1;
        $page = $page1 / $fotosperpagina;
        $page = ceil($page);   
        $photos = generateArrDir($dirname);
        echo "<div id=\"mainlayer\">\n";
     // begin navigatie bovenaan...
        if (file_exists($dir_thumbs . $photos[$photoid-1]) && in_array($photos[$photoid-1],$photos)) {
            echo ($photos[$photoid-1]);
            echo "<a href=\"" . $php_self . "?action=photo&amp;id=".$vorige."\">&lt;&lt;&nbsp;Vorige</a>\n";
        }else{
            echo "<span class=\"hidden\">Vorige&nbsp;&gt;&gt;</span>";
        }
        echo "&nbsp;&nbsp;&nbsp;\n";
        if (file_exists($dir_thumbs . $photos[$photoid+1]) && in_array($photos[$photoid+1],$photos)) {
            echo "<a href=\"" . $php_self . "?action=photo&amp;id=".$volgende."\">Volgende&nbsp;&gt;&gt;</a>\n";
        }else{
            echo "<span class=\"hidden\">Volgende&nbsp;&gt;&gt;</span>";
        }
        echo "<br>\n<br>\n";
        // ... einde navigatie bovenaan
        //begin foto...
        if (file_exists($dir_thumbs . $photos[$volgende]) && in_array($photos[$volgende],$photos)) {
            echo "<img src=\"" . $dirname . $photos[$photoid] . "\" alt=\"" . $photos[$photoid] . "\" onclick=\"location.href='" . $php_self . "?action=photo&amp;id=" . $volgende . "'\" class=\"image\">\n";
        }else{
            echo "<img src=\"" . $dirname . $photos[$photoid] . "\" alt=\"" . $photos[$photoid] . "\" class=\"image2\">\n";
        }
        echo "<br>\n<br>\n";
        // ... einde foto
        //============================================================================================
        // begin thumbnailsbalk....
        printpic($dir_thumbs,$photos,$photoid-2,$php_self);    
        printpic($dir_thumbs,$photos,$photoid-1,$php_self); 
        printpic($dir_thumbs,$photos,$photoid,$php_self); 
        printpic($dir_thumbs,$photos,$photoid+1,$php_self);
        printpic($dir_thumbs,$photos,$photoid+2,$php_self);
        echo "<br>";
        echo "<br>";
        // ... einde thumbnailsbalk    
        //===============================================================================================
        // begin navigatie onderaan...
        if (file_exists($dir_thumbs . $photos[$photoid-1]) && in_array($photos[$photoid-1],$photos)){
            echo "<a href=\"" . $php_self . "?action=photo&amp;id=".$vorige."\">&lt;&lt;&nbsp;Vorige</a>\n";
        }else{
            echo "<span class=\"hidden\">Vorige&nbsp;&gt;&gt;</span>";
        }
        echo "&nbsp;&nbsp;&nbsp;\n";
        if (file_exists($dir_thumbs . $photos[$photoid+1]) && in_array($photos[$photoid+1],$photos)){
            echo "<a href=\"" . $php_self . "?action=photo&amp;id=".$volgende."\">Volgende&nbsp;&gt;&gt;</a>\n";
        }else{
            echo "<span class=\"hidden\">Volgende&nbsp;&gt;&gt;</span>";
        }
        echo "<br>\n<br>\n";
        echo "<a href=\"" . $php_self . "?page=".$page."\">Overzicht</a>\n";
        echo "<br>\n<br>\n";
        echo "[ <a href=\"" . $dirname . $photos[$photoid] . "\">Origineel</a> ]";
        // ... einde navigatie onderaan
        //=========================================================================
        echo "</div>\n";
    }
    function printpic($dir_thumbs,&$picarray,$possition,$php_self){
        if (file_exists($dir_thumbs . $picarray[$possition]) && in_array($picarray[$possition],$picarray)) {
            $location = $possition;
            echo '<img src="'.$dir_thumbs.$picarray[$possition].'" class="image" alt="'.$picarray[$possition].'" onclick="location.href=\''.$php_self."?action=photo&amp;id=".$location."'\">\n";
        }else{
            echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n";
        } 
    }
?>
</body>
</html>
<?php
    $time_end = microtime(true);
    $time = $time_end - $time_start;
    //echo "<br />Pagina generatie in $time seconden.\n";
?>
LAST LINE OF SCRIPT
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan