Avatar billede troller Nybegynder
15. august 2004 - 12:57 Der er 12 kommentarer og
1 løsning

Indel et billedarkiv i flere sider

Jeg har lavet et billedarkiv som ser sådan ud:
Kode: www.trolleri.dk/DOOM3/index.txt
Eksempel: www.trolleri.dk/DOOM3/

viewer.php tager bare "img=dir/filnavn" fra adresselinien.

Da jeg gerne vil have mit billedarkiv til at opdele sig på flere sider, har jeg været nødsaget til at opdele mine billeder i undermapper  for derefter at lave IF-sætninger, som henter billederne fra img1 hvis page=1, img2 hvis page=2 osv.
Jeg vil derfor gerne bede om hjælp til at få min PHP-kode til automatisk at indele billeder på flere sider, sådan at alle billederne ligger i EN mappe (thumbnailsene i en anden). Altså alle sammen i img, og ikke i img1, img2, img3 osv., og at der max bliver 60 thumbnails per side.

www.trolleri.dk/DOOM3/?page=1
Det skal således give thumbnailsene for billederne fra 001.jpg til 060.jpg

www.trolleri.dk/DOOM3/?page=2
Det skal således give thumbnailsene for billederne fra 061.jpg til 120.jpg
Avatar billede dennismp Nybegynder
15. august 2004 - 13:07 #1
Har du prøvet at læse artiklen "Paging i PHP" ? Eller søge lidt tilbage - jeg er da ret sikker på at jeg har besvaret dette spørgsmål en del gange :)

http://www.eksperten.dk/artikler/315
Avatar billede troller Nybegynder
15. august 2004 - 13:13 #2
Nej, jeg har ikke købt mig adgang, ville være dejligt hvis nogen ville dele deres viden med mig gratis.

Noget som desuden driller mig er at når man kigger på kildekoden, kan man se at der bliver en unødvendig omgang "<div align="center" class="font"></div>" efter alle 60 billeder. Er det muligt at få scriptet til automatisk at slette den sidste omgang af tabels ? Jeg får kun den sidste omgang af kode, fordi 60 netop igen er deleligt med 6.
Avatar billede dennismp Nybegynder
15. august 2004 - 13:23 #3
hehe, du bruger gerne 30 points på et spørgsmål, som du ikke vil give 2½/5 points for at evt løst igennem en artikel :)

Bliver alle filerne fremover lagt i samme directory?
Avatar billede troller Nybegynder
15. august 2004 - 13:29 #4
hmnn..du siger noget :) - nå ligemeget

Ja:
/index.php
/viewer.php
/img/001.jpg
/img/002.jpg
/img/003.jpg osv.
...
/tn/tn_001.jpg
/tn/tn_002.jpg
/tn/tn_003.jpg osv.
...
Avatar billede dennismp Nybegynder
15. august 2004 - 13:33 #5
Så den skal finde alle filerne i alle subdirectories - og så inddele dem i sider?

Hvordan ved man at "img" skal vises før "tn" ?
Avatar billede troller Nybegynder
15. august 2004 - 13:43 #6
nej, ideen med mit script er, at linkene kører i løkker. Sådan at man er sikker på at billederne får den rigtige rækkefølge. Det andet man give nogle gevaldige spring i filnavnene, sådan at billederne bliver opstillet forkert.
se f.eks. her:
kode: www.trolleri.dk/DOOM3/img1/index.txt
eksempel: www.trolleri.dk/DOOM3/img1/

Det jeg har gjort er at skrive:

$max = 61;
for($i = 1; $i < $max; $i++){
if($i < 10){print("<a href=\"viewer.php?img=img1/00".$i.".jpg\"><img src=\"tn1/tn_00".$i.".jpg\" alt=\"00".$i.".jpg\" border=\"0\" /></a>
");}
if($i > 9 && $i < 100){print("<a href=\"viewer.php?img=img1/0".$i.".jpg\"><img src=\"tn1/tn_0".$i.".jpg\" alt=\"0".$i.".jpg\" border=\"0\" /></a>
");}
if($i > 99 && $i < 1000){print("<a href=\"viewer.php?img=img1/".$i.".jpg\"><img src=\"tn1/tn_".$i.".jpg\" alt=\"".$i.".jpg\" border=\"0\" /></a>
");}
if(!($i%6)){print("</div><div align=\"center\" class=\"font\">
");}
}

Sådan at man er sikker på at sidens kildekode bliver rigtigt opstillet med den rigtige nummereringsrækkefølge.

Det jeg vil have siden til er at køre den samme slags løkke, men stoppe efter 60 billeder, sådan at man kan starte hvor man slap på side to.
Avatar billede troller Nybegynder
15. august 2004 - 13:47 #7
Hvordan ved man at "img" skal vises før "tn" ?

det skal de heller ikke. "tn" er mappen med alle thumbnailsene (de billeder som vises på selve siden), og "img" er mappen med alle de store billeder (som først skal vises når man klikker på thumbnailsene)

Dette er bare en liste over hvordan filerne skal placeres på serveren:
/index.php
/viewer.php
/img/001.jpg
/img/002.jpg
/img/003.jpg osv.
/tn/tn_001.jpg
/tn/tn_002.jpg
/tn/tn_003.jpg osv.
Avatar billede dennismp Nybegynder
15. august 2004 - 13:53 #8
Lad os lige lave en lille test;

Prøv at gemme dette i en fil. Kald det.. Skriver den så de rigtige filnavne ud? Hvad vis du skriver filnavn.php?page=2 .. passer det?

<?php
$img_pr_page = 60;

if( isset($_GET['page']) )
  $page = $_GET['page'];
else
  $page = 1;

$list = glob("img/*.jpg");

for($i=($page-1)*$img_pr_page;$i<$page*img_pr_page;$i++) {
  print "Her skal {$list[$i]} vises</br>";
}
?>
Avatar billede troller Nybegynder
15. august 2004 - 14:38 #9
der kommer ikke rigtigt noget:
www.trolleri.dk/DOOM3/test.php
Avatar billede dennismp Nybegynder
15. august 2004 - 14:53 #10
Jeg har udvidet koden lidt (men det er stadig de samme principper):

Du kan se koden (i funktion) her:
http://dennis.moellegaard.dk/v4/php/529386.php?page=1

og koden:
http://dennis.moellegaard.dk/v4/php/529386.php?source=2

Jeg har ikke thumbnails og min "img" hedder så fileupload .. Men hvis du bare kan få det til at virke på dit - så skulle det være nemt at rette til.
Avatar billede troller Nybegynder
16. august 2004 - 18:23 #11
weee... Tak dennismp, det kunne jeg bruge til meget, jeg er kommet langt ved bare at rode lidt med det!

Jeg har dog stadig et par problemer :)

Efter at have panglet med koden frem og tilbage, har jeg stadig et problem jeg ikke kan finde ud af at løse! Scriptet udskriver en "000.jpg" i en række helt for sig, hvordan ændrer man scriptet til at vise noget i retning af: www.trolleri.dk/DOOM3 ?

Du kan se min testside med mit nye script her:
Kode: www.trolleri.dk/DOOM3/test/index.txt
Eksempel: www.trolleri.dk/DOOM3/test/

Jeg fandt selv ud af at løse problemet med de ekstra "<div align="center" class="font"></div>" i bunden af udskrivningen.

Til sidst vil jeg gerne bede dig om at oprette et svar, sådan at du kan få nogle point :)
Avatar billede dennismp Nybegynder
16. august 2004 - 19:39 #12
Jeg tror du kan rette:
if(!($i%6)){print("<br/>");}
til:
if(($i+1)%6==0) print("<br/>");
Avatar billede troller Nybegynder
16. august 2004 - 20:01 #13
Tak. Det løste problemet :)
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