Преглед на урок

Ротация на банери

Ротация на банери




Цел
Тук ще ви дам идея за направата на скрипт, който показва различна картинка на произволен принцип. За целта не ви е нужна MySQL база данни, а поддръжка на PHP скриптове. Ще използваме един текстов файл.

База данни
Както споменах базата данни ще е един прост текстов файл. Създайте един с името banner.db.txt. В него въведете точния адрес на всяка картинка на нов ред.

Примерно:

Код
http://img.abv.bg/n/i/logo.gif http://abv.bg
http://site.com/img.png http://link.com
http://banner.com/img.gif http://m7.tu-sofia.bg

Както виждате всяка картинка е на нов ред и след всяка картинка има интервал и определен адрес.

Скрипт
Нека да кръстим PHP файла show_banners.php. Отворете го! За по-голямо удобство ще направим една променлива, която да съхранява името на файла.

Код
$DB="banner.db.txt";

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

Сега чрез функцията file() ще прочетем всеки ред.

Код
$fcontents = file ($DB);

Как работи тя? - Функцията ще прочете всеки нов ред от файла $DB и ще създаде масив $fcontents. Всеки елент от масива представлява един ред от файла. Сега вече имаме съдържанието на базатa данни. Остава само да си изберем произволен елемент. Функцията rand() ще ни свърши идеална работа. За нея има един кратък урок, който можете да прочетете тук. Тя взима два параметъра. Така се изгражда радиус от случайно генерирани числа. Нашият радиус ще са елементите на масива. За да разберем колко са те ще използваме функцията count().

Код
$max_banners=count($fcontents);

Тя ще присвои на променливата $max_banners броя на елементите в масива. Последната стъпка е да генерираме число от този радиус

Код
$show=rand(0,$max_banners-1);

Сигурно се питате защо вадим от $max_banners едно. Това е така, защото масивите започват от нулата. Ако имаме три елемента 1, 2, 3. За да покажем първия ще използваме $fcontents[0], за втория $fcontents[1] и тн. Поради тази причина радиуса ни започва с нула, а не с едно. Сега вече имаме случайно генериран елемент в променливата $show. Ваш е избора какво точно ще направи скрипта от тук нататък. Най-простото е да покаже адреса на картинката. След като вече имаме случайно генериран елемент е нужно да го разделим на две - адрес на картинката и адрес, към който да води банера. Това става с функцията split().

Код
$banner=split(" ",$fcontents[$show]);

Сега вече имаме в масива $banner два елемента. Единия е пътят към картинката $banner[0], а другият $banner[1] - линк към посочения сайт. Най-простото, което можете да направите е да покажете картинката, която да сочи към адреса.

Код
echo("<a href=\"$banner[1]\"><img src=\"$banner[0]\"></a>");

Целия код

Код
<?
$DB="banner.db.txt";

$fcontents = file ($DB);

$max_banners=count($fcontents);

$show=rand(0,$max_banners-1);

$banner=split(" ",$fcontents[$show]);

echo("<a href=\"$banner[1]\"><img src=\"$banner[0]\"></a>");
?>

Урокът е предоставен от: m7

Ако урокът ви допада, споделете го в Twitter и Facebook или го запазете в Delicious.




Урокът е добавен от: bubsss

Коментари

streleca_stz

Мерси :) Помогна ми урока ти :P

roshli0

Има и по-лесни начини, но браво и обясняваш супер :)

Lo0pY

А има ли начин да се въведът в БД да не в отделен файл :?

IliyanPetrov

И аз имам нещо подобно, само че го правя със масив и foreach:

function randomImages()
{
изброяваме елементита на масива(път към към снимката и/или хиперлинк)
}
shuffle($array);
foreach ($arrays $arrayElements)
{
echo $arrayElements . '<br />';
}
}
Резултатът е почти същият, само решението е малко по-различно.

petyo69

Извинявам се за тъпия въпрос ,но как бих могъл да го направя в готова платформа като (www.blogger.com)?

telinc

Урокът е добър. Единственото ми предложение е да използваш функцията array_rand. Тя ти дава случаен елемент от даден масив: http://php.net/manual/bg/function.array-rand.php

Добави коментар

Трябва да сте регистиран потребител за може да оставяте коментари! Направете своята безплатна регистрация още сега.