Главная > Реклама, Скрипты и коды > Разработка рекламного трекера на PHP: дизайн и кодинг Data Object

Разработка рекламного трекера на PHP: дизайн и кодинг Data Object


29 марта 2012, 12:20. Разместил: Design FactoRy
В предыдущем уроке по созданию ротатора рекламы мы создавали таблицы базы данных для нашего приложения баннерных объявлений. Теперь мы хотим разработать объект данных, который будет удерживать переменные и функции, которые будут отображать, добавлять, редактировать и удалять данные из этих таблиц.

Как только мы назовем все переменные и функции, начнем применять к ним код.

Разработка рекламного трекера на PHP: дизайн и кодинг Data Object

Переменные

Класс объекта данных будет удерживать две переменные: одна для хранения ID баннерного объявления из таблицы ads, а вторая для хранения информации о соединении с базой данных.

Переменная: $_id
Значение: ID-номер основного ключа для таблицы ads

Переменная: $_oConn
Значение: объект данных для соединения с базой данных MySQL.

Функции

Перед написанием кода для данных методов, нам нужно точно определить задачу, которую каждый метод будет выполнять.

Функция: ads($id=’’)
Задача: открыть соединения с базой данных MySQL. Если переменная $_id имеет целое значение, функция ads будет запускать функцию setId.

Функция: setId($id)
Задача: установка переменной класса $_id в качестве значения $id (предполагая, что $id является целой).

Функция: getAdsCount()
Задача: подсчет общего числа записей о баннерных объявлениях в таблице ads

Функция: getClientsCount()
Задача: подсчет общего числа записей о клиентах на рекламу в таблице clients

Функция: getAds($sSort, $iPage=0)
Задача: возврат данных об объявлении из таблицы ads. Сортировка данных в зависимости от значения в переменной $sSort, и вывод их в записи $iPage.

Функция: getClients($sSort, $iPage=0)
Задача: возврат данных о клиенте из таблицы clients. Сортировка данных в зависимости от значения в переменной $sSort, и вывод их в записи $iPage.

Функция: getAd()
Задача: получение данных об объявлении и клиенте из соответствующих таблиц, где основной ключ таблицы ads равен значению $_id.

Функция: getClient()
Задача: получение данных о клиенте из таблицы clients, где основной ключ является указанным значением.

Функция: getClientsList()
Задача: возврат имен активных клиентов

Функция: getAdsReport()
Задача: возврат данных из таблиц ads, clients и activity.

Функция: addAd($aArgs)
Задача: добавление новой записи в таблицу ads. Переменная $aArgs представляет собой массив, содержащий данные, которые нужно вставить в таблицу ads.

Функция: addClient($aArgs)
Задача: добавление новой записи в таблицу clients. Переменная $aArgs представляет собой массив, содержащий данные, которые нужно вставить в таблицу clients.

Функция: editAd($aArgs)
Задача: редактирование записи в таблице ads. Переменная $aArgs представляет собой массив, содержащий данные, которые должны быть обновлены в записях таблицы ads.

Функция: editClient($aArgs)
Задача: редактирование записи в таблице clients. Переменная $aArgs представляет собой массив, содержащий данные, которые должны быть обновлены в записях таблицы clients.

Функция: getRandomAd()
Задача: возврат данных о случайной записи в таблице ads. Обновление таблицы activity.

Функция: redirectAd()
Задача: перенаправление браузера на определенный URL в таблице ads, соответствующий данной записи. Если это первый раз, когда по объявлению был произведен клик, то происходит внесение новой записи в таблицу activity. Если же нет, то запись данного объявления в таблице обновляется.

Функция: deleteAd()
Задача: установка значения колонки status на false, установка колонки deleted на true, а также установка значения даты удаления на текущую дату в записи для объявления.

Функция: deleteClient()
Задача: установка значения колонки status на false, установка колонки deleted на true, а также установка значения даты удаления на текущую дату в записи для клиента.

Функция: activateAd()
Задача: установка значения колонки status на true в записи для объявления.

Функция: activateClient()
Задача: установка значения колонки status на true в записи для клиента.

Функция: deactivateAd()
Задача: установка значения колонки status на false в записи для объявления.

Функция: deactivateClient()
Задача: установка значения колонки status на false в записи для клиента.

Теперь, когда мы определили функции, можно переходить к разработке кода для данных методов.

Для начала, нам нужно включить строчную информацию об установке соединения с базой данных. Данная информация включает в себя имя сервера базы данных, расположение курсора и другую относящуюся к делу информацию. Так как эта информация используется по всему сайту, она обычно хранится в отдельном файле. Учитывая это, мы включаем ее посредством метода «require_once».

<?php
require_once("dev_drive_dbconn.php"); //database connection string info

Теперь мы создаем класс ads и прописываем значения переменных:

class ads {
var $_id;
var $_oConn;

Теперь мы создаем функцию ads. Данная функция вызывает переменную $_oConn и подключает функции к таблице в базе данных.

function ads($id = '') {

// implement pear db object
$this->_oConn =& DB::connect(DSN);

if (DB::isError($this->_oConn) ) {

catchExc($this->_oConn->getMessage());
}

// set ad id
if (is_int($id)) {

$this->setId($id);
}
}

Как только мы установили соединения с базой, мы можем выставить значение переменной $_id вместе с функцией setId($id).

function setId($id) {

if (is_int($id)) {

$this->_id = $id;
}
}

Далее мы создадим функцию getAdsCount. Эта функция вернет число объявлений в таблице базы данных.

function getAdsCount() {

$sql = "SELECT
count(ad_id) AS cnt
FROM
dev_drive_ads
WHERE
deleted=0";

if (DB::isError($iCnt = $this->_oConn->getOne($sql))) {

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

return $iCnt;
}

Функция getClientsCount возвращает число клиентов.

function getClientsCount() {

$sql = "SELECT
count(ad_client_id) AS cnt
FROM
devdrive_ads_clients
WHERE
deleted=0";

if (DB::isError($iCnt = $this->_oConn->getOne($sql))) {

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

return $iCnt;
}

Функция getAds извлекает данные из таблицы ads, сортирует их в соответствии с переменной $sSort, и устанавливает указатель базы данных вместе с переменной $iPage

function getAds($sSort, $iPage=0) {

$sql = "SELECT
ad_id,
ad_title,
status,
created_dt,
modified_dt
FROM
devdrive_ads
WHERE
deleted=0
ORDER BY
".$sSort."
LIMIT ".$iPage.", ".ROWCOUNT;

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

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

// loop through result and return data collection
$i = 0;
while ($aRow = $rsTmp->fetchRow(DB_FETCHMODE_ASSOC)) {

$return[$i]["Ad Id"] = $aRow["ad_id"];
$return[$i]["Title"] = $aRow["ad_title"];
$return[$i]["Status"] = $aRow["status"];
$return[$i]["Created Date"] = strtotime($aRow["created_dt"]);
$return[$i]["Modified Date"] = strtotime($aRow["modified_dt"]);
++$i;
}
return $return;
}

Функция getClients извлекает данные из таблицы clients, сортирует их в соответствии с переменной $sSort, и устанавливает указатель базы данных вместе с переменной $iPage.

function getClients($sSort, $iPage=0) {

$sql = "SELECT
ad_client_id,
ad_client_name,
status,
created_dt,
modified_dt
FROM
devdrive_ads_clients
WHERE
deleted=0
ORDER BY
".$sSort."
LIMIT ".$iPage.", ".ROWCOUNT;

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

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

// loop through result and return data collection
$i = 0;
while ($aRow = $rsTmp->fetchRow(DB_FETCHMODE_ASSOC)) {

$return[$i]["Client Id"] = $aRow["ad_client_id"];
$return[$i]["Client"] = $aRow["ad_client_name"];
$return[$i]["Status"] = $aRow["status"];
$return[$i]["Created Date"] = strtotime($aRow["created_dt"]);
$return[$i]["Modified Date"] = strtotime($aRow["modified_dt"]);
++$i;
}
return $return;
}

Функция getAd извлекает данные об одном объявлении по его основному ключу (переменная $_id).

function getAd() {

// get advertisement record
$sql = "SELECT
a.ad_id,
a.ad_client_id,
a.ad_url,
a.ad_title,
a.ad_path,
c.ad_client_name,
c.ad_client_contact,
c.ad_client_email,
c.ad_client_phone,
a.status,
a.deleted,
a.deleted_dt,
a.created_dt,
a.modified_dt
FROM
devdrive_ads a,
devdrive_ads_clients c
WHERE
c.ad_client_id=a.ad_client_id
AND a.ad_id=".$this->_id;

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

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

// capture results row in an array
$aRow = $rsTmp->fetchRow(DB_FETCHMODE_ASSOC);

// build return array
$return["Ad Id"] = $aRow["ad_id"];
$return["Client Id"] = $aRow["ad_client_id"];
$return["URL"] = $aRow["ad_url"];
$return["Title"] = $aRow["ad_title"];
$return["Path"] = $aRow["ad_path"];
$return["Client"]["Name"] = $aRow["ad_client_name"];
$return["Client"]["Contact"] = $aRow["ad_client_contact"];
$return["Client"]["Email"] = $aRow["ad_client_email"];
$return["Client"]["Phone"] = $aRow["ad_client_phone"];
$return["Status"] = $aRow["status"];
$return["Deleted"] = $aRow["deleted"];
$return["Deleted Date"] = strtotime($aRow["deleted_dt"]);
$return["Created Date"] = strtotime($aRow["created_dt"]);
$return["Modified Date"] = strtotime($aRow["modified_dt"]);
return $return;
}

Функция getClient извлекает данные из таблицы clients о конкретном клиенте по его основному ключу.

function getClient() {

// get advertisement record
$sql = "SELECT
ad_client_name,
ad_client_contact,
ad_client_email,
ad_client_phone,
status,
deleted,
deleted_dt,
created_dt,
modified_dt
FROM
devdrive_ads_clients
WHERE
ad_client_id=".$this->_id;

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

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

// capture results row in an array
$aRow = $rsTmp->fetchRow(DB_FETCHMODE_ASSOC);

// build return array
$return["Name"] = $aRow["ad_client_name"];
$return["Contact"] = $aRow["ad_client_contact"];
$return["Email"] = $aRow["ad_client_email"];
$return["Phone"] = $aRow["ad_client_phone"];
$return["Status"] = $aRow["status"];
$return["Deleted"] = $aRow["deleted"];
$return["Deleted Date"] = strtotime($aRow["deleted_dt"]);
$return["Created Date"] = strtotime($aRow["created_dt"]);
$return["Modified Date"] = strtotime($aRow["modified_dt"]);
return $return;
}

В следующем уроке мы будем разрабатывать функции, которые позволят нам получить список клиентов, сгенерировать отчеты о рекламе, а также добавлять, редактировать и удалять записи.
Вернуться назад