Mega Code Archive

 
Categories / Php / MySQL Database
 

This banner rotator is a little bit different from others, the banner will change

only ones a day. I used the php function rand() because I think that MySQL's "ORDER BY RAND()" and the php function array_rand() are only a second choice. <?php 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 `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>"; ?>