Автор работы: Пользователь скрыл имя, 14 Ноября 2013 в 09:42, доклад
Начало - первый шаг в создании управляемого сайта - подключение к Базе Данных (БД)
Тексты наших страниц мы будем хранить в базе данных. Почему не в файлах? Да потому что MySQL гораздо удобнее и проще, чем текстовые файлы! А если еще подумать о том, что БД еще и функциональнее, то все вопросы отпадут. Итак, наша первая задача - создать пользователя БД и саму базу. Заходим в нашу панель управления на хостинге, выбираем пункт меню "Управление пользователями MySQL" и жмем "Добавить", вводим описание "пользователь админки" и жмем еще раз на кнопку "Добавить".
Код админки на PHP+MySQL
Структура таблицы `pages`:
CREATE TABLE `pages` (
`id` int(10) unsigned NOT NULL auto_increment,
`body` text NOT NULL,
`title` varchar(255) NOT NULL default '',
`metatitle` varchar(255) NOT NULL default '',
`metakeywords` varchar(255) NOT NULL default '',
`metadescription` text NOT NULL,
`sortirovka` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Код файла подключеня к базе данных - 'inc/connect.php':
<?php //этой строкой говорим, что пхп код начался. В дальнейшем будем писать проще: "<?", т.к. наш хостинг позволяет делать урощенную запись.
$link = mysql_connect('dbhost', 'dbuser', 'password') or die("Не могу соединиться");
mysql_select_db('dbname', $link);
// а в последней строке мы укажем, что пхп код закончился
?>
Код файла админки - 'adm/index.php':
<?
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() закончилась
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($_
// а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем
else
$query = "UPDATE pages SET
WHERE id = '".$_POST['id']."';";
// непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем)
mysql_query($query, $link);
// ну и просто выводим крикливую надпись, что скрипт отработал
echo '<h3>Данные обновлены</h3>';
}
function show_pages() {
// добавляем javascript, который позволит перед удалением спросить пользователя, уверен ли он в этом.
?>
<script language='JavaScript1.1' type='text/javascript'>
<!--
function Delete(N)
{
if(confirm("Удалить запись?"))
{
parent.location='?del='+N;
}
else
{
return false;
}
}
-->
</SCRIPT>
<?
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 colspan="2">
<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>
<td>
<a
href="#" OnClick="Delete('.$row['id'].'
</td>
</tr>';
// добавили ячейку с ссылкой на удаление и не забыли вставить colspan="2" у заглавной ячейки
// думаю вы заметили, что в тексте ссылки мы заменили $row{'id'] на $row['title'] и добавили обработку функцией stripslashes()
}
echo '
</table>';
}
function delete_pages(){
require '../inc/connect.php';
$query = "DELETE FROM pages WHERE id = '".$_GET['del']."';";
mysql_query($query, $link);
echo '<h3>Данные удалены</h3>';
}
if($_GET['del']) delete_pages();
if($_POST['edit']) complete(); // если была нажата кнопочка "отправить", которая именуется edit - тогда вызываем функию complete()
if($_GET['id']) show_form(); // если мы нажали на ссылку в функции show_pages(), то значит мы передали в переменную $_GET['id'] тот самый id, который нас интересует. Поэтому в этом слчае вызываем форму редактирования нашей странички.
else show_pages(); // ну, а если мы не выбрали определенный id - запускаем нашу функцию выбора id.
?>
и файл вывода 'index.php':
<?
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><?=$row['metatitle'];?>
<META NAME="description"
CONTENT="<?=htmlspecialchars(
<META NAME="keywords"
CONTENT="<?=htmlspecialchars(
</head>
<body>
<?
// меню из БД
echo 'Наше меню: ';
$resultMenu = mysql_query("SELECT * FROM pages ORDER BY id;", $link);
$rowMenu = mysql_fetch_array($resultMenu)
echo '<a href="?id='.$rowMenu['id'].'">
while($rowMenu = mysql_fetch_array($resultMenu)
echo ' · <a href="?id='.$rowMenu['id'].'">
}
?>
<!-- либо делаем меню ручками, по принципу: -->
<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>
Бонус - добавляем в нашу админку TinyMCE
Заходим на сайт
разработчиков TinyMCE http://tinymce.moxiecode.com/
<script language="javascript"
type="text/javascript" src="../jscripts/tiny_mce/
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas",
language : "ru_CP1251",
document_base_url : "../index.php",
convert_urls : false
});
</script>
и не помешает записать свой
css в файл "../jscripts/tiny_mce/themes/
Информация о работе Как создать какбинет администратора для сайта