Помогни ни да направим Uroci.net по - богат! Добави урок

Произволен банер с MySQL

PHP » PHP
bloodse3ker   трудност:    видян: 6479

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 :)



Коментари (3)

wowmanqk96 на 07.07 2009 в 15:44ч.
ако някои може да ми хелп за си направя някъв сайт подобен на дата.бг дада2.ком замунда.нет или не6то подобни 6а съм му мн благодарен пи6ете на е-мейл wowmanqk96@abv.bg или на скайп naruto_96_ilia 10х
Tiesto на 03.10 2009 в 04:08ч.
Виж какво никой няма да тръгне да ти прави сайт ей така за единия хелп хората по този начин си вадят парите и едва ли някой без пари ще ти го направи освен ако нямаш някой познат уеб програмист и втора за какво ти е подобно нещо ?!
JICATA на 27.03 2010 в 13:49ч.
Да попитам как да добавя функция за изтриване

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com