Avatar billede mortenhh Nybegynder
25. februar 2006 - 22:45 Der er 10 kommentarer og
1 løsning

Random script

Hej Eksperter...

Jeg har fundet dette random script:

<?php
$dir = "./galleri/";

$allowExt = array("jpg","jpeg","JPG");
$fileArray = array();

if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        while(($file = readdir($dh)) !== false)
        {
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt))
            {
                $fileArray[] = $file;
            }
        }
        closedir($dh);
    }
}

$count = count($fileArray)-1;
$random = rand(0,$count);
echo "<img src=.\galleri\"".$fileArray[$random]."\" alt=\"".$fileArray[$random]."\">";

?>

Jeg kunne godt tænke mig at den hentede fra /galleri/ men synes ikke den gør det når jeg roder med det :(

Problemet kan ses på www.mortenhh.dk

Håber nogle kan hjælpe :-)
Avatar billede mccookie Seniormester
25. februar 2006 - 23:21 #1
http://dk.php.net/manual/en/function.glob.php

Kig evt. på denne funktion og denne:

http://dk.php.net/manual/en/function.basename.php

De er begge nemme at arbejde med og jeg tror vist du kan bruge dem med fordel.....
Avatar billede morhan Novice
25. februar 2006 - 23:24 #2
echo-sætningen skal nok være

echo "<img src=\"/galleri/".$fileArray[$random]."\" alt=\"".$fileArray[$random]."\">";
Avatar billede coderdk Praktikant
26. februar 2006 - 01:18 #3
$fileArray[] = $file;

skal nok være:

$fileArray[] = $dir . $file;

Men! Det hele kan skrives sådan:

$files = glob("galleri/{jpg,jpeg,JPG}", GLOB_NOSORT);
shuffle($files);
echo "<img src=.\galleri\"".$files[0]."\" alt=\"".$files[0]."\">";
Avatar billede coderdk Praktikant
26. februar 2006 - 01:19 #4
Vrøvl! morhan har fejlen ;)
Og mit eksempel var også forkert :)

$files = glob("galleri/{jpg,jpeg,JPG}", GLOB_NOSORT);
shuffle($files);
echo "<img src=\"".$files[0]."\" alt=\"".basename($files[0])."\">";
Avatar billede mortenhh Nybegynder
26. februar 2006 - 11:35 #5
Hmm...
Inget af det ser ud til at virke :(

Det ser sådan ud nu:

<?php
$dir = "./galleri/";

$allowExt = array("jpg","jpeg","JPG");
$fileArray = array();

// Open a known directory, and proceed to read its contents
if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        while(($file = readdir($dh)) !== false)
        {
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt))
            {
                $fileArray[] = $file;
            }
        }
        closedir($dh);
    }
}

$files = glob("galleri/{jpg,jpeg,JPG}", GLOB_NOSORT);
shuffle($files);
echo "<img src=\"".$files[0]."\" alt=\"".basename($files[0])."\">";

?>
Avatar billede jakobdo Ekspert
26. februar 2006 - 20:36 #6
Prøv at ret:
echo "<img src=.\galleri\"".$fileArray[$random]."\" alt=\"".$fileArray[$random]."\">";
til:
echo "<img src=\"".$dir.$fileArray[$random]."\" alt=\"".$fileArray[$random]."\">";
Avatar billede mortenhh Nybegynder
26. februar 2006 - 20:44 #7
Jakobdo: Du er for sej mand ! - Det virkede :)
Avatar billede coderdk Praktikant
26. februar 2006 - 20:46 #8
Også mig der lavede en fejl :) Dette burde virke:

$files = glob("galleri/*.{jpg,jpeg,JPG}", GLOB_NOSORT);
shuffle($files);
echo "<img src=\"".$files[0]."\" alt=\"".basename($files[0])."\">";
Avatar billede jakobdo Ekspert
26. februar 2006 - 20:47 #9
Og et svar så...
Avatar billede jakobdo Ekspert
26. februar 2006 - 20:48 #10
Takker for point!
Avatar billede mortenhh Nybegynder
26. februar 2006 - 20:48 #11
Du fortjente dem :)
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