Avatar billede birkebjerg Nybegynder
04. februar 2003 - 00:03 Der er 7 kommentarer og
1 løsning

Random image med 8 billeder på en side

Hejsa!

Jeg skal bruge et script til at sørge for at min forsides 8 billeder skifter tilfældigt. Når siden vises så skal de alle sammen være forskellige. Jeg har prøvede at søge på nettet, men storset uden resultat.

Det jeg dog har fundet er http://www.eksperten.dk/spm/248505, der kan gøre det med 2 billeder. Det skulle jeg nok selv kunne ændre så det kan bruges til 8 billeder, men den kræver at man skriver navnet på alle billederne. Hvilken gør updatering besværlig. Der skal nok skiftes mellem 30 billeder.

Det andet som ses her under sørger ikke for at billederne er forskellige..

Er der en der kan hjælpe med forslag til hvordan jeg kan ændre et af dem så de passer mig. Eller et link til et på nettet der kan gøre det.??




<?php
#This script has been developped by Nenad Motika [nmotika@bezveze.com]
#Please feel free to use it and to contact me for any reason

//read folder
$folder=opendir(".");
while ($file = readdir($folder))
$names[count($names)] = $file;
closedir($folder);
//sort file names in array
sort($names);
//remove any non-images from array
$tempvar=0;
for ($i=0;$names[$i];$i++){
$ext=strtolower(substr($names[$i],-4));
if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){$names1[$tempvar]=$names[$i];$tempvar++;}
}
//random
srand ((double) microtime() * 10000000);
$rand_keys = array_rand ($names1, 2);
//random image from array
$slika=$names1[$rand_keys[0]];
//image dimensions
$dimensions = GetImageSize($slika);
if (isset($pic)){header ("Location: $slika");}
else {echo "<img src=\"$slika\" $dimensions[3]>";}
?>
Avatar billede Slettet bruger
04. februar 2003 - 00:25 #1
Smid lige lidt information om hvordan du har gemt dine billeder!?
Avatar billede jakoba Nybegynder
04. februar 2003 - 00:27 #2
Det ser ud somom det script afleverer eet eneste billede hver gang det kører.
Og så er det lidt svært. for vi skal så gemme et eller andet sted hvilke billeder der allerede er blevet vist.

Hvis vi kan stole på at alle 8 billeder skal bruges i samme phpside er det nogenlunde nemt, så kan vi lave et array med 8 billedfilnavne der så bliver brugt iløbet af resten af scriptet:

<?php
#This script has been developped by Nenad Motika [nmotika@bezveze.com]
#Please feel free to use it and to contact me for any reason

//read folder
$names = array();            // bliver til alle billeder
$folder=opendir(".");
while ($file = readdir($folder))
    if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png") {
        $names[] = $file;    // tilføj kun billeder
    }
closedir($folder);

$random8pics = array();      // bliver til 8 tilfældigt udvalgte billeder

srand ((double) microtime() * 10000000);
$sidste = count($names) -1;
for ( $i=0; $i<8; $i++ ) {
    $j = rand(0,$sidste);        // vælg et billede i $names
    $random8pics[] = $names[$j];
    $name[$j] = $name[$sidste];
    $sidste--;   
}
// nu indeholder $random8pics navnene på 8 tilfældige og forskellige billeder
//
//  du kan hente dem ved at indsætte  <?php echo $random8pics[0] ?> for det
// billede der skal være nr 0 osv
?>
Avatar billede birkebjerg Nybegynder
04. februar 2003 - 00:53 #3
Når jeg skriver echo $random8pics[0], skulle den jo skrive navnet på filen på skærmen, ik? Det gør den ikke.
Avatar billede jakoba Nybegynder
04. februar 2003 - 01:08 #4
Det skulle den ja, kan du lægge et link til filen som den ser ud nu, så jeg kan kikke?
Avatar billede birkebjerg Nybegynder
04. februar 2003 - 10:12 #5
http://birkebjerg.amok.dk/img/img2.php

<?php
#This script has been developped by Nenad Motika [nmotika@bezveze.com]
#Please feel free to use it and to contact me for any reason

//read folder
$names = array();            // bliver til alle billeder
$folder=opendir(".");
while ($file = readdir($folder))
    if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png") {
        $names[] = $file;    // tilføj kun billeder
    }
closedir($folder);

$random8pics = array();      // bliver til 8 tilfældigt udvalgte billeder

srand ((double) microtime() * 10000000);
$sidste = count($names) -1;
for ( $i=0; $i<8; $i++ ) {
    $j = rand(0,$sidste);        // vælg et billede i $names
    $random8pics[] = $names[$j];
    $name[$j] = $name[$sidste];
    $sidste--; 
    };
  echo $random8pics[0]
?>
Avatar billede jakoba Nybegynder
04. februar 2003 - 10:32 #6
en mulig forklaring er at scriptet ligger i en mappe hvor der ikke er nogen billeder.

men lad os prøve at debugge lidt:

<?php
#This script has been developped by Nenad Motika [nmotika@bezveze.com]
#Please feel free to use it and to contact me for any reason

//read folder
$names = array();            // bliver til alle billeder
$folder=opendir(".");
while ($file = readdir($folder))
    if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png") {
        $names[] = $file;    // tilføj kun billeder
    }
closedir($folder);

echo "antal billeder fundet i mappen er : " .count($names) ."<br>";  // DEBUG LINIE

$random8pics = array();      // bliver til 8 tilfældigt udvalgte billeder

srand ((double) microtime() * 10000000);
$sidste = count($names) -1;
for ( $i=0; $i<8; $i++ ) {
    $j = rand(0,$sidste);        // vælg et billede i $names
    $random8pics[] = $names[$j];
    $name[$j] = $name[$sidste];
    $sidste--;
};

echo "antal billeder valgt fra mappen er : " .count($random8pics) ."<br>";  // DEBUG LINIE
var_dump($random8pics);    // DEBUG LINIE

?>

mvh JakobA
Avatar billede jakoba Nybegynder
04. februar 2003 - 10:35 #7
Ups. en decideret fejl i den første løkke. variabelen $ext bliver aldrig sat til noget. Det kunne også være forklaringen.

$folder=opendir(".");
while ($file = readdir($folder)) {
    $ext = substr( $file, -4 );
    if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png") {
        $names[] = $file;    // tilføj kun billeder
    }
}
closedir($folder);
Avatar billede birkebjerg Nybegynder
04. februar 2003 - 10:48 #8
Tak for hjælpen!
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