29. august 2005 - 13:58
Der er
22 kommentarer og 1 løsning
Ramdom Pic. i under-mapper
hey. Er der nogle der ligge inde med et script til at Ramdom et billede fra flere under-mapper. må gerne skifte billede dagligt.
Annonceindlæg fra Thinkwise
29. august 2005 - 14:47
#1
Hvad med noget i stil med: $folders = array( 'imagefolder1' ,'imagefolder2' ); $pics = array(); foreach ( $folders as $folder ) { $pics = array_merge( $pics, glob( $folder . '/{*.jpg,*.gif}', GLOB_BRACE ) ); } mt_srand( date( 'Ymd' ) ); echo '<img src="' . $pics[ mt_rand( 0, count( $pics ) - 1 ) ] . '" alt="Dagens billede">';
29. august 2005 - 14:47
#2
Med random kan du risikere samme billede kommer flere gange i træk! Du kunne evt putte tingene i en database, og så lave nogle udtræk som opdaterede tabellen når du havde brugt et billede. Og når alle aå var brugt, starter scriptet forfra.
29. august 2005 - 14:50
#3
jakobdo, hvis du seeder med det samme tal, får du altid de samme "random" værdier ;)
29. august 2005 - 14:51
#4
Er vi enige om random 1-10, i teorien kunne jeg godt ramme 5 hver gang? Også selvom jeg seeder med microsekunder.
29. august 2005 - 14:53
#5
Han indikerer at han gerne vil have det samme billede hele dagen, men et nyt billede hver dag :) Så hvis man seeder med f.eks. dags dato, så vil du få den samme "random"-værdi hver gang, hele dagen ;) Prøv at lave et script: <?php mt_srand( date( 'Ymd' ) ); echo "Random tal: " . mt_rand( 0, 200 ); ?> Og reload det flere gange - Samme tal hver gang ;)
29. august 2005 - 14:58
#6
Jaja, nu skal du sgu da ikke spille smart! :o)
29. august 2005 - 14:58
#7
billeder ligger i test/images, der efter i undermapper. hvordan skal jeg kode den sti ind i $folders = array( 'imagefolder1' ,'imagefolder2' ); $pics = array(); foreach ( $folders as $folder ) { $pics = array_merge( $pics, glob( $folder . '/{*.jpg,*.gif}', GLOB_BRACE ) ); } mt_srand( date( 'Ymd' ) ); echo '<img src="' . $pics[ mt_rand( 0, count( $pics ) - 1 ) ] . '" alt="Dagens billede">';
29. august 2005 - 15:01
#8
underne -mapperne skal script selv finde ud fra test/images
29. august 2005 - 15:01
#9
jakobdo :-D m_fiser: $folders = array( 'test/images' ,'test/images/andenfolder' ,'test/images/flerefoldere' ,'test/images/mange' ); Ellers skal du skrive en dir scanner, det er heller ikke så svært - dette var bare en nem løsning hvis der ikke er så mange :)
29. august 2005 - 15:02
#10
Argh! Sorry! m_fisker! :) lol typo!
29. august 2005 - 15:04
#11
Enten skal du skrive alle mapper med ind i: $folders = array( '/test/images' ,'/test/images/ferie' ); Osv... Ellers skal du lave en funktion som finder alle undermapper i en mappe og bygger et array. Du kan muligvis bruger: $folders = array(); $folders = array_merge( $folders, glob("/test/images/*', GLOB_ONLYDIR ) );
29. august 2005 - 15:05
#12
CoderDK: m_fiser, hvad er det for en måde at tiltale folk på! :o)
29. august 2005 - 15:07
#13
jakobdo: Jeg har da ikke skrivet noget der kan virke støden..??? mener jeg selv...
29. august 2005 - 15:08
#14
m_fisker: Det var ment til CoderDK! ;o)
29. august 2005 - 15:08
#15
m_fisker, Nej, jakobdo henviser til at jeg kom til at skrive "m_fiser" :) hehehe
29. august 2005 - 15:10
#16
coderdk: det havde jeg ikke set :)
29. august 2005 - 15:13
#17
Prøv lige at se om dette ikke virker, det er ikke testet, men skulle da virke: <?php $root_folder = "test/images"; $files = array(); function scanDir( $folder ) { global $files; if ( $dh = opendir( $folder ) ) { while ( $file = readdir( $dh ) ) { if ( is_dir( $file ) && $file != '.' && $file != '..' ) { scanDir( $folder . '/' . $file ); } elseif ( is_file( $file ) && preg_match( '!\.(jpg|gif)$!i', $file ) ) { $files[] = $folder . '/' . $file; } } } } scanDir( $root_folder ); mt_srand( date( 'Ymd' ) ); echo '<img src="' . $files[ mt_rand( 0, count( $files ) - 1 ) ] . '" alt="Dagens billede">'; ?>
29. august 2005 - 15:14
#18
Hmm det skal gøres pænere: <?php $root_folder = "test/images"; $files = array(); function scanDir( $folder ) { global $files; if ( $dh = opendir( $folder ) ) { while ( $file = readdir( $dh ) ) { if ( is_dir( $file ) && $file != '.' && $file != '..' ) { scanDir( $folder . '/' . $file ); } elseif ( is_file( $file ) && preg_match( '!\.(jpg|gif)$!i', $file ) ) { $files[] = $folder . '/' . $file; } } closedir( $dh ); } } scanDir( $root_folder ); mt_srand( date( 'Ymd' ) ); echo '<img src="' . $files[ mt_rand( 0, count( $files ) - 1 ) ] . '" alt="Dagens billede">'; ?>
29. august 2005 - 15:14
#19
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /***/randompic.php on line 13 echo '<img src="' . $pics[ mt_rand( 0, count( $pics ) - 1 ) ] . '" alt="Dagens billede">'; <? $folders = array(); $folders = array_merge( $folders, glob("/test/images/*', GLOB_ONLYDIR ) ); ); $pics = array(); foreach ( $folders as $folder ) { $pics = array_merge( $pics, glob( $folder . '/{*.jpg,*.gif}', GLOB_BRACE ) ); } mt_srand( date( 'Ymd' ) ); echo '<img src="' . $pics[ mt_rand( 0, count( $pics ) - 1 ) ] . '" alt="Dagens billede">'; ?>
29. august 2005 - 15:14
#20
Ok, så kan jeg lære det, det bør være: <?php $root_folder = "test/images"; $files = array(); function scanDir( $folder ) { global $files; if ( $dh = opendir( $folder ) ) { while ( $file = readdir( $dh ) ) { if ( is_dir( $folder . '/' . $file ) && $file != '.' && $file != '..' ) { scanDir( $folder . '/' . $file ); } elseif ( is_file( $folder . '/' . $file ) && preg_match( '!\.(jpg|gif)$!i', $file ) ) { $files[] = $folder . '/' . $file; } } closedir( $dh ); } } scanDir( $root_folder ); mt_srand( date( 'Ymd' ) ); echo '<img src="' . $files[ mt_rand( 0, count( $files ) - 1 ) ] . '" alt="Dagens billede">'; ?>
29. august 2005 - 15:17
#21
Jeg kørte det lige igennem min php, og der findes jo allerede en scandir i php5, så: <?php $root_folder = "images"; $files = array(); function doScanDir( $folder ) { global $files; if ( $dh = opendir( $folder ) ) { while ( $file = readdir( $dh ) ) { if ( is_dir( $folder . '/' . $file ) && $file != '.' && $file != '..' ) { doScanDir( $folder . '/' . $file ); } elseif ( is_file( $folder . '/' . $file ) && preg_match( '!\.(jpg|gif)$!i', $file ) ) { $files[] = $folder . '/' . $file; } } closedir( $dh ); } } doScanDir( $root_folder ); mt_srand( date( 'Ymd' ) ); echo '<img src="' . $files[ mt_rand( 0, count( $files ) - 1 ) ] . '" alt="Dagens billede">'; ?>
29. august 2005 - 15:18
#22
( ret $root_folder ) :) DAMN jeg spammer lige nu! :P
29. august 2005 - 15:22
#23
det virker.. 1000000 tak
Vi tilbyder markedets bedste kurser inden for webudvikling