Scripts
Daily (random) banner
Normaal schakelt een banner rotator zeker iets sneller, maar omdat ik vandaag de vraag naar een randmom record per dag tegen kwam vind ik het wel een handig voorbeeld. Ik heb bij dit snippet gebruik gemaakt van de php functie rand() omdat "ORDER BY RAND" en array_rand() in mijn ogen niet zo goed functioneren. Helaas moet men bij mijn voorbeeld een dag wachten om een verandering te zien... :-( Mischien kan ik beter en testpage gaan maken....
daily-random-banner
<?php
/***********************************************************
Daily (random) banner ver. 1.0
This simple banner system will show a different banner each day
Copyright (C) 2005 - Olaf Lederer
************************************************************/
mysql_connect("localhost", "user", "password");
mysql_select_db("database_name");
// create table for the banners
mysql_query("
CREATE TABLE IF NOT EXISTS `banners` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(35) NOT NULL default '',
`link` varchar(150) NOT NULL default '',
`alt_title` varchar(100) NOT NULL default '',
`image` varchar(35) NOT NULL default '',
`ins_date` date NOT NULL default '0000-00-00',
`status` enum('on','off') NOT NULL default 'on',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1");
// create the table for storing todays banner id
mysql_query("
CREATE TABLE IF NOT EXISTS `rand_banner` (
`id` int(11) NOT NULL auto_increment,
`date` date NOT NULL default '0000-00-00',
`todays_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1");
// first check if todays banner id is already stored
$check_today_sql = "SELECT todays_id FROM rand_banner WHERE date = NOW()";
$check_today_res = mysql_query($check_today_sql);
if (mysql_num_rows($check_today_res) > 0) {
$id_today = mysql_result($check_today_res, 0, "todays_id");
} else {
// if not select a random id and store the id in the table with current date
$get_ids_sql = "SELECT id FROM banners WHERE status = 'on'";
$get_ids_res = mysql_query($get_ids_sql);
$get_ids_array = array();
while ($get_ids = mysql_fetch_object($get_ids_res)) {
$get_ids_array[] = $get_ids->id;
}
$num = count($get_ids_array);
// I use the function rand() because other random functions are not "really random"
$rand_num = rand(0, $num-1);
$id_today = $get_ids_array[$rand_num];
mysql_query("INSERT INTO rand_banner (id, date, todays_id) VALUES (NULL, NOW(), $id_today)");
}
// at least select the record with the todays ID
$result = mysql_query("SELECT link AS url, alt_title, image FROM banners WHERE id = $id_today");
$obj = mysql_fetch_object($result);
// this example will show the current banner
echo "<a href=\"".$obj->url."\"><img src=\"/images/banners/".$obj->image."\" alt=\"".$obj->alt_title."\" border=\"0\"></a>";
?>
Reacties
0