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