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 tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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