Not logged in. · Lost password · Register
Forum: I NEED HELP!!!!!! Scripting Help RSS
Photo script
Reply
Reply · Quote Ralf #1
Member since Jul 2005 · 36 posts
Group memberships: Members
Show profile · Link to this post
Subject: Photo script
He Carbonize, hope you can/wil help me with this one:

I've an Photo script witch i'm very happy with, but....The scripts automaticaly creates a list of galleries. But the script (php) is sorting it from A.....Z. Now i want him to sort on date/time when the galleries where created....I was looking for the sort funtction. I've tried te change the sort function but i can't do it....

Is this easy or diffecult?

The script:

file 1: show_foto.php

<?php

//
//    show_foto.php
//
//


include("../inc/head.inc.php");
?>
<div align="center">

<?php

// Is er om een specifiek album gevraagd...?
if (isset($_GET['album'])) {
    $album = $_GET['album'];
} else {
    echo "<H2> Fout ! </H2>\n";
    echo "<p>Geen album aangevraagd.</p>\n";
    echo "</body></html>\n";
    exit;
}

// Is er een niet bestaand album gevraagd...?
if ($album != "" && !is_dir($album)) { 

    // Foutmelding weergeven
    echo "<h2>Fout:</h2>\n";
    echo "<p>Het door u gevraagde album bestaat niet.</p>\n";
    echo "</body></html>\n";
    exit;
}

if (isset($_GET['fotonr'])) {
    $fotonr = $_GET['fotonr'];
} else {
    $fotonr = 0;
}

// indexen op nul zetten
$aantal_fotos    = 0;

// Huidige directory openen
$mydir = opendir($album);

// Alle bestanden in de huidige directory doorlopen
while ($filename = readdir($mydir)) {

    // Alle plaatjes in array opslaan
    if (is_file ($album."/".$filename) && eregi("\.jpg$|\.jpeg$|\.gif$|\.bmp$|\.png$", $filename)) { 
        $foto[$aantal_fotos] = $filename;
        $aantal_fotos++;
    }


// Directory weer sluiten...
closedir($mydir);

// Foto's pagina weergeven
if ($aantal_fotos == 0) {
    // Foutmelding weergeven
    echo "<h2>Fout:</h2>\n";
    echo "<p>Er bestaan geen foto's in dit album...</p>\n";
    echo "</body></html>\n";
    exit;
}

if ($fotonr > $aantal_fotos) {
    // Foutmelding weergeven
    echo "<h2>Fout:</h2>\n";
    echo "<p>Gevraagde foto bestaat niet...</p>\n";
    echo "</body></html>\n";
    exit;
}

if ($fotonr < 0) {
    // Foutmelding weergeven
    echo "<h2>Fout:</h2>\n";
    echo "<p>Gevraagde foto bestaat niet...</p>\n";
    echo "</body></html>\n";
    exit;
}

// sorteren op alfabet...    
sort ($foto);

ClearStatCache(); 

// Afmetingen van foto bepalen...
$size = GetImageSize("$album/$foto[$fotonr]"); 
$size[0] = $size[0] + 35;
$size[1] = $size[1] + 100; //was 85

echo "<script type=\"text/javascript\" language=\"JavaScript\">\n";
echo "<!--\n";
echo "\twindow.resizeTo($size[0],$size[1]);\n";
echo "//-->\n";
echo "</script>\n";

// Extensie van bestand afhakken, en daarna alle "_" vervangen door " "    
$display = eregi_replace(".jpg|.jpeg|.gif|.bmp|.png", "", $foto[$fotonr]);
$display = eregi_replace("_", " ", $display);

echo "<table border=0>\n";
echo "<tr><td colspan=2>\n";
echo "<img src=\"$album/$foto[$fotonr]\" />\n";
echo "</td></tr>\n";

$nextfoto    = ($fotonr + 1); 
$prevfoto    = ($fotonr - 1); 

// bepalen of er wel of geen volgende en vorige moeten worden weergegeven...
if ($nextfoto < $aantal_fotos) { 
    $volgende = "<a href=?album=$album&fotonr=$nextfoto>Volgende </a>"; 
} else {
    $volgende = " ";
}

if ($fotonr != 0) {
    $vorige = "<a href=?album=$album&fotonr=$prevfoto>Vorige </a>"; 
} else {
    $vorige = " ";
}

// Footer, dit staat onder de tabel.
echo "<tr><td align=right width=50%>    $vorige          </td>\n";
echo "<td align=left width=50%>           $volgende    </td>\n"; 
echo "</tr>\n";
echo "</table>\n"; 
?> 

</div>
</body>
</html>

File 2: Fotoalbum.php

<?php


// Is er om een specifiek album gevraagd...?
if (isset($_GET['album'])) {
    $album = $_GET['album'];
} else {
    $album = ".";
}

// Is er om een specifieke pagina gevraagd...?
if (isset($_GET['page'])) {
    $page = $_GET['page'];
} else {
    $page = 0;
}

// Configuratie
$cols            = "4";            // Aantal kolommen
$rows            = "3";            // aantal rijen
$max_thumb_width    = "120";        // Maximale breedte van een thumbnail
$max_thumb_height    = "90";            // Maximale hoogte van een thumbnail

$thumbs            = "$album/thumbs";    // directory waar thumbnails in staan
$header            = eregi_replace("_", " ", $album);

if ($cols % 2 == 0) {
    $colspan = "";
} else {
    $colspan = "colspan=2";
}

include("../inc/head.inc.php");
?>
<div align="center">

<?php

// Is er een niet bestaand album gevraagd...?
if ($album != "" && !is_dir($album)) { 

    // Foutmelding weergeven
    echo "<h2>Fout:</h2>\n";
    echo "<p>Het door u gevraagde album bestaat niet. Selecteer een album uit de lijst hieronder.</p>\n";

    // Album leegmaken, zodat album-overzicht wordt weergegeven
    $album = ".";
}

// Huidige directory openen
$mydir = opendir($album);

// indexen op nul zetten
$aantal_subdirs    = 0;
$aantal_fotos    = 0;

// Alle bestanden in de huidige directory doorlopen
while ($filename = readdir($mydir)) {

    // Alle subdirectories in array opslaan
    if (is_dir($album."/".$filename) && $filename != "." && $filename != ".." && $filename != "thumbs") {
        $subdir[$aantal_subdirs] = $filename;
        $aantal_subdirs++;
    }

    // Alle plaatjes in array opslaan
    if (is_file ($album."/".$filename) && eregi("\.jpg$|\.jpeg$|\.gif$|\.bmp$|\.png$", $filename)) { 
        $foto[$aantal_fotos] = $filename;
        $aantal_fotos++;
    }


// Directory weer sluiten...
closedir($mydir);

// Directory structuur vastleggen in array...
$map    = $album;
$i     = 1;

$directory_tree[0] = $map;

while ($map != ".") {
    
    $last_slash_pos = strlen($map) - strpos(strrev($map), "/");    
    $map = substr ($map, 0, $last_slash_pos - 1);

    $directory_tree[$i] = $map;    
    $i++;

}

// Rij met links naar albumoverzicht/subalbums weergeven....
for ($i = count ($directory_tree) - 1 ; $i >= 0; $i--) {
    
    $last_slash_pos = strlen($directory_tree[$i]) - strpos(strrev($directory_tree[$i]), "/");    
    $directory_name = substr($directory_tree[$i], $last_slash_pos);
    $directory_name = eregi_replace("_", " ", $directory_name);

    if ($directory_name != "") {
        //echo "   >   ";
    }

    //echo "<a href='../foto.php'>";//echo "<a href='?album=$directory_tree[$i]'>";

    if ($directory_name != "") {
    //    echo $directory_name;
    } else {
    //    echo "Foto album";
    }
    //echo "</a>";
}

//echo "<hr><br>";

// Subalbums weergeven :
if ($aantal_subdirs > 0) {

    sort ($subdir);

    echo "<table>\n";
    for ($i =0; $i < $aantal_subdirs; $i++) {
        $directory_name = eregi_replace("_", " ", $subdir[$i]);
        echo "<tr><td><a href=?album=$album/$subdir[$i]>$directory_name</a></td></tr>\n"; 
    }
    echo "</table>";


// Foto's pagina weergeven
if ($aantal_fotos > 0) {

    // sorteren op alfabet...    
    sort ($foto);

    // eerste en laatste foto op deze pagina bepalen...
    $eerste_foto    = (($page * $cols * $rows) + 1); 
    $laatste_foto    = (($page + 1) * $cols * $rows); 

    // tabel beginnen...
    echo "<table border=0 cellpadding=10 cellspacing=0><tr>\n"; 

    // alleen foto's tussen eerste en laatste foto afdrukken...
    for ($i = $eerste_foto - 1; ($i < $aantal_fotos) && ($i < $laatste_foto); $i++) {

        ClearStatCache(); 

        // Afmetingen van foto bepalen...
        $size = GetImageSize("$album/$foto[$i]"); 
        
        // Afmeting van Window bepalen...
        $size[0] = $size[0] + 25; 
        $size[1] = $size[1] + 45; 
                
        // bestandsgrootte bepalen...    
        $file_size = fileSize("$album/$foto[$i]"); 
        $file_size = round($file_size / 1000) . "k"; 

        // Extensie van bestand afhakken, en daarna alle "_" vervangen door " "    
        $display = eregi_replace(".jpg|.jpeg|.gif|.bmp|.png", "", $foto[$i]);
        $display = eregi_replace("_", " ", $display);

        // Veld in tabel weergeven...
        echo ("<td $colspan><a href=\"$album/$foto[$i]\" onmouseover=\"window.status='Vergroten';return true;\"  
            onmouseout=\"window.status=''; return true\"  
            onclick=\"window.open('show_foto.php?album=$album&fotonr=$i', 'pix$i', 'width=$size[0], height=$size[1], innerwidth=$size[0], innerheight=$size[1], directories=no, location=no, menubar=no, scrollbars=no, status=no, toolbar=no, resizable=no, top=0, left=0, leftmargin=0, topmargin=0, marginwidth=0, marginheight=0, screenX=0, screenY=0' ); return false\">\n");  

        $entry_without_ext = eregi_replace("\.jpg$|\.jpeg$|\.gif$|\.bmp$|\.png$", "", $foto[$i]);

        // Bestaat thumb?
        switch (true) {
            case (is_file($thumbs."/".$entry_without_ext.".jpg")):
                $thumbnail = $thumbs."/".$entry_without_ext.".jpg";
                break;

            case (is_file($thumbs."/".$entry_without_ext.".jpeg")):
                $thumbnail = $thumbs."/".$entry_without_ext.".jpeg";
                break;

            case (is_file($thumbs."/".$entry_without_ext.".gif")):
                $thumbnail = $thumbs."/".$entry_without_ext.".gif";
                break;

            case (is_file($thumbs."/".$entry_without_ext.".bmp")):
                $thumbnail = $thumbs."/".$entry_without_ext.".bmp";
                break;

            case (is_file($thumbs."/".$entry_without_ext.".png")):
                $thumbnail = $thumbs."/".$entry_without_ext.".png";
                break;

            default:
                $thumbnail = "";
        }

        if ($thumbnail == "") {
            // Thumb bestaat niet
            if (! eregi("\.jpg$|\.jpeg$", $foto[$i])) {
                // Andere formaten dan jpg of jpeg zitten niet ingebouwd...
                echo "Geen thumbnail beschikbaar...<br>\n";
            } else {
                // Voor jpg/jpeg formaat: thumbnail maken
                ////echo "Nog geen thumbnail beschikbaar, wacht tot deze is aangemaakt...<br>\n";

                // Als nog geen directory voor de thumbs bestaat, deze aanmaken...
                if (! is_dir ($thumbs)) {
                    mkdir("$thumbs");
                }

                // Thumbs aanmaken kan even duren, voor iedere thumb de timeout klok
                // resetten, en een maximum van 20 seconden per thumb instellen.
                set_time_limit(20);

                // Voorlopig alleen jpp/jpeg support...
                // Voor het aanmaken van thumbs bij gif en png, moet hier wat worden bijgebouwd...
                $photo = imagecreatefromjpeg ("$album/$foto[$i]");

                // afmetingen bepalen
                $photo_width         = imagesx ($photo);
                $photo_height        = imagesy ($photo);
                
                // minimaal een van de afmetingen is groter dan $max_thumb..?
                if ($photo_width > $max_thumb_width || $photo_height > $max_thumb_height) {

                    // langwerpiger dan thumb??
                    if ($photo_width / $photo_height > $max_thumb_width / $max_thumb_height) {

                        // Langwerpiger dan thumb, de breedte van de thumb is bepalend
                        $new_thumb_width = $max_thumb_width;

                        // Hoogte berekenen:
                        $value = $photo_width / $max_thumb_width;
                        $new_thumb_height = round ($photo_height / $value);

                    } else { // niet langwerpiger...
                        // De hoogte van de thumb is bepalend...
                        $new_thumb_height = $max_thumb_height;

                        // Breedte berekenen
                        $value = $photo_height / $max_thumb_height;
                        $new_thumb_width= round ($photo_width / $value);
                    }

                } else {

                    // Foto is al klein genoeg, afmetingen worden overgenomen
                    $new_thumb_width    = $photo_width;
                    $new_thumb_height    = $photo_height;
                }

                // plaatje aanmaken, met de juiste afmetingen...
                $create_thumb = imagecreatetruecolor ($new_thumb_width, $new_thumb_height);

                // Plaatje kopieren en "resamplen"
                imagecopyresampled (
                    $create_thumb, 
                    $photo, 
                    0, 0, 0, 0,
                    $new_thumb_width, 
                    $new_thumb_height,
                    $photo_width,
                    $photo_height);

                // Bestand wegschrijven
                ImageJpeg ($create_thumb, $thumbs."/".$entry_without_ext.".jpg", 90);

                // thumbnail bestaat nu toch...
                $thumbnail = $thumbs."/".$entry_without_ext.".jpg";

                // Geheugen opschonen
                Imagedestroy($photo);

            }    // endif: Formaat van foto = jpg of jpeg
        }        // endif: Thumbnail bestaat niet

        $thumbsize = GetImageSize($thumbnail); 
        // Thumbnail weergeven...
        echo "<img src='$thumbnail' border=0 width=$thumbsize[0] height=$thumbsize[1] alt=$i>\n";

        // Titel onder thumbnail weergeven...
        echo "</a><br>$display<br><br></td>\n\n";

        // Einde van de row...?    
        if (($i % $cols) == $cols -1 ) {
            echo "</tr>\n<tr>\n"; 
        }

    }    // endfor: Alle plaatjes doorlopen...

    $pages        = ($aantal_fotos / ($cols * $rows)); 
    $nextpage    = ($page + 1); 
    $prevpage    = ($page - 1); 

    // bepalen of er wel of geen volgende en vorige moeten worden weergegeven...
    if (($page + 1) < $pages) { 

        // aantal op volgende pagina berekenen:
        $aantal_op_volgende = $aantal_fotos - $nextpage * $rows * $cols;

        // wanneer dit meer dan het aantal op één pagina is, dit terugschroeven tot het aantal op één pagina.
        if ($aantal_op_volgende > $rows * $cols) {
            $aantal_op_volgende = $rows * $cols;
        }

        // aantal op volgende is 1: in enkelvoud weergeven, anders aantal specificeren.
        if ($aantal_op_volgende == 1) {
            $volgende = "<a href=?album=$album&page=$nextpage>Volgende foto </a>"; 
        } else {
            $volgende = "<a href=?album=$album&page=$nextpage>Volgende ". $aantal_op_volgende ." foto's </a>"; 
        }
    } else {
        $volgende = "";
    }

    if (($page+1) > "1") { 
        // aantal op vorige is 1: in enkelvoud weergeven, anders aantal specificeren.
        if ($rows * $cols > 1) {
            $vorige = "<a href=?album=$album&page=$prevpage>Vorige ". ($rows * $cols) ." foto's </a>"; 
        } else {
            $vorige = "<a href=?album=$album&page=$prevpage>Vorige foto </a>"; 
        }
    } else {
        $vorige = "";
    } 

    if ($cols % 2 == 1) {
        $footer_colspan = "colspan=$cols";
    } else {
        $footer_colspan = "colspan=" . ($cols / 2);
    }
    
    // Footer, dit staat onder de tabel.
    echo "</tr><tr><td $footer_colspan align=right>    $vorige        </td>\n";
    echo "<td $footer_colspan align=left>        $volgende    </td>\n"; 
    echo "</tr>\n";
    echo "</table>\n"; 

}     // endif: Fotoalbum afdrukken...?    

    
?> 

</div>
</body>
</html>

Avatar
Reply · Quote carbonize (Administrator) #2
Member since Jan 2004 · 786 posts · Location: Bristol, UK
Group memberships: Administrators, Members
Show profile · Link to this post
I'd have to see it in action. Do you have a link?
C a r b o n i z e
Reply · Quote Ralf #3
Member since Jul 2005 · 36 posts
Group memberships: Members
Show profile · Link to this post
here you are:

http://foto.vaag-online.nl/fotoalbum.php?album=.
Avatar
Reply · Quote carbonize (Administrator) #4
Member since Jan 2004 · 786 posts · Location: Bristol, UK
Group memberships: Administrators, Members
Show profile · Link to this post
I could stop it putting them in alphabetical order but not sure if that would make a difference. To be sure about date order I would have to actually check the date a folder was made.

Anyway as a test open up fotoalbum.php and find
sort ($subdir);
and replace with
//  sort ($subdir);

Now it will just display the folders as it finds them.
C a r b o n i z e
Reply · Quote Ralf #5
Member since Jul 2005 · 36 posts
Group memberships: Members
Show profile · Link to this post
Your the greatest!! It works fine for me in this way!!
Reply · Quote Ralf #6
Member since Jul 2005 · 36 posts
Group memberships: Members
Show profile · Link to this post
Okay.....To early happy....

It does'nt work.

I don't understand what the scripts does after your suggested change....Some time a new map indeed is the first galaries, but sometimes it's not

a little overview of map dates and times:

 Aug 25 21:10 Lagerhuis
 Aug 26 22:02 b
 Aug 26 22:02 bestuur
 Aug 26 21:53 c
 Aug 25 21:10 test
 Aug 25 21:10 weekendwell
 Aug 26 22:08 zink

Now take a look at the script.  First one is "bestuurs" but "zink" was uploaded later.....
Reply · Quote Ralf #7
Member since Jul 2005 · 36 posts
Group memberships: Members
Show profile · Link to this post
OKay.  Its fixed but not with a ideal solution. A friend of my made it as follow:

mapname:

01_mapname
02_mapname

etc.etc.

Now through a modification in the script 01_ en 02_  is now printed on the screen.....So the mapnames are starting with a number.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please note the verification code from the picture into the text field next to it.
Smilies: :lmao: ':)' :hug: :-)) :shrug: :-' :lol: x-( :-x :'( :-o :-{} :-! :-? :"> :-(( B-) ;-) #-( :-# O_o TiT :-zZ :-) ZzZ
Special characters:
Reply
Go to forum
Unclassified NewsBoard 1.6.3 © 2003-6 by Yves Goergen
Page created in 322.3 ms (246.5 ms) · 70 database queries in 33 ms
Current time: 2009-01-06, 02:25:21 (UTC +00:00)