Avatar billede troller Nybegynder
25. august 2004 - 22:13 Der er 2 kommentarer og
1 løsning

et billedarkivs finpudserier (3 opgaver)

Jeg har efterhånden, med hjælp fra eksperten.dk, fået kodet et brugbart billed-script. Men jeg mangler lige et par finpudserier.

Først vil jeg lige forklare at jeg har navngivet mine billeder med 3 cifre (ex. 005.jpg), for at undgå at 1x.jpg bliver sorteret før 2.jpg (ex. 1.jpg, 10.jpg, 11.jpg, 12.jpg, 2.jpg, 3.jpg, 4.jpg...). Men mit script insisterer på at udskrive (på siderne med thumbnails) en fil 000.jpg. Jeg har så omdøbt alle billederne, men det ville være en del smartere hvis scriptet brugte 001.jpg som det første billede.

Når man klikker på thumbnailsene, så kommer man til en side med det egentlige billede. Ovenover billedet findes en forrige- og næste-funktion, sådan at brugeren kan bladre imellem billederne. Problemet er bare at scriptet ikke kan opfange om man står ved det første eller sidste billede, for derefter at udelade udskrivningen af henholdsvis "forrige"- eller "næste"-funktionen.

Det tredje problem er at scriptet ikke selv kan opfange og udskrive antallet af billeder således at "billede x / y" ikke fungere automatisk. Her er tale om y, jeg har fundet en løsning til x, ved at hente noget fra headeren.

Oversigt over mangler:

1) Scriptet startes ved 001.jpg, ikke 000.jpg. Husk at siderne med thumbnailsene også skal tilpasses.

2) Scriptet opfanger om man står ved det sidste eller første billede, og undlader i så fald at udskrive et link.

3) Scriptet udskriver automatisk antallet af billeder under mappen "img". Her kan man evt. genbruge noget kode fra side-opdelingen. Jeg har dog ikke fået det til at virke.

4) Jeg er generelt ligeglad med min kode. Så hvis I kan finde en god grund til at slette eller erstatte noget, så vil jeg blive glad. Jeg stiler efter en bedre gennemskuelighed.

Siden i funktion: www.trolleri.dk/DOOM3
Kildekode: www.trolleri.dk/DOOM3/index.txt
Avatar billede pgm Nybegynder
26. august 2004 - 01:30 #1
hey,

Løsning på #1.
Problemet ligger i linien:
for($i=($p-1)*$img_pr_page;$i<$p*$img_pr_page;$i++) {

her har du jo din $p som angiver side tallet!
ved side side sker der jo det at
$p = 1;
$i = $p-1; // $i = 1-1;
$i = 0;

Du udskriver så senere:
<img src=\"tn/tn_00".$i.".jpg\"
hvilket jo vil give tn_000.jpg ved første post!
Så fjern det med at den skal trække een fra...

evt kunne du gøre den "nemme" udvej:

gå til linien med
if( $p < 1 || $p > $max_page )
    $p = 1;

og ændre det til

if( $p < 1 || $p > $max_page )
    $p = 2;

Så burde det problem være løst.

Løsning på #3:
Dette er "bare" kopieret fra et gammelt galleri script jeg havde liggende på min harddisk... måske skal det tilpasses lidt efter dit... men kan give en idé om hvordan du skal løse dit problem.

$mappe = "./img"; #+- Hvilket bibliotek skal læses... "." giver det bibliotek som denne side ligger i. eller "./billeder" for domæne.dk/billeder mappen.

$handle = opendir($mappe);

#+-- oprette et array og sætter tælleren til 0.
$filnavnePaaBillederne = array();
$i = 0;

#+-- Kikker det valgte bibliotek efter for billed filer, kun typer der er angivet nedenfor.

while (($filename = readdir($handle))!==false) {
  #+-- I den følgende if sætning kan du indsætte flere formater. ved at skrive ' substr($filename,-4) == ".jpg" || substr($filename,-4) == ".bmp" '
  if (substr($filename,-4) == ".jpg" ){
    if (substr($filename,0,3) != "tn_"){ # Tæller kun de .jpg filer der har et thumbnail med! Fjern dette hvis du ikke ønsker dette eller vil have en anden søge parameter.
      $filnavnePaaBillederne[$i] = $filename;
      $i++;
    }
  }
}

$antal = COUNT($filnavnePaaBillederne);
echo $antal; # Udskriver antal billeder i mappen!


Løsning på #2:

her bruger du variablen $antal fra løsning #3 til at have det fulde antal billeder som du beregner udfra!
<div align="center" class="font">[
<?php
if ( $_GET[img] != "001" ) {
echo "<a href=\"./";
        if($_GET[img]-1 > -1 && $_GET[img]-1 < 10){ echo"?img=00".($_GET[img]-1);}if($_GET[img]-1 > 9 && $_GET[img]-1 < 100){ echo"?img=0".($_GET[img]-1);} if($_GET[img]-1 > 99 && $_GET[img]-1 < 1000){ echo"?img=".($_GET[img]-1);}
echo "\">Forrige</a>";
} else {
echo "Forrige";
}
?> ] - <?php echo "$_GET[img] / 314"; ?> - [
<?php
if ( $_GET[img] != $antal || $_GET[img] < $antal ) {
  echo "<a href=\"";
        if($_GET[img]+1 > -1 && $_GET[img]+1 < 10){echo"?img=00".($_GET[img]+1);} if($_GET[img]+1 > 9 && $_GET[img]+1 < 100){echo"?img=0".($_GET[img]+1);} if($_GET[img]+1 > 99 && $_GET[img]+1 < 1000){echo"?img=".($_GET[img]+1);}
  echo "\">Næste</a>";
} else {
echo "Næste";
}
?>
]</div>

Tror det var det...

Spørg hvis der er noget du ikke forstår eller ikke virker helt efter planen...
Avatar billede troller Nybegynder
26. august 2004 - 22:58 #2
pgm, tak for dit svar.

Dine to sidste svar, 3 og 2, har jeg fået til at virke i scriptet, og det er takket være din hjælp. Men det første svar virker ikke helt efterhensigten, da siderne med thumbnails ikke har "fattet", at scriptet skal starte med 001 og ikke 000.

jeg havde et lignende problem, som dog blev løst her

http://www.eksperten.dk/spm/529386

ny testside
http://www.trolleri.dk/DOOM3/test

ny kildekodea
http://www.trolleri.dk/DOOM3/test/index.txt
Avatar billede troller Nybegynder
31. august 2004 - 15:11 #3
er du stadig med i forummet ?
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