Автор работы: Пользователь скрыл имя, 14 Ноября 2013 в 09:42, доклад
Начало - первый шаг в создании управляемого сайта - подключение к Базе Данных (БД)
Тексты наших страниц мы будем хранить в базе данных. Почему не в файлах? Да потому что MySQL гораздо удобнее и проще, чем текстовые файлы! А если еще подумать о том, что БД еще и функциональнее, то все вопросы отпадут. Итак, наша первая задача - создать пользователя БД и саму базу. Заходим в нашу панель управления на хостинге, выбираем пункт меню "Управление пользователями MySQL" и жмем "Добавить", вводим описание "пользователь админки" и жмем еще раз на кнопку "Добавить".
//А вот поправленный вывод стоит прокоментировать
if($_POST['edit']) complete(); // это так и было
if($_GET['id']) show_form(); // это новый момент, если мы нажали на ссылку в нашей новой функции, то значит мы передали в переменную $_GET['id'] тот самый id, который нас интересует. Поэтому в этом слчае вызываем форму редактирования нашей странички.
else show_pages(); // ну, а если мы не выбрали определенный id - запускаем нашу последнюю функцию выбора id.
?>
А вот теперь наш файл пора протестировать. На данный момент Вы уже сможете почувствовать себя создателем полноценной админки ;-) На всякий случай дублирую новый полный код файла index.php из папки 'adm'
<?
function show_form(){
// подключаем файл с настройками подключения к БД
require '../inc/connect.php';
//делаем запрос к БД, на данный момент на следующие две строчки не стоит обращать внимание, объясню их потом, посокльку на данном этапе они еще не используются.
$result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);
$row = mysql_fetch_array($result);
?>
<!-- далее идет обычный HTML -->
<form action="" method="post">
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
<tr bgcolor="#B0ADC3">
<td><p>Текст страницы</p></td>
</tr>
<tr bgcolor="#ffffff">
<td>
<textarea name="body" rows="20" cols="59" class="enter">
<?// "<?=" тоже самое, что и "<? echo", т.е. вывод на экран, что выводим объясню позже ;-) ?>
<?=stripslashes($row['body']);
</textarea>
</td>
</tr>
<tr>
<td bgcolor="#1F2760" align="right">
<input type="hidden" name="id" value="<?=$_GET['id'];?>">
<input type="submit" value="отправить" name="edit">
</td>
</tr>
</table>
</form>
<?php
} // функция show_form() закончилась
function complete(){
// подключаем файл с настройками подключения - это мы уже знаем.
require '../inc/connect.php';
// делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд.
$result = mysql_query("SELECT * FROM pages WHERE id = '".$_POST['id']."';", $link);
// перекидываем данные из MySQL в пхпшный ассоциативный массив
$row = mysql_fetch_array($result);
// проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД
if(empty($row['id']))
$query = "INSERT INTO pages (body) VALUES ('".mysql_real_escape_string($
)";
// а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем
else
$query = "UPDATE pages SET
WHERE id = '".$_POST['id']."';";
// непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем)
mysql_query($query, $link);
// ну и просто выводим крикливую надпись, что скрипт отработал
echo '<h3>Данные обновлены</h3>';
}
function show_pages() {
require '../inc/connect.php';
echo '
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
<tr bgcolor="#B0ADC3">
<td>
<a href="?id=new">Добавить страницу</a>
</td>
</tr>
</table>';
echo '
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
<tr bgcolor="#B0ADC3">
<td>
<b>Номер страницы</b>
</td>
</tr>';
$result = mysql_query("SELECT * FROM pages ORDER BY id;", $link);
while($row = mysql_fetch_array($result)){
echo '
<tr bgcolor="#ffffff">
<td>
<a
href="?id='.$row['id'].'">'.$
</td>
</tr>';
}
echo '
</table>';
}
// функция настолько
простая, что мне даже и
if($_POST['edit']) complete(); // если была нажата кнопочка "отправить", которая именуется edit - тогда вызываем функию complete()
if($_GET['id']) show_form(); // если мы нажали на ссылку в функции show_pages(), то значит мы передали в переменную $_GET['id'] тот самый id, который нас интересует. Поэтому в этом слчае вызываем форму редактирования нашей странички.
else show_pages(); // ну, а если мы не выбрали определенный id - запускаем нашу функцию выбора id.
?>
Вывод данных нашего сайта с админкой
Создаем файл index.php в корень нашего сайта (на примере нашего хостинга он будет в папке '/www/site1/public_html/'
<?
require 'inc/connect.php';
//htmlspecialchars() Преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались.
$_GET['id'] = htmlspecialchars($_GET['id']);
// если у нас не запрашивали никакую определенную страницу, то будем выводить нашу самую первую. Если Вы ее давно удалили, поставьте вместо единички идентификатор той странички, которую Вы хотели бы грузить по умолчанию
if(empty($_GET['id'])) $_GET['id'] = 1;
$result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);
$row = mysql_fetch_array($result);
?>
<html>
<head>
<title></title>
</head>
<body>
<!-- меню делаем ручками, по принципу: -->
<a href="?id=1">первая страница</a>
<a href="?id=2">вторая страница</a>
<a href="?id=3">контакты</a><br /><br />
<?//stripslashes() - Удаляет экранирование символов - а их мы понаставили в админке, когда загружали данные в базу с помощью функции mysql_real_escape_string()?>
<?=stripslashes($row['body']);
</body>
</html>
В общем за 2 минуты у нас готов вывод данных. А следовательно, можно считать админку и сайт готовыми ;-) Как Вы понимаете, оформление сайта с помощью html я объяснять не буду, думаю очень просто догадаться куда вставить Ваш замечательный код для дизайна сайта.
Делаем управляемые META-теги, т.е. задумываемся о раскрутке в поисковых системах
Впринципе, сайт и админку можно считать готовыми, но я бы предложил их улучшить. Когда мы создаем сайт, нельзя забывать про поисковые системы. Для них необходимо указывать такие вещи как тег title и метатеги keywords и description. Сейчас мы этим и займемся. Заодно, как Вы могли заметить, неудобно выбирать страницы по номерам, было бы неплохо дать им названия. Итак, заходим в нашу БД и добавляем новые поля, выполнив запрос:
ALTER TABLE `pages` ADD `title` VARCHAR( 255 ) NOT NULL ,
ADD `metatitle` VARCHAR( 255 ) NOT NULL ,
ADD `metakeywords` VARCHAR( 255 ) NOT NULL ,
ADD `metadescription` TEXT NOT NULL;
Теперь подправим нашу админку, в которой учтем новые поля. Добавляем в нашу функцию show_form() новые элементы формы, теперь она будет выглядеть так:
<?
function show_form(){
// подключаем файл с настройками подключения к БД
require '../inc/connect.php';
//делаем запрос к БД, на данный момент на следующие две строчки не стоит обращать внимание, объясню их потом, посокльку на данном этапе они еще не используются.
$result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);
$row = mysql_fetch_array($result);
?>
<!-- далее идет обычный HTML -->
<form action="" method="post">
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
<tr bgcolor="#B0ADC3">
<td>
<p>Название страницы (title)</p>
</td>
</tr>
<tr bgcolor="#ffffff">
<td>
<input
type="text" name="title" value="<?=htmlspecialchars(
</td>
</tr>
<tr bgcolor="#B0ADC3">
<td>
<p>Заголовок страницы (Meta - title)</p>
</td>
</tr>
<tr bgcolor="#ffffff">
<td>
<input
type="text" name="metatitle" value="<?=htmlspecialchars(
</td>
</tr>
<tr bgcolor="#B0ADC3">
<td>
<p>Ключевые слова (Meta - keywords)</p>
</td>
</tr>
<tr bgcolor="#ffffff">
<td>
<input
type="text" name="metakeywords" class="enter"
size="79" value="<?=htmlspecialchars(
</td>
</tr>
<tr bgcolor="#B0ADC3">
<td>
<p>Описание (Meta - description)</p>
</td>
</tr>
<tr bgcolor="#ffffff">
<td>
<input
type="text" name="metadescription" class="enter"
size="79" value="<?=htmlspecialchars(
</td>
</tr>
<tr bgcolor="#B0ADC3">
<td><p>Текст страницы</p></td>
</tr>
<tr bgcolor="#ffffff">
<td>
<textarea name="body" rows="20" cols="59" class="enter">
<?// "<?=" тоже самое, что и "<? echo", т.е. вывод на экран, что выводим объясню позже ;-) ?>
<?=stripslashes($row['body']);
</textarea>
</td>
</tr>
<tr>
<td bgcolor="#1F2760" align="right">
<input type="hidden" name="id" value="<?=$_GET['id'];?>">
<input type="submit" value="отправить" name="edit">
</td>
</tr>
</table>
</form>
<?
} // функция show_form() закончилась
Поменяли форму, теперь надо заменить функцию complete(), в которой мы записываем наши данные в базу:
<?function complete(){
// подключаем файл с настройками подключения - это мы уже знаем.
require '../inc/connect.php';
// делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд.
$result = mysql_query("SELECT * FROM pages WHERE id = '".$_POST['id']."';", $link);
// перекидываем данные из MySQL в пхпшный ассоциативный массив
$row = mysql_fetch_array($result);
// проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД
if(empty($row['id']))
$query = "INSERT INTO pages
(body,
title,
metatitle,
metakeywords,
metadescription)
('".mysql_real_escape_string($
'".mysql_real_escape_string($_
'".mysql_real_escape_string($_
'".mysql_real_escape_string($_
'".mysql_real_escape_string($_
Информация о работе Как создать какбинет администратора для сайта