Hi, is there a script which i can show 4 different, random photos from a file? Currently im using one photo rotating script but it will show same photos.
Here is the simple script which show photo based on the second on which page loading. $photoarray = array("photo1","photo2","photo3","photo4"); $selected = date('s') % count($photoarray); echo '<img src="'.$photoarray[$selected].'">'; Code (markup):
That isn't going to work based on the way that he is getting the images. He is using 4 seperate scripts that are all generating the same random number (like the above code will do). You also have to manually add each image to that array. That's a pain in the ass if you have a directory full of images. You can probably keep using the same script, but you'll need to make a change. Can we see the code?
Here's the code i used. Yes ive 4 same script in the images directory. <?php /* AUTOMATIC IMAGE ROTATOR Version 2.2 - December 4, 2003 Copyright (c) 2002-2003 Dan P. Benjamin, Automatic, Ltd. All Rights Reserved. http://www.hiveware.com/imagerotator.php http://www.automaticlabs.com/ DISCLAIMER Automatic, Ltd. makes no representations or warranties about the suitability of the software, either express or implied, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement. Dan P. Benjamin and Automatic, Ltd. shall not be liable for any damages suffered by licensee as a result of using, modifying or distributing this software or its derivatives. ABOUT This PHP script will randomly select an image file from a folder of images on your webserver. You can then link to it as you would any standard image file and you'll see a random image each time you reload. When you want to add or remove images from the rotation-pool, just add or remove them from the image rotation folder. VERSION CHANGES Version 1.0 - Release version Version 1.5 - Tweaked a few boring bugs Version 2.0 - Complete rewrite from the ground-up - Made it clearer where to make modifications - Made it easier to specify/change the rotation-folder - Made it easier to specify/change supported image types - Wrote better instructions and info (you're them reading now) - Significant speed improvements - More error checking - Cleaner code (albeit more PHP-specific) - Better/faster random number generation and file-type parsing - Added a feature where the image to display can be specified - Added a cool feature where, if an error occurs (such as no images being found in the specified folder) *and* you're lucky enough to have the GD libraries compiled into PHP on your webserver, we generate a replacement "error image" on the fly. Version 2.1 - Updated a potential security flaw when value-matching filenames Version 2.2 - Updated a few more potential security issues - Optimized the code a bit. - Expanded the doc for adding new mime/image types. Thanks to faithful ALA reader Justin Greer for lots of good tips and solid code contribution! INSTRUCTIONS 1. Modify the $folder setting in the configuration section below. 2. Add image types if needed (most users can ignore that part). 3. Upload this file (rotate.php) to your webserver. I recommend uploading it to the same folder as your images. 4. Link to the file as you would any normal image file, like this: <img src="http://example.com/rotate.php"> 5. You can also specify the image to display like this: <img src="http://example.com/rotate.php?img=gorilla.jpg"> This would specify that an image named "gorilla.jpg" located in the image-rotation folder should be displayed. That's it, you're done. */ /* ------------------------- CONFIGURATION ----------------------- Set $folder to the full path to the location of your images. For example: $folder = '/user/me/example.com/images/'; If the rotate.php file will be in the same folder as your images then you should leave it set to $folder = '.'; */ $folder = '.'; /* Most users can safely ignore this part. If you're a programmer, keep reading, if not, you're done. Go get some coffee. If you'd like to enable additional image types other than gif, jpg, and png, add a duplicate line to the section below for the new image type. Add the new file-type, single-quoted, inside brackets. Add the mime-type to be sent to the browser, also single-quoted, after the equal sign. For example: PDF Files: $extList['pdf'] = 'application/pdf'; CSS Files: $extList['css'] = 'text/css'; You can even serve up random HTML files: $extList['html'] = 'text/html'; $extList['htm'] = 'text/html'; Just be sure your mime-type definition is correct! */ $extList = array(); $extList['gif'] = 'image/gif'; $extList['jpg'] = 'image/jpeg'; $extList['jpeg'] = 'image/jpeg'; $extList['png'] = 'image/png'; // You don't need to edit anything after this point. // --------------------- END CONFIGURATION ----------------------- $img = null; if (substr($folder,-1) != '/') { $folder = $folder.'/'; } if (isset($_GET['img'])) { $imageInfo = pathinfo($_GET['img']); if ( isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) && file_exists( $folder.$imageInfo['basename'] ) ) { $img = $folder.$imageInfo['basename']; } } else { $fileList = array(); $handle = opendir($folder); while ( false !== ( $file = readdir($handle) ) ) { $file_info = pathinfo($file); if ( isset( $extList[ strtolower( $file_info['extension'] ) ] ) ) { $fileList[] = $file; } } closedir($handle); if (count($fileList) > 0) { $imageNumber = time() % count($fileList); $img = $folder.$fileList[$imageNumber]; } } if ($img!=null) { $imageInfo = pathinfo($img); $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ]; header ($contentType); readfile($img); } else { if ( function_exists('imagecreate') ) { header ("Content-type: image/png"); $im = @imagecreate (100, 100) or die ("Cannot initialize new GD image stream"); $background_color = imagecolorallocate ($im, 255, 255, 255); $text_color = imagecolorallocate ($im, 0,0,0); imagestring ($im, 2, 5, 5, "IMAGE ERROR", $text_color); imagepng ($im); imagedestroy($im); } } ?> PHP:
For this to work you need all them hamster pictures in 1 folder and it will work nicely. I see all your pictures are outputed to 175x150 so I added that for you, you can and try to get GD working again. ps: change the $read= 'IMAGEFOLDER/'; to your picture folder If you have pictures that end in anything but jpg, gif, or png then you will wither need to change them or add a new line including the ending file extension. <?php $read = 'IMAGEFOLDER/'; $myDirectory = opendir($read); while($entryName = readdir($myDirectory)) { if (strtolower(substr($entryName, -3)) == "jpg") $dirArray[]=$entryName; if (strtolower(substr($entryName, -3)) == "gif") $dirArray[]=$entryName; if (strtolower(substr($entryName, -3)) == "png") $dirArray[]=$entryName; } closedir($myDirectory); shuffle($dirArray); $img1=$read.$dirArray[0]; $img2=$read.$dirArray[1]; $img3=$read.$dirArray[2]; $img4=$read.$dirArray[3]; echo "<img src='$img1' width='175' height='150' />"; echo "<img src='$img2' width='175' height='150' />"; echo "<img src='$img3' width='175' height='150' />"; echo "<img src='$img4' width='175' height='150' />"; ?> Code (markup):
Hi, i just realise that it only works in the index page, other inside pages dont work. Please help again Thanks
Are these 'inside' pages within other folders? If so, then the location "IMAGEFOLDER/" will no longer work. because it will be trying to get to the folder/imagefolder, instead of the root/imagefolder, so try putting chdir('./../'); right on the top row after the <? .
// get document root (substr($_SERVER["DOCUMENT_ROOT"],-1,1) == "/" ? $root = substr($_SERVER["DOCUMENT_ROOT"],0,-1) : $root = $_SERVER["DOCUMENT_ROOT"]); // image directory path $read = $root . "/images"; PHP:
My bad, I didn't look too closely at smatts9's code and I thought it worked differently. Tired. Change what I gave you to // get document root (substr($_SERVER["DOCUMENT_ROOT"],-1,1) == "/" ? $root = substr($_SERVER["DOCUMENT_ROOT"],0,-1) : $root = $_SERVER["DOCUMENT_ROOT"]); // image dir $img_dir = "/images/"; // image dir path $read = $root . $img_dir; PHP: and change $img1=$read.$dirArray[0]; $img2=$read.$dirArray[1]; $img3=$read.$dirArray[2]; $img4=$read.$dirArray[3]; PHP: to $img1=$img_dir.$dirArray[0]; $img2=$img_dir.$dirArray[1]; $img3=$img_dir.$dirArray[2]; $img4=$img_dir.$dirArray[3]; PHP:
I'd like to use this script too but became confused since what was done/ changed here is partial and uses some of the original script.? I only want to rotate a few gif's on my home page. For a newbie, what is the script for that and what areas within the script neeed to be changed ? such as "images" folder... if I want 1 specific gif to always appear no matter what is rotating in or out.. Please post the entire script. Thanks for your help