Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Ротатор на банери с екстри
  1. Ротатор на банери с екстри
mlg
     
Автор  mlg (08.04.2008 17:40)  съобщение до автора
Погледнат  1870 пъти  добави към любими
Оценка  добави коментар
Гласове  2  изпрати на приятел
Коментари  (4)  абонирай се за PHP
    Страница 1 / 1

 



Това е ротатор на банери с възможност за добавяне, изтриване и поправяне на банери и въвеждане на максимален брой импресии. При достигане на максималният брой импресии на даден банер тои се деактивира и вече не се появява. След това дадения банер отново може да се активира с нов брой максимални импресии.


Най-напред трябва да създадете нова таблица в MySQL с име banners.

CODE
1
2
3
4
5
6
7
8
9
10
CREATE TABLE `banners` (
 
`id` int(10) unsigned NOT NULL auto_increment,
 
`name` text NOT NULL,
 
`file` text NOT NULL,
 
`url` text NOT NULL,
 
`imp` int(11) NOT NULL,
 
`max_imp` int(11) NOT NULL,
 
`activ` text NOT NULL,
 
PRIMARY KEY  (`id`)
)
ENGINE=MyISAM  DEFAULT CHARSET=utf8_bin AUTO_INCREMENT=10 ;

След като вече сте създали таблицата в MySQL, трябва да създадете конфигурационен файл с име config.php

CODE
1
2
3
4
5
6
<?
$db_host  = "localhost"; // Хост на базата данни
$db_user  = "user";       // Юзер на базата данни
$db_pass  = "pass";     // Парола на базата данни
$db       = "banners";   // Име на базата данни
?>

След това вече можете да преминете към създаването на banners.php в който ще се помести скрипта за изкарването на банерите.

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?
// Въвеждане на файла с настройки
include('config.php');

// Свързване с базата данни
$connect = mysql_pconnect("$db_host","$db_user","$db_pass") or die ( 'Грешка при връзката с MySQL!' );
mysql_select_db("$db") or die ( 'Грешка!' );

// Запитване за, колко активни банера има
   
$query_number = "select * from banners where activ = 'yes'";
   
$result_number = mysql_query($query_number);
   
$number_of_banners = mysql_num_rows($result_number);

// С функциятана rand() се избира произволен банер
$rand = rand(1, $number_of_banners);
$rand_banner = $rand - 1;

// Запитване за цялата информация за избрания банер
   
$query_print = "select * from banners where activ = 'yes' limit ".$rand_banner.", 1";
   
$result_print = mysql_query($query_print);
   
$banner_print = mysql_fetch_array($result_print);

// Ако импресиите до момента са по-малки или равни на максималния брой , ще се появи избрания банер
if($banner_print[imp] <= $banner_print[max_imp]){

// Овеличаване на импресиите с 1
       
$add_imp = $banner_print[imp] + 1;
   
$query_add_imp = "UPDATE banners SET imp = ".$add_imp." WHERE id = ".$banner_print[id]." LIMIT 1 ;";
   
$result_add_imp = mysql_query($query_add_imp);

// Изкарване на банера
if($banner_print[id] != NULL){
echo "<a href='".$banner_print[url]."'><img src='".$banner_print[file]."' border='0' /></a>";};

};

// Ако импресиите до момента са по големи от максималния брой , избраният банер ще се деактивира
if($banner_print[imp] > $banner_print[max_imp]){

   
$query_add_imp = "UPDATE banners SET activ = 'no' WHERE id = ".$banner_print[id]." LIMIT 1 ;";
   
$result_add_imp = mysql_query($query_add_imp);

};
?>

И най-накрая но не и на последно място по-значение е скрипта за контрол на ротатора, в който ще можете да добавяте, триете или променяте банерите. Направете още един файл с име configbanners.php и в него сложете следното:

CODE
1
2
3
4
5
6
<html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<
title>Конфигурация на банерите</title>
</
head>
<
body>

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?
// Въвеждане на файла с настройки
include('config.php');

// Свързване с базата данни
$connect = mysql_pconnect("$db_host","$db_user","$db_pass") or die ( 'Грешка при връзката с MySQL!' );
mysql_select_db("$db") or die ( 'Грешка!' );

?>
  <table border="0" width="980" cellspacing="0" cellpadding="0">
    <tr>
      <td width="980" height="60">
<?
// Добавяне на банер
if($_GET['add'] == banner) {

// Ако полетата name , file , url и max_imp празни ще покаже , че не са попълнени всички полета
if($_POST['name'] == NULL or $_POST['file'] == NULL or $_POST['url'] == NULL or $_POST['max_imp'] == NULL) {
echo "Попълнете всички полета.";

// Ако всички са попълнени , банерът ще се добави
} else {
   
$query_add = "INSERT INTO banners (id ,name ,file ,url ,imp ,max_imp ,activ )
              VALUES (NULL , '
".$_POST['name']."', '".$_POST['file']."', '".$_POST['url']."', '', '".$_POST['max_imp']."', 'yes');";
   
$result_add = mysql_query($query_add);

echo "Банерът е добавен.";
};
};

// Изтриване на банер
if($_GET['del'] != 0) {

   
$query_del = "DELETE FROM banners WHERE id = ".$_GET['del']." LIMIT 1";
   
$result_del = mysql_query($query_del);
echo "Банерът е изтрит.";

};

// Повторно активиране на банер с възможност за промяна на броя на максималните импресии
if($_GET['activate'] != 0) {

   
$query_activate = "UPDATE banners SET imp = '0',max_imp = '".$_POST['new_max_imp']."',activ = 'yes' WHERE id = ".$_GET['activate']." LIMIT 1 ;";
   
$result_activate = mysql_query($query_activate);

echo "Банерът е активиран отново с <b>".$_POST['new_max_imp']."</b> импресии.";

};
?>
CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     </td>
    </
tr>
    <
tr>
      <
td width="980" height="32">
      <
table border="0" width="980" cellspacing="0" cellpadding="0">
        <
tr>
          <
td width="30" height="50">ID
         
</td>
          <
td width="150" height="50">Име на банера<br>пр: banner 1
         
</td>
          <
td width="200" height="50">Линк до файла<br>пр: banner1.png
         
</td>
          <
td width="200" height="50">Линк до банера<br>пр: http://it-place.net
         
</td>
          <
td width="100" height="50" align="center">Брой<br>импресии
         
</td>
          <
td width="100" height="50" align="center">Макс. брой<br>импресии
         
</td>
          <
td width="100" height="50" align="center">Активен/<br>Неактивен
         
</td>
          <
td width="100" height="50" align="center">
          </
td>
        </
tr>
      </
table>
      </
td>
    </
tr>
    <
tr>
      <
td width="980" height="1" bgcolor="black">
      </
td>
    </
tr>

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
// Извеждане на цялата информация за всички банери
   
$query_list = "select * from banners";
   
$result_list = mysql_query($query_list);
   
while ($banner_list = mysql_fetch_array($result_list)) {
?>
    <tr>
      <td width="980" height="32">
    <form method="POST" action="configbanners.php?activate=
<? echo $banner_list[id]; ?>"  style="margin-top: 0; margin-bottom: 0">
      <table border="0" width="980" cellspacing="0" cellpadding="0">
        <tr>
          <td width="30" height="32">
<? echo $banner_list[id]; ?>
          </td>
          <td width="150" height="32">
<? echo $banner_list[name]; ?>
          </td>
          <td width="200" height="32">
<? echo $banner_list[file]; ?>
          </td>
          <td width="200" height="32">
<? echo $banner_list[url]; ?>
          </td>
          <td width="100" height="32" align="center">
<? echo $banner_list[imp]; ?>
          </td>
          <td width="100" height="32" align="center"><input type="text" name="new_max_imp" style="width: 60px;" value="
<? echo $banner_list[max_imp]; ?>" >
          </td>
          <td width="100" height="32" align="center">
<?
if($banner_list[activ] == 'yes') echo "Активен";
if($banner_list[activ] == 'no') echo "<input type='submit' name='activate' value='Неактивен' style='width: 98px;'>";
?>
          </td>
          <td width="100" height="32" align="center">
                <a href="configbanners.php?del=
<? echo $banner_list[id]; ?>">
                <input type="button" name="del" value="Изтрии" style="width: 98px;"></a>
          </td>
        </tr>
      </table>
    </form>
      </td>
    </tr>
    <tr>
      <td width="980" height="1" bgcolor="black">
      </td>
    </tr>
<?
};
?>

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    <tr>
      <
td width="980" height="32">
    <
form method="POST" action="configbanners.php?add=bannerstyle="margin-top: 0; margin-bottom: 0">
      <
table border="0" width="980" cellspacing="0" cellpadding="0">
        <
tr>
          <
td width="30" height="32">Нов:
         
</td>
          <
td width="150" height="32"><input type="text" name="name" style="width: 145px;">
          </
td>
          <
td width="200" height="32"><input type="text" name="file" style="width: 195px;">
          </
td>
          <
td width="200" height="32"><input type="text" name="url" style="width: 195px;">
          </
td>
          <
td width="100" height="32" align="center">
          </
td>
          <
td width="100" height="32" align="center"><input type="text" name="max_imp" style="width: 60px;">
          </
td>
          <
td width="100" height="32" align="center"><input type="submit" name="add" value="Добави" style="width: 98px;">
          </
td>
          <
td width="100" height="32" align="center">
          </
td>
        </
tr>
      </
table>
    </
form>
      </
td>
    </
tr>
    <
tr>
      <
td width="980" height="1" bgcolor="black">
      </
td>
    </
tr>
  </
table>
</
body>
</
html>

Товя е всичко от този урок, надявам се да ви помогне.



   


Ключови думи: PHP baner ротатор банер банер ротатор


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

Да има много неща за оправян! Грешки, неуточнения и т.н.!
Поздрави!

  zipopro на 12.04.2008 09:59

като се сетя кат правих една линк система преди около година колко зор беше особеннно в оптимизацията на базата направо ми се реве, колега млг представи си 4е има6 по 10 зявки за банер в секунда .. тогава кво ше правиш ? :), а можеш да резнеш и от ранодм-а, използваи мт_ранд ;)

  zetxx на 09.04.2008 10:16

УФ няма редакция ... та защо правиш 2 заявки към ДБ сървъра като взимаш едни и същи данни? Не знам каква е целата, но е тоталано НЕВЯРНА.

  PureEvil на 08.04.2008 21:58

Има доста да ти се опитимизира таблицата.
Като начало: `activ` трябва да ти е или ENUM или TINYINT.
За другите полета няма какво и да говорим, ще е полезно за тебе ако наблегнеш на това как да правиш нормални таблици!

  PureEvil на 08.04.2008 21:57

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008