Avatar billede Dazzle Novice
27. september 2007 - 19:38 Der er 9 kommentarer

Galleri med paging

Hej eksperter

Jeg har noget kode, som gerne skulle hente nogle billeder fra en mapper og vise dem i et paging-system. Men der er en fejl, jeg får hele tiden at vide, at mappen er tom. KAn nogen fortælle mig hvad problemet er? Koden ser ud som følgende:

<?php
    # Indstillinger
$mappe = "fotoalbum";
$pr_side = 5; // Antallet af billeder pr. side

if (!is_numeric($_GET['offset']))
{
    $offset = 0;
}
else
{
    $offset = $_GET['offset'];
}

$pics = $offset+$pr_side;
$i = $offset;

# Laver et array med billederne
$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false)
{
    if ($fil != "." && $fil != ".." && (substr($fil,-3) == "jpg" || substr($fil,-4) == "jpeg"))
    {
        $billeder[] = $fil;
    }
}

closedir($handle);
rsort($billeder);

echo "<div class='overskrift'>FOTOALBUM 2004</div><br>\n";
echo "<table class='standard'>";

#Udskriver links
if ($offset >= $pr_side)
{
    $forrige = $offset-$pr_side;
    echo "<tr><th class='back'><a href=\"?offset=$forrige\">Forrige</a></th>";
}
else
{
    echo "<tr><th class='back'><img src='images/trans.gif' alt='trans.gif'></th>";
}

if (count($billeder) > $offset+$pr_side)
{
    $naeste = $offset+$pr_side;
    echo "<th class='forward'><a href=\"?offset=$naeste\">Næste</a></td></th>";
}
else
{
    echo "<th class='back'><img src='images/trans.gif' alt='trans.gif'></th></tr>";
}

# Udskriver billederne
if(count($billeder))
{
    while($i < $pics && $billeder[$i] != "")
    {
        $size = getimagesize($mappe."/".$billeder[$i]);
        if ($size[2] == 2)
        {
            if ($size[0] > 400)
            {
                echo "<tr><td colspan=2 class='center'><img width='400px' border='no' alt='".$billeder[$i]."' src='".$mappe."/".$billeder[$i]."'></td></tr>";
            }
            else
            {
                echo "<tr><td colspan=2 class='center'><img border='no' alt='".$billeder[$i]."' src='".$mappe."/".$billeder[$i]."'></td></tr>";
            }
        }
        //echo "<tr><td colspan=2 class='center'><img src='".$mappe."/".$billeder[$i]."' border=0></td></tr>";
        $i++;
    }
}
else
{
    echo "<tr><td colspan=2 class='center'>Der er ingen billeder i albummet...</td></tr>";
}

echo "</table>";
?>
Avatar billede nielle Nybegynder
27. september 2007 - 20:03 #1
Har du prøver at udskrive hele $billeder arrayer? Er der overhovedet noget i det?
Avatar billede showsource Seniormester
27. september 2007 - 20:09 #2
Du kan prøve med:

$mappe = "fotoalbum/"; // SÆTTER EN SKRÅSTREG
$pr_side = 5; // Antallet af billeder pr. side

$offset = 0;

if (true = ($nr = (int)$_GET['offset']))
{
    $offset = nr;
}

$pics = $offset+$pr_side;
$i = $offset;

# Laver et array med billederne

if(is_readable($mappe)) { // FINDES DIR OG ER DET LÆSBART

    $handle = opendir($mappe);
    while (($fil = readdir($handle)) !== false)
    {
        if (is_file(4mappe . $fil) && (substr(strtolower($fil),-3) == "jpg" || substr(strtolower($fil),-4) == "jpeg"))
        {
        $billeder[] = $fil;
        }
    }

    closedir($handle);

}else{

echo"Fejl i setup!";
exit;

}
Avatar billede Dazzle Novice
27. september 2007 - 20:21 #3
Jeg har også fundet ud af at der ikke kommer noget i mit array.. Skal jeg have instancieret $billeder inden jeg går i whileløkken og i så fald, hvordan ?
Avatar billede showsource Seniormester
27. september 2007 - 20:27 #4
jahhh, prøv at bruge $billeder = array;
inden du læser igennem
Avatar billede Dazzle Novice
27. september 2007 - 20:36 #5
Virker desværre ikke :(
Avatar billede nielle Nybegynder
27. september 2007 - 21:12 #6
Prøv med lidt debugging:

$billeder = array();
while (($fil = readdir($handle)) !== false)
{
    echo "DEBUG: mulig kandidat: $fil<br>";

    if (is_file(4mappe . $fil) && (substr(strtolower($fil),-3) == "jpg" || substr(strtolower($fil),-4) == "jpeg"))
    {
        $billeder[] = $fil;
        echo "DEBUG: godkendt kandidat: $fil<br>";
    }
}
Avatar billede showsource Seniormester
27. september 2007 - 21:35 #7
ehe,
$billeder = array();
Avatar billede nielle Nybegynder
27. september 2007 - 21:43 #8
"4mappe" skal vel være "$mappe" :^)
Avatar billede nielle Nybegynder
07. oktober 2007 - 11:08 #9
Har du fået det til at virke?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester