Как только мы назовем все переменные и функции, начнем применять к ним код.
Переменные
Класс объекта данных будет удерживать две переменные: одна для хранения 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;
}
В следующем уроке мы будем разрабатывать функции, которые позволят нам получить список клиентов, сгенерировать отчеты о рекламе, а также добавлять, редактировать и удалять записи.