Avatar billede saudoo Nybegynder
13. december 2003 - 12:31 Der er 7 kommentarer og
1 løsning

Hjælp til billedgalleri!

Hej eksperter,

Jeg har et billedearkiv. Det er jeg godt tilfreds med, bortset fra een ting:
Hvis man f. eks. har 45 billeder. deler den dem og på sider af 15 pr. styk, og det er godt nok. Men, man kan ikke se hvor mange sider den laver. Der viser bare << >>.

----

Derfor vil jeg gerne spørge: Er der nogle der kan hjælpe mig med at lave det sådan: ex. << 1 2 3 4 5 6 7 8 9 >> ?

Herunder er koderne i billedgalleriet:

gall.php

<html>
<head>
<script type="text/javascript">
function PopUp(pic) {
    window.open("popup.php?pic="+pic,"Titel","width=100,height=100");
}
</script>
</head>

<body>

<?php
#Indstillinger
$sum = 4; // Antal billeder ved siden af hinanden
$sumcount = 1;
$imgwidth = 100; // Billedets bredde
$imgheight = 100; // Bileddets højde
$mappe = "billeder"; // Mappen med billeder
$pr_side = 15; // Antal billeder pr. side

if (isset($_GET['offset'])) {
    $offset = $_GET['offset'];
} else {
    $offset = 0;
}
$pics = $offset+$pr_side;
$i = $offset;

# Laver et array med billederne, så vi senere kan sortere dem alfabetisk
$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && !is_dir($mappe."/".$fil)) {
        $billeder[] = "$fil";
    }
}
closedir($handle);

# Udskriver billederne
sort($billeder);
while($i < $pics && $billeder[$i] != "") {
    echo "<a href=\"java script: PopUp('$mappe/$billeder[$i]')\"><img src=\"$mappe/$billeder[$i]\" border=\"1\" width=\"100\" height=\"100\"></a> ";
    if ($sumcount == $sum) {
        $sumcount = 0;
        echo "<br>";
    }
    $sumcount++;
    $i++;
}
?>
<hr>
<?php
#Udskriver frem og tilbage links
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href=\"?offset=$forrige\">Forrige</a> ";
}
if (count($billeder) > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href=\"?offset=$naeste\">Næste</a>";
}
?>

</body>
</html>


---------------------------


popup.php

<html>
<head>
<title>Stort billede</title>
<script>
function resize() {
    imgHeight = document.all.imgID.height;
    imgWidth = document.all.imgID.width;

    screenWidth = imgWidth+16;
    screenHeight = imgHeight+29;

    window.resizeTo(screenWidth,screenHeight);
    window.focus();
}
</script>
</head>
<body onload="resize()" style="margin: 0px">

<img src="<?php echo $_GET['pic']; ?>" id="imgID">

</body>
</html>
Avatar billede detox Nybegynder
13. december 2003 - 13:27 #1
Prøv at bytte:

<?php
#Udskriver frem og tilbage links
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href=\"?offset=$forrige\">Forrige</a> ";
}
if (count($billeder) > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href=\"?offset=$naeste\">Næste</a>";
}
?>


ud med:

<?php
#Udskriver frem og tilbage links
$antal_billeder = count($billeder);
$antal_sider = floor($antal_billeder/$pr_side)-1;
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href=\"?offset=$forrige\">Forrige</a> ";
} else {
    echo "Forrige ";
}
if ($antal_sider>0) {
    for ($i=0;$i<=$antal_sider;$i++) {
        $naeste = $i*$pr_side;
        echo "<a href=\"?offset=$naeste\">".($i+1)."</a> ";
    }
}
if ($antal_billeder > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href=\"?offset=$naeste\">Næste</a>";
} else {
    echo "Næste";
}
?>
Avatar billede saudoo Nybegynder
13. december 2003 - 13:28 #2
hmm... prøver lige.. tak :P
Avatar billede detox Nybegynder
13. december 2003 - 13:32 #3
hmm... rettede lige lidt:

<?php
#Udskriver frem og tilbage links
$billeder = range(1, 21);

$antal_billeder = count($billeder);
$antal_sider = floor($antal_billeder/$pr_side);
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href=\"?offset=$forrige\">Forrige</a> ";
} else {
    echo "Forrige ";
}
if ($antal_sider>0) {
    for ($i=0;$i<=$antal_sider;$i++) {
        $naeste = $i*$pr_side;
        echo "<a href=\"?offset=$naeste\">".($i+1)."</a> ";
    }
}
if ($antal_billeder > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href=\"?offset=$naeste\">Næste</a>";
} else {
    echo "Næste";
}
?>
Avatar billede detox Nybegynder
13. december 2003 - 13:35 #4
Sorry, den range skulle selvfølgelig ikke med (var kun til test):

<?php
#Udskriver frem og tilbage links
$antal_billeder = count($billeder);
$antal_sider = floor($antal_billeder/$pr_side);
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href=\"?offset=$forrige\">Forrige</a> ";
} else {
    echo "Forrige ";
}
if ($antal_sider>0) {
    for ($i=0;$i<=$antal_sider;$i++) {
        $naeste = $i*$pr_side;
        echo "<a href=\"?offset=$naeste\">".($i+1)."</a> ";
    }
}
if ($antal_billeder > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href=\"?offset=$naeste\">Næste</a>";
} else {
    echo "Næste";
}
?>
Avatar billede saudoo Nybegynder
13. december 2003 - 13:36 #5
Nice. det virker.. tak skal du have.. :D
Avatar billede detox Nybegynder
13. december 2003 - 13:39 #6
Hov lige en lille forbedring så den ikke lave links til den aktuelle side:

<?php
#Udskriver frem og tilbage links
$antal_billeder = count($billeder);
$antal_sider = floor($antal_billeder/$pr_side);
if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo "<a href=\"?offset=$forrige\">Forrige</a> ";
} else {
    echo "Forrige ";
}
if ($antal_sider>0) {
    for ($i=0;$i<=$antal_sider;$i++) {
        $naeste = $i*$pr_side;
        if ($naeste != $offset) echo "<a href=\"?offset=$naeste\">".($i+1)."</a> ";
        else echo ($i+1)." ";
    }
}
if ($antal_billeder > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo "<a href=\"?offset=$naeste\">Næste</a>";
} else {
    echo "Næste";
}
?>
Avatar billede detox Nybegynder
13. december 2003 - 13:40 #7
Og velbekommen ;o)
Avatar billede saudoo Nybegynder
13. december 2003 - 13:40 #8
tak..
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