Avatar billede dj-hupi Nybegynder
19. oktober 2004 - 08:50 Der er 21 kommentarer og
1 løsning

Galleri som tæller/viser forkert vej

<?
//----  Settings Start ---\\
// Image Information
$imageWidth=110;
$imageHeight=80;

// Table Layout
$rows=3;
$cols=3;

//Image path
$libery="cimages/"; // remember to finish with /

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

$viewNum=$cols*$rows;
if(!$firstImage){ // so it works if you just enter gcichlider.php3 and show the pictures without having to define the variables in the path
                $firstImage=1;
}
function getImages($firstImage){
        global $viewNum, $imageWidth, $imageHeight,$cols,$libery;  //insures that the function gets the variables
        $handle=opendir($libery); //opens directory
        while($file=readdir($handle)){ // reads the directory
                $extension=substr($file,-4); // gets the extension of the files
                if(($extension == ".jpg") || ($extension == ".gif") || ($extension == ".png") ){ // 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>";
                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
                                print "<td><a href='".$libery."".$all[$i]."'><img src='".$libery."".$all[$i]."' border='0' width='$imageWidth' height='$imageHeight' alt='Klik for at forstørre'></a></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 "$start - $finish</a>&nbsp;&nbsp;";
                }
                else{ // makes the link
                        print "<a href='gcichlider.php3?libery=$libery&firstImage=$start'>$start - $finish</a>&nbsp;&nbsp;";
                }
        }
}
?>


Dette viser billeder jeg smider i en mappe og derefter opretter den 115-125 osv men jeg vil have de nyeste billeder til vise først når man kommer ind på siden ! P.s dette er en functions.inc fil
Avatar billede bojo Nybegynder
19. oktober 2004 - 08:56 #1
prøv at tilføje ksort( $all );  sidste linie her


function getImages($firstImage){
        global $viewNum, $imageWidth, $imageHeight,$cols,$libery;  //insures that the function gets the variables
        $handle=opendir($libery); //opens directory
        while($file=readdir($handle)){ // reads the directory
                $extension=substr($file,-4); // gets the extension of the files
                if(($extension == ".jpg") || ($extension == ".gif") || ($extension == ".png") ){ // checks for image files
                        $all[]=$file;  //adds positive results to the archive
                }
        }
ksort( $all );  // eller krsort for revers sort
Avatar billede dj-hupi Nybegynder
19. oktober 2004 - 09:03 #2
Virker ikke :/
Avatar billede bojo Nybegynder
19. oktober 2004 - 09:15 #3
hmmm - de kommer i rigtig rækkefølge hos mig med din kode
Avatar billede dj-hupi Nybegynder
19. oktober 2004 - 09:18 #4
Såååå krsort( $all ); virkede ;)

Taxa :) (opret svar)
Avatar billede bojo Nybegynder
19. oktober 2004 - 09:21 #5
nej pyt
Avatar billede dj-hupi Nybegynder
19. oktober 2004 - 09:21 #6
Hmmm fatter jeg ikke :S nu virker det ikke
Avatar billede bojo Nybegynder
19. oktober 2004 - 09:27 #7
sad også og undrede mig da den oprindelige kode virker her
Avatar billede bojo Nybegynder
19. oktober 2004 - 09:29 #8
prøv at ret din alt= i linie 40 til

alt='Klik for at forstørre $i'

så kan du jo se hvad den viser når musen er over
Avatar billede dj-hupi Nybegynder
19. oktober 2004 - 09:31 #9
bojo jeg forstår ikke helt det du mener :(
Avatar billede bojo Nybegynder
19. oktober 2004 - 09:39 #10
:-)

prøv at ret krsort($all) til asort($all);

ksort / krsort sortere på key og det er værdierne der skal sorteres.

Ret linie 41 så der står

print "<td><a href='".$libery."".$all[$i]."'><img src='".$libery."".$all[$i]."' border='0' width='$imageWidth' height='$imageHeight' alt='Klik for at forstørre $i $all[$i]'></a></td>";

istedet for

print "<td><a href='".$libery."".$all[$i]."'><img src='".$libery."".$all[$i]."' border='0' width='$imageWidth' height='$imageHeight' alt='Klik for at forstørre'></a></td>";

så kan du ved at holde musen over et billede se både nummer i dit array og filnavnet
Avatar billede dj-hupi Nybegynder
19. oktober 2004 - 10:20 #11
Oki det er gjort jeg for stadig ikke de byeste billeder først ! men kan se array og filnavnet
Avatar billede bojo Nybegynder
19. oktober 2004 - 10:38 #12
så kan du se hvilke filnavne der kommer hvor.

Er sorteringen ok?

der skulle gerne komme noget ala dette

0 1.jpg    1 2.jpg    2 3.jpg

3 4.jpg    4 5.jpg    5 6.jpg

osv

Problemet er at readdir levere filerne i den rækkefølge de er lagt på først




Er alle filnavne med lige mange cifre? ellers går der vist "ged" i sorteringen da der sorteres på tekst så 10 kommer før 2 da 1 er før 2 osv
Avatar billede dj-hupi Nybegynder
19. oktober 2004 - 10:45 #13
Sorteringen er som du viser der 0 1.jpg    1 2.jpg    2 3.jpg osv ...
Billederne har alle mulige navne og er ikke i alfabetisk rækkefølge eller noget ...
Avatar billede bojo Nybegynder
19. oktober 2004 - 10:51 #14
hmmm - sidste udvej - nahhhh vi finder ud af det

her sortere jeg selv, men det kræver at der kun er tal i billedernes navne.

Lettere at gi det hele end at forklare:


<?php

//----  Settings Start ---\\
// Image Information
$imageWidth=110;
$imageHeight=80;

// Table Layout
$rows=3;
$cols=3;

//Image path
$libery="cimages/"; // remember to finish with /

// Settings Stop----------//
$slut_tr="";
$viewNum=$cols*$rows;
if(!$firstImage){ // so it works if you just enter gcichlider.php3 and show the pictures without having to define the variables in the path
                $firstImage=1;
}
function getImages($firstImage){
        global $viewNum, $imageWidth, $imageHeight,$cols,$libery;  //insures that the function gets the variables
        $handle=opendir($libery); //opens directory
        while($file=readdir($handle)){ // reads the directory
                $extension=substr($file,-4); // gets the extension of the files
                if(($extension == ".jpg") || ($extension == ".gif") || ($extension == ".png") ){ // checks for image files
                        $all[]=$file;  //adds positive results to the archive
                }
        }
        usort($all, "cmp");
        $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>\n";
                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 $slut_tr."<tr>\n";
                                        $slut_tr="</tr>\n";
                                } // add the image
                                print "<td><a href='".$libery."".$all[$i]."'><img src='".$libery."".$all[$i]."' border='0' width='$imageWidth' height='$imageHeight' alt='Klik for at forstørre $i $all[$i]'></a></td>\n";
                        }
                        else{ // stop if no more images
                                break;
                        }
                }
                print "</tr>\n</table>\n<br>\n";
                $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 "$start - $finish</a>&nbsp;&nbsp;";
                }
                else{ // makes the link
                        print "<a href='gcichlider.php3?libery=$libery&firstImage=$start'>$start - $finish</a>&nbsp;&nbsp;";
                }
        }
}

function cmp($a, $b)
{
    $a1 = trim( $a, substr($a,-4) );
    $b1 = trim( $b, substr($b,-4) );

    if ($a1 == $b1) {
        return 0;
    }
    $rc = ((int)$a1 < (int)$b1) ? -1 : 1;
    return $rc;
}

?>
Avatar billede dj-hupi Nybegynder
19. oktober 2004 - 11:58 #15
Jaah det dur bare ikke rigtig :/ ...
Lav et svar kan være jeg kan bruge det på et senere tidspunkt :)
Avatar billede bojo Nybegynder
19. oktober 2004 - 12:16 #16
nej tak, men det er sq sært - hvis dine billeder navne kun indeholder tal skal den sidste løsning her virke - se på http://bojo.tulstrup.net/test/
Avatar billede sostack Nybegynder
19. oktober 2004 - 14:05 #17
Avatar billede sostack Nybegynder
19. oktober 2004 - 14:14 #18
Evt:
<?php
function hent_billeder($stien)
{
    $dh = opendir($stien);
    while(false !== $filnavn = readdir($dh))
    {
        if("." != $filnavn && ".." != $filnavn)
        {
            $filnavne[filectime($stien . "/" .$filnavn)] = $filnavn;
        }
    }
    return krsort($filnavne);
}
?>

//sostack
Avatar billede bojo Nybegynder
19. oktober 2004 - 14:48 #19
har jeg nu lagt i sort funktionen og det virker ( også ) - tak sostac

function cmp($a, $b)
{
  global $libery;
    $a1 = filemtime($libery.$a);
    $b1 = filemtime($libery.$b);

    if ($a1 == $b1) {
        return 0;
    }
    $rc = ($a1 > $b1) ? -1 : 1;
    return $rc;
}
Avatar billede bojo Nybegynder
22. oktober 2004 - 23:40 #20
lav lige et svar selv så dit spg. lukkes :-)
Avatar billede dj-hupi Nybegynder
14. juni 2005 - 11:31 #21
:)
Avatar billede dj-hupi Nybegynder
14. juni 2005 - 11:32 #22
Hov
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