dbtables.sql
# Създава нужните таблици
DROP TABLE IF EXISTS `banners`;
CREATE TABLE `banners` (
url varchar(255) not null,
image_url varchar(255) not null,
description varchar(255) not null,
primary key(url))
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
banner.class.php
<?
/**
* ################################################# *
* ################################################# *
* Simple banner rotator class, created by bloodse3ker *
* ################################################# *
* ################################################# *
**/
class Banners {
/*----- Дефиниране на променливите -----*/
var $connection;
var $bannerURL = array();
var $bannerIMG = array();
var $bannerDescription = array();
var $num_banners;
var $rand_banner;
/*----- Class Конструктор -----*/
function Banners() {
// Дефиниране на данните, нужни за връзката с базата данни
define("DB_HOST","localhost");
define("DB_USER","root");
define("DB_PASS","123456");
define("DB_NAME","test");
define("TBL_BANNERS","banners");
// Създаване на връзката с базата данни
$this->connection = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
// Нулиране на променливата 'num_banners'
$this->num_banners = 0;
// Изпълняване на функциите
$this->updateArray();
$this->rotateBanner();
}
/*----- Пресмята броя на банерите в таблицата -----*/
function calcNumBanners() {
$q = "SELECT * FROM ".TBL_BANNERS;
$result = mysql_query($q, $this->connection);
$this->num_banners = mysql_numrows($result);
}
/*----- Подновява масивите с банерите -----*/
function updateArray() {
// Пресмята броя на банерите
$this->calcNumBanners();
// Взима информацията за банерите от ДБ
$q = "SELECT * FROM ".TBL_BANNERS;
$result = mysql_query($q, $this->connection);
// Поставя информацията за банерите по масиви
for ($i=0;$i < $this->num_banners;$i++) {
$this->bannerURL[$i] = mysql_result($result, $i, 'url');
$this->bannerIMG[$i] = mysql_result($result, $i, 'image_url');
$this->bannerDescription[$i] = mysql_result($result, $i, 'description');
}
}
/*----- Избира произволен банер -----*/
function rotateBanner() {
// Избира произволен банер
$random = rand (0, ($this->num_banners) - 1);
// Обединява информацията от произволния банер в една променлива
$this->rand_banner = $this->bannerURL[$random]."|".$this->bannerIMG[$random]."|".$this->bannerDescription[$random];
}
/*----- Извежда банера -----*/
function showBanner() {
// Избира произволен банер
$this->rotateBanner();
// Проверка дали съществуват банери в ДБ
if (empty($this->bannerURL) || empty($this->bannerIMG) || empty($this->bannerDescription)) {
// Ако няма
echo "No banners avaivable.";
}
else {
// Разделя информацията за банера от 'общата променлива'
$banner = explode("|", $this->rand_banner);
echo "<a href='$banner[0]'><img src='$banner[1]' alt='$banner[2]'/></a>";
}
}
/*----- Добавяне на нов банер -----*/
function addBanner($url, $image, $description) {
// Заявката добавяща новата информация в ДБ
$q = "INSERT INTO ".TBL_BANNERS." VALUES('$url', '$image', '$description')";
return mysql_query($q, $this->connection);
// Подновява масивите
$this->updateArray();
}
/*----- Проверява за съществуващ банер -----*/
function Exists($url, $image, $description) {
// Заявка
$q = "SELECT * FROM ".TBL_BANNERS." WHERE `url` = '$url' OR `image_url` = '$image' OR `description` = '$description'";
$result = mysql_query($q, $this->connection);
// Ако заявката връща положителен резултат
if (mysql_num_rows($result) > 0) {
return 1;
}
else {
// Ако няма грешка -> продължи
return 0;
}
}
};
// Създава обекта 'banner'
$banner = new Banners();
?>
example.php
<?
include "banner.class.php";
?>
<html>
<body>
<?
/*---------*/
/* Example */
/*---------*/
$errors=0;
if ($_GET['act'] == "add") {
// Ако е натиснат бутона submit
if (isset($_POST['submit'])) {
// Дефиниране на променливите
$url = $_POST['url'];
$image = $_POST['image'];
$description = $_POST['description'];
// Проверка дали полетата са попълнени
if ($url == NULL || $image == NULL || $description == NULL) {
echo "Fill all fields!";
$errors++;
}
// Проверка дали съществува такъв банер
else if ($banner->Exists($url, $image, $description)) {
echo "Banner exists";
$errors++;
}
// Ако всички полета са OK - добави в ДБ
else {
if ($banner->addBanner($url, $image, $description)) {
echo "Everything went fine :)";
echo "<br /><a href='index.php'>Home</a>";
}
else {
echo "An error encountered!";
$errors++;
}
}
}
// Ако не е натиснат бутона "Submit"
if (!isset($_POST['submit']) || $errors > 0) {
echo '
<form method="post" action="">
URL: <input type="text" name="url" />
Image URL: <input type="text" name="image" />
Description: <input type="text" name="description" />
<input type="submit" name="submit" />
</form>
<a href="index.php">Home</a>';
}
}
else {
// Показва банера
$banner->showBanner();
echo "<br /><br /><a href='?act=add'>Add banner</a>";
}
?>
</body>
</html>
Скрипта е тестван и работи! Препоръчително е, ако нямате основни познания по PHP да не редактирате banner.class.php . Скрипта на пръв поглед е дълъг, но е много прост.Очаквам някой по-навътре в нещата да го подобри и да го постне тук :) Добавянето на нови банери по default е възможно за всеки един потребител на дадения сайт. Препоръчвам скрипта за добавяне да се комбинира с някоя от Login системите в сайта. Enjoy :)