Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Название поля | Описание | Тип поля | Дополнительно |
Id | Уникальный идентификатор | INT(11) | Автоинкремент, первичный ключ |
Name | Название изображения | TINYTEXT | |
Title | Заголовок изображения | TINYTEXT | |
Description | Описание изображения | TEXT | |
Pub | Флаг отображения изображения | TINYINT(1) | |
news_id | Идентификатор новости | INT(11) | Внешний ключ |
Таблица 3.3 – Структура таблица «Пользователи» (users)
Название поля | Описание | Тип поля | Дополнительно |
Id | Уникальный идентификатор | INT(11) | Автоинкремент, первичный ключ |
Login | Логин пользователя | TINYTEXT | |
Pass | Пароль пользователя | TINYTEXT |
Таблица 3.4 – Структура таблицы «Настройки» (settings)
Название поля | Описание | Тип поля | Дополнительно |
Id | Уникальный идентификатор | INT(11) | Автоинкремент, первичный ключ |
Option | Название опции | TINYTEXT | |
Value | Значение опции | TINYTEXT |
Представленная на рисунке Рисунок 3.1 физическая модель базы данных была построена на основе логической модели базы данных (раздел 2.5).

Рисунок 3.1 – Физическая модель базы данных
4.2 Разработка сценария взаимодействия с базой данных
Опишем алгоритм взаимодействия сценария с базой данных:
1. Установить соединение с SQL-сервером.
2. Передать ему логин, пароль, имя базы.
3. Передать SQL-запрос и ожидать результата. Дальше действия SQL-сервера:
a. интерпретировать SQL-запрос, найти в нем имя таблицы, поля и идентификатор записи;
b. открыть файлы нужной таблицы;
c. считать список полей из файла структуры;
d. считать нужный индекс из файла индексов;
e. отыскать в индексе идентификатор нужной записи и место ее расположения в файле данных;
f. считать с найденной позиции файла данных нужное количество данных;
g. разбить эти данные по запрошенным полям в ассоциативный массив;
h. закрыть файлы.
4. Передать полученный массив сценарию.
5. По команде сценарию закрыть соединение.
6. Формирование массива результатов.
По описанному алгоритму составим схему алгоритма:

Рисунок 3.2 – Схема алгоритма взаимодействия сценария с базой данных
4.3 Написание исходного кода системы
Для удобства восприятия исходного кода системы и удобного внесения правок при добавлении новых функций система будет разбита не насколько сценариев описанных в главе 2.3. Рассмотрим подробно каждый их них.
4.3.1 Сценарии авторизации
login. php содержит интерфейс авторизации пользователя. Для авторизации пользователя используется стандартный механизм хранения сессии PHP.
Для того чтобы в сценарии можно было работать с сессиями, необходимо сначала инициализировать механизм сессий. Делается это с помощью функции session_start(). При этом будет создана новая сессия или восстановлена уже существующая. Когда посетитель заходит на сайт, ему присваивается 32-х разрядный идентификатор вида: abcd1hfgh2ijkl3m6op4qrs5tuv6ixyz, который «следует» за ним при всех перемещениях по сайту. Таким образом, сервер узнает, нужно ли создавать новую сессию или использовать существующую. Хранение сессии обеспечивается либо по средствам cookies, либо, если они отключены у пользователя, добавлением ко всем адресам GET-запроса вида: PHPSESSID=идентификатор, т. е. адрес myscript. php превратиться в myscript. php? PHPSESSID=идентификатор.
При обработке запроса на сервере PHP ищет идентификатор в переданных ему данных и, если находит и сессия не устарела, то обновляет ее. В противном случае создается новая. Кстати, идентификатор сессии можно получить с помощью функции session_id();
После того, как механизм сессий был инициализирован в сценарии, мы можем сохранять любую информацию в ассоциативном массиве
Оглавление (стр. 2 )
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |
Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Название поля | Описание | Тип поля | Дополнительно |
Id | Уникальный идентификатор | INT(11) | Автоинкремент, первичный ключ |
Name | Название изображения | TINYTEXT | |
Title | Заголовок изображения | TINYTEXT | |
Description | Описание изображения | TEXT | |
Pub | Флаг отображения изображения | TINYINT(1) | |
news_id | Идентификатор новости | INT(11) | Внешний ключ |
Таблица 3.3 – Структура таблица «Пользователи» (users)
Название поля | Описание | Тип поля | Дополнительно |
Id | Уникальный идентификатор | INT(11) | Автоинкремент, первичный ключ |
Login | Логин пользователя | TINYTEXT | |
Pass | Пароль пользователя | TINYTEXT |
Таблица 3.4 – Структура таблицы «Настройки» (settings)
Название поля | Описание | Тип поля | Дополнительно |
Id | Уникальный идентификатор | INT(11) | Автоинкремент, первичный ключ |
Option | Название опции | TINYTEXT | |
Value | Значение опции | TINYTEXT |
Представленная на рисунке Рисунок 3.1 физическая модель базы данных была построена на основе логической модели базы данных (раздел 2.5).

Рисунок 3.1 – Физическая модель базы данных
4.2 Разработка сценария взаимодействия с базой данных
Опишем алгоритм взаимодействия сценария с базой данных:
1. Установить соединение с SQL-сервером.
2. Передать ему логин, пароль, имя базы.
3. Передать SQL-запрос и ожидать результата. Дальше действия SQL-сервера:
a. интерпретировать SQL-запрос, найти в нем имя таблицы, поля и идентификатор записи;
b. открыть файлы нужной таблицы;
c. считать список полей из файла структуры;
d. считать нужный индекс из файла индексов;
e. отыскать в индексе идентификатор нужной записи и место ее расположения в файле данных;
f. считать с найденной позиции файла данных нужное количество данных;
g. разбить эти данные по запрошенным полям в ассоциативный массив;
h. закрыть файлы.
4. Передать полученный массив сценарию.
5. По команде сценарию закрыть соединение.
6. Формирование массива результатов.
По описанному алгоритму составим схему алгоритма:

Рисунок 3.2 – Схема алгоритма взаимодействия сценария с базой данных
4.3 Написание исходного кода системы
Для удобства восприятия исходного кода системы и удобного внесения правок при добавлении новых функций система будет разбита не насколько сценариев описанных в главе 2.3. Рассмотрим подробно каждый их них.
4.3.1 Сценарии авторизации
login. php содержит интерфейс авторизации пользователя. Для авторизации пользователя используется стандартный механизм хранения сессии PHP.
Для того чтобы в сценарии можно было работать с сессиями, необходимо сначала инициализировать механизм сессий. Делается это с помощью функции session_start(). При этом будет создана новая сессия или восстановлена уже существующая. Когда посетитель заходит на сайт, ему присваивается 32-х разрядный идентификатор вида: abcd1hfgh2ijkl3m6op4qrs5tuv6ixyz, который «следует» за ним при всех перемещениях по сайту. Таким образом, сервер узнает, нужно ли создавать новую сессию или использовать существующую. Хранение сессии обеспечивается либо по средствам cookies, либо, если они отключены у пользователя, добавлением ко всем адресам GET-запроса вида: PHPSESSID=идентификатор, т. е. адрес myscript. php превратиться в myscript. php? PHPSESSID=идентификатор.
При обработке запроса на сервере PHP ищет идентификатор в переданных ему данных и, если находит и сессия не устарела, то обновляет ее. В противном случае создается новая. Кстати, идентификатор сессии можно получить с помощью функции session_id();
После того, как механизм сессий был инициализирован в сценарии, мы можем сохранять любую информацию в ассоциативном массиве $_SESSION. Этот массив является глобальной переменной сессии. Таким образом, сохранив в нем, к примеру, значения переменных login и password на странице авторизации мы можем использовать их на всех остальных страницах защищенной части сайта.
Завершение сессии происходит либо автоматически по истечению определенного промежутка времени, либо принудительно при использовании функции session_destroy(). Исходный код сценариев login. php и logout. php приведен в приложении 2 и 3.
4.3.2 Сценарий пользовательского интерфейса (frontend)
index. php является основным сценарием который используется для вывода содержимого блога. Выводит как краткие описания новостей на главной странице, так и подробное содержимое новости. Для вывода подробного содержимого сценарию необходимо передать параметр, содержащий уникальный идентификатор новости. Исходный код сценария index. php приведен в приложении 4.
4.3.3 Сценарий административного интерфейса (backend)
adm. php – основной сценарий для администрирования содержимого блога. Сценарий может находится в нескольких состояниях:
- просмотр новости;
- редактирование новости;
- публикация новости;
- добавление новости;
- удаление новости;
- управление изображениями.
Каждое из состояний активируется с помощью HTTP метода POST.
Метод HTTP (англ. HTTP Method) – последовательность из любых символов, кроме управляющих и разделителей, указывающая на основную операцию над ресурсом. Обычно метод представляет собой короткое английское слово, записанное заглавными буквами. Название метода чувствительно к регистру.
Метод POST применяется для передачи пользовательских данных заданному ресурсу. Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные (в примере с блогами — текст комментария) включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы на сервер.
Многократное повторение одних и тех же запросов POST может возвращать разные результаты (например, после каждой отправки комментария будет появляться одна копия этого комментария).
Сообщение ответа сервера на выполнение метода POST не кэшируется.
5 Введение системы в эксплуатацию
Этап введения приложения в эксплуатацию является одним из самых ответственных этапов в цикле производства веб-приложения. В конечном счете, именно от него зависит доступность приложения, сохранность исходных кодов и пользовательских данных, а также надежность приложения в целом.
5.1 Развертывание системы
Перед использованием системы необходимо установить требуемые в разделе 2.4 компоненты ОС. Подробную установку ОС, Apache, PHP и MySQL в данной работе рассматривать не имеет смысла, поэтому опишем установку разрабатываемой системы на готовый веб-сервер.
Для установки разрабатываемой системы требуется доступ к корневому каталогу веб-сервера (FTP или sFTP для удаленного доступа, либо прямой доступ на локальной ЭВМ) и базе данных MySQL.
Загрузим исполняемые сценарии системы в корневой каталог будущего месторасположения блога. Процесс загрузки файлов через FTP изображен на рисунке Рисунок 4.1.
Теперь необходимо создать в базе данных MySQL таблицу с кодировкой UTF-8. Это можно сделать либо с помощью графических оболочек для работы с БД, например: PHPMyAdmin. Navicat и д. р. Либо через MySQL консоль командой:
SET NAMES cp866;
CREATE DATABASE <Имя базы данных>;

Рисунок 4.1 – Процесс загрузки исполняемых сценариев на веб-сервер
Для упрощения установки и процедуры развертывания системы был разработан сценарий install. php, создающий все необходимые таблицы в базе данных и устанавливающий настройки системы по-умолчанию. Исходный код сценария находится в приложении 1. После запуска сценария на выполнение он предлагает заполнить параметры подключения к MySQL и, если они указаны верно, после нажатия кнопки «Make!» создает все необходимые таблицы в базе данных. Интерфейс исполнения сценария изображен на рисунке Рисунок 4.2. После установки можно перейти в панель администрирования и приступить к использованию системы.

Рисунок 4.2 – Интерфейс сценария установки системы
5.2 Описание разработанной панели администратора
После успешной установки системы с помощью сценария install. php перед администратором открывается страница логина в систему изображенная на рисунке Рисунок 4.3. На рисунке Рисунок 4.4 изображен интерфейс административной панели, на этой странице можно изменить основные настройки системы, удалять, добавлять, редактировать все записи в блоге. Интерфейс страницы редактирования записи в изображен на рисунке Рисунок 4.5.

Рисунок 4.3 – Страница авторизации в административную панель

Рисунок 4.4 – Интерфейс административной панели

Рисунок 4.5 – Интерфейс редактирования новости
Заключение
В рамках данной дипломной работы было разработана система управления содержимым интернет-дневника, был исследован вопрос разработки web-приложений с использованием современных средств разработки, в частности использование JavaScript библиотеки JQuery.
jQuery – библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML. Библиотека jQuery помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API по работе с Ajax.
Библиотека jQuery содержит функциональность, полезную для максимально широкого круга задач. Тем не менее, разработчиками библиотеки не ставилась задача совмещения в jQuery функций, которые подошли бы всюду, поскольку это привело бы к большому коду, бо́льшая часть которого не востребована. Поэтому была реализована архитектура компактного универсального ядра библиотеки и плагинов. Это позволяет собрать для ресурса именно ту JavaScript-функциональность, которая на нём была бы востребована.
Список использованных источников
1. Куправа и программирование баз данных средствами СУБД. [Текст] / – Москва: Издат. Мир, 1991. – 356 с.
2. , MySQL 5. В подлиннике. [Текст] / , – Санкт-Петербург: Издат. БКВ-Петербург, 2010. – 456 с.
3. , , MySQL оптимизация производительности. [Текст] / , , – Санкт-Петербург: Издат. Просвещение, 2010. – 478 с.
4. PHP и jQuery для профессионалов. [Текст] / Д. Ленгсторф – Санкт-Петербург: Издат. Вильямс, 2011. – 789 с.
5. Веб-мастеринг на 100%: HTML, CSS, JavaScript, PHP, CMS, AJAX, раскрутка. [Текст] / – Санкт-Петербург: Издат. Питер, 2010. – 976 с.
6. [Электронный ресурс] – Режим доступа: http:// – Загл. с экрана.
7. [Электронный ресурс] – Режим доступа: http://windows. – Загл. с экрана.
8. [Электронный ресурс] – Режим доступа: http://www. debian. org – Загл. с экрана.
Приложение А
Сценарий установки системы (install. php)
<?php
define('_VALID_MBLOG', '1');
define('MBLOG_PATH', dirname(__FILE__)); //определяем путь
//шаблоны
$pub_header_tpl = MBLOG_PATH."/inc/tpl/pub_header. tpl";
$pub_footer_tpl = MBLOG_PATH."/inc/tpl/pub_footer. tpl";
$title = "Install MBLOG";
include $pub_header_tpl;
if (file_exists(MBLOG_PATH.'/inc/config. php')){
echo "<h4>Configuration file was found!</h4>";
require_once(MBLOG_PATH.'/inc/config. php');
} else {
echo "<h4>Configuration file not found! Configure script manually.</h4>";
}
?>
<form action="./install. php" method="GET" name="install">
<label for="dblocation">Database server:</label> <input type="text" name="dblocation" value="<?php echo $dblocation?>" /><br />
<label for="dbuser">Database user:</label> <input type="text" name="dbuser" value="<?php echo $dbuser ?>" /><br />
<label for="dbpassword">Database password:</label> <input type="password" name="dbpassword" value="<?php echo $dbpassword?>" /><br />
<label for="dbname">Base name:</label> <input type="text" name="dbname" value="<?php echo $dbname ?>" /><br />
<label for="dbprefix">Tables prefix:</label> <input type="text" name="dbprefix" value="<?php echo $dbprefix?>" /><br />
<input type="submit" value="Make!"/>
</form>
<?php
if($_GET){
$dblocation = $_GET['dblocation'];
$dbuser = $_GET['dbuser'];
Продолжение приложения А
$dbpassword = $_GET['dbpassword'];
$dbname = $_GET['dbname'];
$dbprefix = $_GET['dbprefix'];
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpassword);
if(!$dbcnx) {
echo "can't connect";
exit();
}
if(!mysql_select_db($dbname,$dbcnx)){
echo "can't select db";
exit();
}
$query = <<<SQL
CREATE TABLE `{prefix}news` (
`id` int(11) NOT NULL auto_increment,
`title` tinytext NOT NULL,
`text` text NOT NULL,
`cut` tinyint(1) NOT NULL default '0',
`image` tinyint(1) NOT NULL default '0',
`date` datetime NOT NULL default ' 00:00:00',
`pub` tinyint(1) NOT NULL default '0',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SQL;
$query = str_replace('{prefix}', $dbprefix, $query);
mysql_query($query);
$query = "INSERT INTO `{prefix}news` (`title`, `text`, `cut`, `image`, `date`, `pub`) VALUES ('First good news', 'MBLOG sucesfuly installed!<hr id=\"cut\">', 0, 0, '".date('Y-m-d H:i:s')."', 1)";
$query = str_replace('{prefix}', $dbprefix, $query);
mysql_query($query);
$query = <<<SQL
CREATE TABLE `{prefix}images` (
Продолжение приложения А
`id` int(11) NOT NULL auto_increment,
`name` tinytext NOT NULL,
`title` tinytext NOT NULL,
`description` text NOT NULL,
`pub` tinyint(1) NOT NULL default '0',
`news_id` int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SQL;
$query = str_replace('{prefix}', $dbprefix, $query);
mysql_query($query);
}
include $pub_footer_tpl;
?>
Приложение Б
Сценарий авторизации (login. php)
<?php
define('_VALID_MBLOG', '1');
define('MBLOG_PATH', dirname(__FILE__)); //определяем путь
require_once MBLOG_PATH."/inc/config. php";
session_start(); //инициализирум механизм сесссий
if(!isset($_POST['ok'])) {
// если форма не заполнена, то выводим ее
echo '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Страница авторизации</title>
</head>
<body>
<table width="100%" height="100%">
<form method="POST" action="login. php">
<tr>
<td align="center">
<div style="text-align: center;">
<img src="./img/logo. png" alt="MBlog" style="align: center"/>
</div>
</div>
<table>
<tr>
<td>
<table>
<tr>
<td>Login:</td>
<td><input type="text" name="login" size="15"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="pass" size="15"></td>
</tr>
Продолжение приложения Б
</table>
</td>
</tr>
<tr>
<td align="center">
<input type="submit" name="ok" value="Login">
</td>
</tr>
</table>
</td>
</tr>
</form>
</table>
</body>
</html>
';
}
else {
if (($_POST['login'] !== $admlogin && $_POST['pass'] !== $admpassword) || ($_POST['login'] !== $contentlogin && $_POST['pass'] !== $contentpassword)) {
//такого пользователя нет
echo 'Введены не верные логин или пароль';
}
else { //пользователь найден
$_SESSION['login']=$_POST['login']; //устанавливаем login & pass
$_SESSION['pass']=$_POST['pass'];
Header("Location: adm. php"); // перенаправляем в админку
};
};
?>
Приложение В
Сценарий авторизации (logout.php)
<?php
session_start(); //инициализируем механизм сессий
session_destroy(); //удаляем текущую сессию
Header('Location: adm. php'); //перенаправляем в админку
?>
Приложение Г
Сценарий frontend (index.php)
<?php
define('_VALID_MBLOG', '1');
define('MBLOG_PATH', dirname(__FILE__)); //определяем путь
require_once MBLOG_PATH."/inc/config. php";
require_once MBLOG_PATH."/inc/settings. php";
require_once MBLOG_PATH."/inc/lng/".$language.".php";
require_once MBLOG_PATH."/inc/pager. class. php";
require_once MBLOG_PATH."/inc/js. php";
//шаблоны
$pub_header_tpl = MBLOG_PATH."/inc/tpl/pub_header. tpl";
$pub_footer_tpl = MBLOG_PATH."/inc/tpl/pub_footer. tpl";
$pub_down_tpl = MBLOG_PATH."/inc/tpl/pub_down. tpl";
$modes = array('page', 'news', 'include'); // все режимы
if (isset($inc)){ // позволяем включать режим include локально, на случай если allow_url_fopen и allow_url_include установлены в off
$mode = 'include';
} else {
if (isset($_GET['mode']) && in_array($_GET['mode'], $modes)) {
$mode = $_GET['mode'];
} else {
$mode = 'page'; //по умолчанию - страница
}
}
Продолжение приложения Г
/
* Page mode
*****/
if ($mode == 'page'){
if (isset($_GET['p']) && $_GET['p'] > 0){ //определяем страницу
$page = (int)$_GET['p'];
} else {
$page = 1;
}
$start = ($page - 1) * $pg_news_num;
$tot = mysql_query(prefix("SELECT count(*) FROM `{prefix}news` WHERE `pub` = 1;", $dbprefix));
$query = prefix("SELECT `id`, `title`, SUBSTRING(`text`,1, LOCATE('<hr id=\"cut\">', `text`) -1) AS `text`, `cut`, `image`, `date`, `pub` FROM `{prefix}news` WHERE `pub` = 1 ORDER BY `id` DESC LIMIT $start, $pg_news_num", $dbprefix) ;
$thm = mysql_query($query);
if($tot && $thm){
$total = mysql_fetch_array($tot);
$total_records = $total['count(*)']; //Всего найдено
}
$title = _MBLOG_NEWS; //текст заголовка
$header = "";
include $pub_header_tpl; //инклюдим заголовок
while($row = mysql_fetch_object($thm)) { //вывод блока с новостью
echo "<div class='newsitem'>\n";
echo "\t<h3><a href='?mode=news&id=".$row->id."'>".$row->title."</a></h3>\n";
echo "\t<span class='ndate'>".hdate($row->date, $month_names, $date_template)."</span>\n";
if ($row->image){
$img_num = mysql_query(prefix("SELECT count(*) FROM `{prefix}images` WHERE `news_id` = $row->id AND `pub` = 1", $dbprefix));
Продолжение приложения Г
$img_num = mysql_fetch_array($img_num);
$img_num = $img_num['count(*)'];
if ($img_num > 0){
echo "<span class='nimage'><a href='".$newsPath."?mode=news&id=".$row->id."#nimages'>".$img_num._MBLOG_IMAGES."</a></span>\n";
}
}
echo "\t<div>".$row->text."</div>\n";
if ($row->cut){
echo "\t<div class='more'><a href='".$newsPath."?mode=news&id=".$row->id."'>"._MBLOG_MORE."</a></div>\n";
}
echo "</div><!-- /.newsitem -->\n";
}
if ($total_records > $pg_news_num){
pager($total_records, $pg_news_num, $page, '?p=');
}
include $pub_footer_tpl; //инклюдим подвал
}
/
* News mode
*****/
if ($mode == 'news'){
if (isset($_GET['id'])) {
$id = (int)$_GET['id'];
$rows = mysql_query(prefix("SELECT * FROM `{prefix}news` WHERE `id` = $id AND `pub` = 1", $dbprefix));
$row = mysql_fetch_object($rows);
if ($row){
$title = $row->title; //текст заголовка
$header = $jqueryJs.$imgboxJs; // JavaScript
include $pub_header_tpl; //инклюдим заголовок
Продолжение приложения Г
//Начало новости
echo "<div class='newsitem'>\n";
echo "<h3>".$row->title."</h3>\n";
echo "\t<span class='ndate'>".hdate($row->date, $month_names, $date_template)."</span>\n";
if ($row->image){
$img_num = mysql_query(prefix("SELECT count(*) FROM `{prefix}images` WHERE `news_id` = $row->id AND `pub` = 1", $dbprefix));
$img_num = mysql_fetch_array($img_num);
$img_num = $img_num['count(*)'];
if ($img_num > 0){
echo "<span class='nimage'><a href='?mode=news&id=".$row->id."#nimages'>".$img_num._MBLOG_IMAGES."</a></span>\n";
}
}
echo "<div>".str_replace('<hr id="cut">', '', $row->text)."</div>\n";
echo "<div class='back'><a href='javascript:history. back()'>"._MBLOG_BACK."</a></div>";
//Запихиваем лайки и закрываем newsitem
echo "<!-- AddThis Button BEGIN -->
<div class=\"addthis_toolbox addthis_default_style \">
<a class=\"addthis_button_vk\"></a>
<a class=\"addthis_button_facebook\"></a>
<a class=\"addthis_button_twitter\"></a>
<a class=\"addthis_button_odnoklassniki_ru\"></a>
<a class=\"addthis_button_google_plusone\" g:plusone:count=\"false\"></a>
<a class=\"addthis_button_compact\"></a>
<a class=\"addthis_counter addthis_bubble_style\"></a>
</div>
<script type=\"text/javascript\" src=\"http:///js/300/addthis_widget. js#pubid=uksusoff\"></script>
<!-- AddThis Button END --></div><!-- /.newsitem -->\n";
if ($row->image){ //если ть картинки - выводим их таблицей под текстом
$imgs = mysql_query(prefix("SELECT * FROM {prefix}images WHERE news_id=".$id." AND pub=1;", $dbprefix));
$num_imgs = mysql_num_rows($imgs); //считаем количество картинок
Продолжение приложения Г
$trow = $num_imgs / $tcell; //количество строк
echo "<div id='nimages'>\n<table>\n";
for($i = 0; $i < $trow; $i++){
echo "\t<tr>\n";
for($h = 0; $h < $tcell; $h++){
$img = mysql_fetch_object($imgs);
if (!$img){
break;
}
echo "\t\t<td><a href='./image/".$img->name."' class='imgbox' id='img".$img->id."'><img src='./thumb/".$img->name."' alt='".$img->title."' title='".$img->description."' /></a></td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n</div>\n";
}
} else {
$title = "<p>"._MBLOG_NOT_FOUND."</p>"; //текст заголовка
include $pub_header_tpl; //инклюдим заголовок
echo "<p>"._MBLOG_NOT_FOUND."</p>";
echo "<a href='javascript:history. back()'>"._MBLOG_BACK."</a>";
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |


