Avatar billede AKjeldsen Novice
16. januar 2005 - 13:02 Der er 7 kommentarer og
1 løsning

Forrige/næste billede-funktion uden database

Jeg har for lang tid siden lavet et galleri-script, men folk synes der mangler en forrige/næste-funktion, hvilket jeg godt vil give dem ret i, men grunden til at jeg ikke har fået det lavet er at jeg ikke kan få det til at spille som det skal ;-)

Scriptet skal virke uden database, samt være ligeglad med om billederne er navngivet 001, 002... osv.

Den aktuelle kode ser sådan ud (Har klippet det unødvendige ud):

if (is_dir($dir)) {
    $handle=opendir($dir);
    $pics=array();
    $count=0;
    while (($filename = readdir($handle))!==false) {
        if (substr($filename,-4) == ".jpg" || substr($filename,-4) == ".JPG" {
            if (substr($filename,0,6) == "thumb_") {
                $pics[$count] = $filename;
                $count++;
            }
        }
    }
    closedir($handle);
    sort($pics);
    reset($pics);
    $antal = count($pics);

    if (isset($_GET["pic"])) {
        if (!file_exists(''.$dir.''.$_GET["pic"].'')) {
            echo '<div align="left">Fejl<br><li>Der findes ikke en fil med dette navn: '.$_GET["pic"].'</div><br><br><br>';
        } else {

            echo 'Du ser billed: '.$_GET["pic"].'<br><br>';
            echo '<img src="'.$dir.''.$_GET["pic"].'" alt="'.$_GET["pic"].'" class="boks"></a>';
        }
    }
}
Avatar billede www.denn.dk Nybegynder
16. januar 2005 - 13:04 #1
Jeg kan ikke svare på det, men fyha.. Du følger jeg jo ikke w3 standard ;)
Avatar billede AKjeldsen Novice
16. januar 2005 - 13:09 #2
Nej, ikke helt... ;-)

Kan forresten lige se at der mangler et ]. i fjerde sidste linie...
Avatar billede cmau Nybegynder
16. januar 2005 - 14:14 #3
Har ikke meget tid, men har lige kopiret fra noget jeg lavede engang:

<?php
$mappe = MAPPEN HVOR DER LIGGER BILLEDER I;
$vis_til = $vis_fra + 9;
$handle = opendir(''.$mappe.'');
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
$files[] = $file;
}
}
closedir($handle);
$antal_filer = sizeof($files);
$antal_sider = ceil($antal_filer / 9);
$as = floor($antal_filer / 9) * 9;

if(!$_GET[visfra]) { $vis_fra = 0; } else { $vis_fra = $_GET[visfra]; }
$vis_fra1 = $vis_fra;
$vis_til = $vis_fra + 9;
$i = 1;
echo '<div align="center"><center><table border="0" width="495" cellspacing="0" cellpadding="0"><tr>';
while(($vis_fra < $vis_til) && ($vis_fra < $antal_filer)) {
echo '<td width="165">';
echo '<div align="center"><table border="1" width="1" bordercolor="#000000" cellspacing="0" cellpadding="0" bordercolorlight="#000000" bordercolordark="#000000" height="1"><tr><td width="100%">';
echo '<a href="woox_vis.php?mappe='.$mappe.'&billede='.$files[$vis_fra].'" ';
?>
onClick="window.open(this.href, '_blank', 'left=0,top=0,width=400,height=300,scrollbars=no');return false;">
<?
echo '<center><img border="0" src="'.$mappe.'/'.$files[$vis_fra].'" width="125" height="125"></a></td></tr></table></div><br>&nbsp;</center></td>';
if($i == "3") {
echo '</tr><tr>';
$i = 0;
}
$i++;
$vis_fra++;
}
echo '<tr></table>';
$a = 1;
$vs = 0;
$antal_sider++;

if(($_GET[visfra] != 0) && ($_GET[visfra] != "")){
$back = $vis_fra1 - 9;
echo "<a href=\"?visfra=$back\">Forrige</a>&nbsp;";
}
while($a < $antal_sider) {
echo "<a href=\"?visfra=$vs\">$a</a>&nbsp;";
$vs = $vs + 9;
$a++;
}
if($_GET[visfra] != $as){
$next = $vis_fra1 + 9;
echo "&nbsp;<a href=\"?visfra=$next\">Næste</a>";
}
echo '</div>';
?>
Avatar billede jakoba Nybegynder
16. januar 2005 - 14:25 #4
Du har en variabel der hedder count og santidig bruger du den indbyggede php funktion der hedder count. Det kan godt være php kan hitte ud af det, men det forvirrer mig. (og sikkert også dig når du prøver at rette i koden om ½år)

if (is_dir($dir)) {
    $handle=opendir($dir);
    $pics=array();
    $count=0;
    while (($filename = readdir($handle))!==false) {
        if (substr($filename,-4) == ".jpg" || substr($filename,-4) == ".JPG" {
            if (substr($filename,0,6) == "thumb_") {
                $pics[$count] = $filename;
                $count++;
            }
        }
    }
    closedir($handle);
    sort($pics);
    reset($pics);            // hvorfor resette arrayet? du har aldrig itereret med det.
    $antal = count($pics);

    if (isset($_GET["pic"])) {
        if ( !in_array( $pics, $_GET["pic"] ) ) {
            echo '<div align="left">Fejl<br><li>Der findes ikke en fil med dette navn: '.$_GET["pic"].'</div><br><br><br>';
            $_GET['pic'] = $pics[0];        // vis default istedet
        }
    } else {
        $_GET['pic'] = $pics[0];            // vis default billede
    }

    if ( $antal > 0 ) {
        echo 'Du ser billed: '.$_GET["pic"].'<br>';
        echo '<img src="'.$dir.''.$_GET["pic"].'" alt="'.$_GET["pic"] ." class="boks"></a><br>';

        $billednummer = array_search( $pic, $pics );  // find index for billedet

        if ( $billednummer > 0 ) {                // skriv et 'forrige' link
            echo "<a href='" .$_SERVER['PHP_SELF'] ."?pic=" .$pics[$billednummer-1]
                  .">Forrige Billede</a><br>
        }
        if ( $billednummer < count($pics)-1 ) {  // skriv ey 'næste' link
            echo "<a href='" .$_SERVER['PHP_SELF'] ."?pic=" .$pics[$billednummer+1]
                .">Næste Billede</a><br>
        }
    } else {
        echo "der er slet ingen billeder i den mappe."
    }
}

mvh JakobA
Avatar billede jakoba Nybegynder
16. januar 2005 - 14:28 #5
Ups, i de to links glemte jeg at afslutte href stengen med en '
                  ."'>Forrige Billede</a><br>
Avatar billede AKjeldsen Novice
16. januar 2005 - 20:00 #6
Kan ikke få dit foreslag til at virke.
Avatar billede AKjeldsen Novice
17. januar 2005 - 19:21 #7
Vil stadig gerne have lidt hjælp hvis nogen skulle have en løsning...?
Avatar billede AKjeldsen Novice
18. januar 2005 - 17:15 #8
Nå, jeg har fået lavet en løsning som virker, med lidt inspiration fra jakobas indlæg...
Jakoba: Hvis du vil have point, så lav lige et svar...
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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