Instantly share code, notes, and snippets.
Created
April 9, 2016 06:30
Random banner with PHP & MySQL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); | |
// create table for the banners | |
$db->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 | |
$db->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 = $db->query($check_today_sql); | |
if ($check_today_res->num_rows) > 0) { | |
$today = $check_today_res->fetch_object(); | |
$id_today = $today->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 = $db->query($get_ids_sql); | |
$get_ids_array = array(); | |
while ($get_ids = $get_ids_res->fetch_object()) { | |
$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]; | |
$db->query("INSERT INTO rand_banner (id, date, todays_id) VALUES (NULL, NOW(), $id_today)"); | |
} | |
// at least select the record with the todays ID | |
$result = $db->query("SELECT link AS url, alt_title, image FROM banners WHERE id = $id_today"); | |
$obj = $result->fetch_object(); | |
// 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>"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment