—»     —»   Разработка рекламного трекера на PHP: отображаем и связываем рекламные объявления
  Раздел: Реклама, Скрипты и коды   Нет комментариев  

Разработка рекламного трекера на PHP: отображаем и связываем рекламные объявления



Ранее мы уже рассказывали вам о процессе вноса информации в рекламные объявления и добавления клиентов, а также о составлении отчетов об активности рекламы. Сегодня же мы постараемся рассказать вам о том, как нам получить случайное рекламное объявление в нашем ротаторе рекламы. Мы также научимся удалять, активировать и деактивировать клиентов и отдельные объявления.

Разработка рекламного трекера на PHP: отображаем и связываем рекламные объявления

Функция getRandomAd() позволяет нам вывести случайное объявление при помощи PHP-функции rand(). Функция возвращает ID основного ключа, ID клиента, URL и прямой пусть до объявления.

Данная функция также обновляет таблицу активности для данного конкретного рекламного объявления. Если в таблице активности нет никаких данных для данного объявления (то есть, данное рекламное объявление отображается впервые), то функция вносит новую запись в таблицу.

function getRandomAd() {

$sql = "SELECT
ad_id,
ad_client_id,
ad_title,
ad_url,
ad_path
FROM
devdrive_ads
WHERE
status=1
AND deleted=0
ORDER BY
rand()
LIMIT 0, 1";

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}

// assign result to array
$aRow = $rsTmp->fetchRow(DB_FETCHMODE_ASSOC);

// assign return array values
$return["Ad Id"] = $aRow["ad_id"];
$return["Client Id"] = $aRow["ad_client_id"];
$return["Title"] = $aRow["ad_title"];
$return["URL"] = $aRow["ad_url"];
$return["Path"] = $aRow["ad_path"];

// update advertisement activity
$sql = "UPDATE devdrive_ads_activity SET
ad_view_cnt=ad_view_cnt+1,
ad_activity_month=".date("m").",
ad_activity_year=".date("Y")."
WHERE
ad_id=".$aRow["ad_id"]."
AND ad_activity_month=".date("m")."
AND ad_activity_year=".date("Y");

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}

// check if update affected any rows
if ($this->_oConn->affectedRows() < 1) {

// add new record for auditing
$sql = "INSERT INTO devdrive_ads_activity (
ad_id,
ad_view_cnt,
ad_activity_month,
ad_activity_year
) values (
".$aRow["ad_id"].",
1,
".date("m").",
".date("Y")."
)";

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}
}

return $return;
}

Функция redirectAd() обновляет таблицу активности, если пользователь кликает по баннеру. Если в таблице активности нет никаких данных для данного объявления (то есть, данное рекламное объявление отображается впервые), то функция вносит новую запись в таблицу.

function redirectAd() {

// update activity logs
$sql = "UPDATE devdrive_ads_activity SET
ad_click_cnt=ad_click_cnt+1,
ad_activity_month=".date("m").",
ad_activity_year=".date("Y")."
WHERE
ad_id=".$this->_id."
AND ad_activity_month=".date("m")."
AND ad_activity_year=".date("Y");

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}

// check if any rows were updated
if ($this->_oConn->affectedRows() < 1) {

// add new activity record
$sql = "INSERT INTO devdrive_ads_activity (
ad_id,
ad_click_cnt,
ad_activity_month,
ad_activity_year
) values (
".$iAdId.",
1,
".date("m").",
".date("Y")."
)";

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}
}

return true;
}

Функция deleteAd() устанавливает статус для записи в таблице ads на deleted и запускает функцию deactivateAd().

function deleteAd() {

$sql = "UPDATE devdrive_ads SET
deleted=1,
deleted_dt=(NOW())
WHERE
ad_id=".$this->_id;

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}

$this->deactivateAd();
return true;
}

Функция deleteClient() устанавливает статус для записи в таблице clients на deleted. Также функция устанавливает статус deleted для всех объявлений данного клиента.

function deleteClient() {

$sql = "UPDATE devdrive_ads_clients SET
status=0,
deleted=1,
deleted_dt=(NOW())
WHERE
ad_client_id=".$this->_id;

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}

$sql = "UPDATE devdrive_ads SET
status=0,
deleted=1,
deleted_dt=(NOW() )
WHERE
ad_client_id=".$this->_id;

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}
}

Функция activateAd() устанавливает статус для записи в таблице ads на active.

function activateAd() {

$sql = "UPDATE devdrive_ads SET
status=1
WHERE
ad_id=".$this->_id;

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}
}

Функция activateClient() устанавливает статус для записи в таблице clients на active.

function activateClient() {

$sql = "UPDATE devdrive_ads_clients SET
status=1
WHERE
ad_client_id=".$this->_id;

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}
}

Функция deactivateAd() устанавливает статус для записи в таблице ads на inactive, но не удаляет эту запись.

function deactivateAd() {

$sql = "UPDATE devdrive_ads SET
status=0
WHERE
ad_id=".$this->_id;

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}
}

Функция deactivateClient() устанавливает статус для записи в таблице clients на inactive, но не удаляет эту запись.

function deactivateClient() {

$sql = "UPDATE devdrive_ads_clients SET
status=0
WHERE
ad_client_id=".$this->_id;

if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

catchExc($rsTmp->getMessage());
return false;
}
}

} // close the class definition

?>

Теперь мы закончили определение функций в классе ads, и можем приступить к разработке интерфейса. В следующем уроке мы расскажем о создании форм, которые позволяют администратору веб-сайта управлять баннерными рекламными кампаниями.
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: PHP, реклама, MySQL
Опубликовал Design FactoRy   Прочитано (раз): 4901   |   Нет комментариев
Источник материала / оригинал статьи   Распечатать
Другие статьи и новости по теме:
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Назовите месяц October по-русски
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


Популярные публикации


















Свежие шаблоны сайтов каждый день
С миру по нитке
«    Июль 2017    »
ПнВтСрЧтПтСбВс
 12
3456789
10111213141516
17181920212223
24252627282930
31