Avatar billede h_thunbo Nybegynder
20. juni 2006 - 19:23 Der er 8 kommentarer og
1 løsning

billed galleri; skal have vist billederne i omvendt rækkefølge

Hej Eksperter...
Jeg har et billedgalleri med følgende script, som jeg har fundet her på eksperten:

//----  Settings Start ---\\
// Image Information

// Table Layout
$rows=300;
$cols=5;

//Image path
$libery="./upload/billeder/small/"; // remember to finish with /

// Settings Stop----------//

$viewNum=$cols*$rows;
if(!$firstImage){ // so it works if you just enter default.php and show the pictures without having to define the variables in the path
        $firstImage=1;
}
function getImages($firstImage){
    global $viewNum, $cols,$libery;  //insures that the function gets the variables
    $handle=opendir($libery); //opens directory
    while($file=readdir($handle)){ // reads the directory
        $extension=substr($file,-5); // gets the extension of the files
        if(($extension == ".jpeg")  ){ // checks for image files
            $all[]=$file;  //adds positive results to the archive
        }
    }
    $colscounter=0; // variable that controls the tablebuilding system below
    $firstImage--; // variable that insures that the first image is being showed. Case: It looks best if the links begins with 1 but the array begins with 0
    if(isset($all)){  // if array is set build the table
        print "<table width='100%' cellpadding='0' cellspacing='0'>";
        for($i=$firstImage; $i < $firstImage+$viewNum; $i++){
            if($all[$i]){ // checks for rinning dry of imges
                if($i==$firstImage + $colscounter*$cols){ // if true: new row
                    $colscounter++;
                    print "<tr>";
                } // add the image
                $filenm = "./upload/billeder/large/". $all[$i];
                list($width, $height, $type, $attr) = getimagesize("$filenm");

                print "<td height='120' align='center'><a href='".$filenm."'><img src='".$libery."".$all[$i]."' border='0' </td>";
         
            }
            else{ // stop if no more images
                break;
            }
        }
        print "</table><br>";
        $num=count($all);  //number of pictures in actual libery
        makeList($num); // function to make the links list
    }
    else{
        print "Der var desværre ingen billeder i dette bibliotek<br><a href='java script:history.back()'>Go Back</a>";
    }
}
function makeList($num){
    global $libery, $firstImage, $viewNum; //insures that the function gets the variables
    $numLinks = $num / $viewNum; // finds the number og links to be maked
    for($a=0; $a < $numLinks;$a++){
            $start=$a*$viewNum+1;  //adds 1 because then the links begins with ex. number 1-10 and 11-20 instead of 0-10 and 10-20
            $finish=$a*$viewNum+$viewNum;
            if($finish>$num){ // insures that the final link returns the right amount of pictures instead of to much
                $finish=$num;
            }
        if(($firstImage >= $start) && ($firstImage < $a * $viewNum+$viewNum)){ // if true: makes no link because you already are on the page
            print "Ialt: $finish</a>&nbsp;&nbsp;";
        }
        else{ // makes the link
            print "<a href='default.php?libery=$libery&firstImage=$start'>$start - $finish</a>&nbsp;&nbsp;";
        }
    }
}
?>

<?
getImages($firstImage);
?>


Hvor man først ser billeder fra fra ./upload/billeder/small/
Hvorefter man kan klikke på billederne og man får så billederne fra ./upload/billeder/large/... Det fungere fint nok.

Problemet er bare den rækkefølge billederne er stillet op i, i tabellen, som man ser. Billederne er alle nogle der er blevet uploadet, men når man uploader et nyt billede kommer det frem nederst på siden. Jeg vil gerne have det øverst. Selve upload delen virker fint. Billederne får deres navne således:

$tid = time();

$nytNavn = $tid . "_" . rand(1, 1000000) . "." . "jpeg";

Og bliver derefter gemt i både ./upload/billeder/small/ og ./upload/billeder/large/ med samme navn.

dvs navnene på billederne starter alle med tiden (som lige nu er omkring 115080xxxx_osv.jpeg



Kan man måske indsætte en linje i mit script så jeg får det sidst uploadede billede først i tabellen?

Eller er det nemmere at lave min måde, at omdøbe billederne på om (altså når de bliver uploadet)?

Håber mit spørgsmål er til at forstå, ellers spørg efter hvad der virker forvirrende...

Det er mit første spørgsmål her på eksperten (er temmelig nybegynder) så ved ikke så meget om point, men nu prøver jeg at give 30 point til den der kan hjælpe.
Avatar billede h_thunbo Nybegynder
20. juni 2006 - 22:06 #1
Derudover kunne jeg også godt tænke mig at vide om det er muligt at skrive en beskrivelse til billedet man uploader UDEN at det skal på SQL db? Har jeg ikke snart forhøjet pointe nok? Troede ikke det var noget der ville tage lang tid for eksperter? Jeg hæver lidt mere...
Avatar billede hjochums Nybegynder
21. juni 2006 - 09:53 #2
Lav din readdir løkke om, så den gemmer fil + oprettelses dato i et array.

f.eks:
$all[]=array ('filename' => $file, 'date' => fileatime($file));

Med denne kan du bruge usort (Sort an array by values using a user-defined comparison function )

Ang. teksterne.. så kan du evt. lave en fil mere pr. billede som indeholder teksten (f.eks. 'billedfilnavn' + '.txt'). Men jeg ville nok fortrække DB løsning :)
Avatar billede h_thunbo Nybegynder
21. juni 2006 - 13:51 #3
Jeg har bare utrolig dårlige erfaringer med DB. Jeg bøvler bl.a. altid med at få sat datoen ind i DB. Men jeg er også meget ny inden for området...
Men det kunne godt være det blev en løsning...
Men du sir jeg skal gemme fil + oprettelses dato i et array, så det er faktisk selve upload scriptet jeg skal lave om, og ikke visningen af billederne?

Eller er det bare denne linje:
  while($file=readdir($handle)){ // reads the directory
der skal laves om?

Skal jeg søge lidt på "usort" her på eksperten for ved ikke lige hvordan den bruges?

Undskyld, hvis jeg ikke fatter en bjælde...
Avatar billede hjochums Nybegynder
21. juni 2006 - 13:58 #4
Ja, du skal gøre det ved while($file=readdir($handle)){ // reads the directory
istedet for $all[]=$file;  //adds positive results to the archive

Ang. usort så kig her: http://dk.php.net/manual/en/function.usort.php

Tror faktisk du kan bruge nedenstående:

function cmp($a, $b)
{
  if ($a['date'] == $b['date']) {
      return 0;
  }
  return ($a['date'] < $b['date']) ? -1 : 1;
}

usort($all, "cmp");
Avatar billede h_thunbo Nybegynder
24. juni 2006 - 10:49 #5
Først, undskyld jeg er så langsom. Jeg blev HTX student d.22 og ja... der sker jo en masse ting og sager så. Men nu sku jeg være nogenlunde stabil igen snart...

Jeg kan ikke helt få det til at virke. Jeg forstår nok ikke hvad du mener med;
Ja, du skal gøre det ved while($file=readdir($handle)){ // reads the directory
istedet for $all[]=$file;  //adds positive results to the archive

Skal jeg slette
while($file=readdir($handle)){ // reads the directory
skal linjen blive stående bare ... nej, jeg forstår det ikke? Vil du færdig gøre linjerne?

undskyld jeg er besværlig!
Avatar billede h_thunbo Nybegynder
24. juni 2006 - 11:24 #6
Lige nu har jeg det til at se sådan ud:

function getImages($firstImage){
    global $viewNum, $cols,$libery;  //insures that the function gets the variables
    $handle=opendir($libery); //opens directory
    while($file=readdir($handle)){ // reads the directory

        $all[]=array ('filename' => $file, 'date' => fileatime($file));

        $extension=substr($file,-5); // gets the extension of the files
        if(($extension == ".jpeg")  ){ // checks for image files
           
    }

Men det virker ikke. Det er jo nok fordi jeg ikke får kaldt array'et rigtigt senere eller hvad?
Avatar billede h_thunbo Nybegynder
24. juni 2006 - 11:38 #7
Når jeg prøver det af, er alle billeder et link til:
upload/billeder/large/Array
så det er nok den linje her:
$all[]=array ('filename' => $file, 'date' => fileatime($file));
Der er noget galt med... ???
Avatar billede h_thunbo Nybegynder
18. juli 2006 - 22:29 #8
hvordan mon jeg lukker den her?
Avatar billede vejgaard82 Nybegynder
11. november 2007 - 13:30 #9
Hvor henne er den fundet her inde?
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