В этой статье будем создавать самую простую систему управления сайтом на PHP.
Цель – дать наглядное и простое понимание работы и взаимодействия файлов и функций сайта.
Это даст возможность наглядно увидеть структуру любого сайта. И уже на основе примера в дальнейшем можно создать более сложные структуры, плагины или разобраться в их работе.
Систему управления сайтом написана на PHP. Она позволяет изменять элементы на странице (заголовок, текст, ссылки в футере).
На странице для пользователя отображается меню, в котором пункты меню – это заголовки страниц.
– пакет DENWER (http://www.denwer.ru/);
– текстовый редактор Nodepad++ (https://stepfor.top/download/notepad/).
Предполагается, что у читателя уже есть базовые знания по работе с сайтами, поэтому все объяснения будут достаточно краткими. Но ведь всегда можно задать вопрос в комментариях 🙂
Для начала нужно установить пакет Denwer и создать в на локальном сервере папку, где будет проект этой программы.
c:\WebServers\home\localhost\www\название_папки\
В только что созданной папке, она будет корневой – нужно создать самый первый файл – это будут настройки подключения к серверу. Такой файл обязателен для любого сайта. В нем находятся настройки подключения к Базе данных.
config.php – файл конфигурации для подключения к серверу
<?php $mysql['server'] = 'localhost'; $mysql['name'] = 'root'; $mysql['pass'] = ''; $mysql['db'] = 'stepfortop'; ?>
– $mysql – переменная – ассоциативный массив, когда индексом массива является не число, а буква(слово);
Заполнены параметры массива:
– сервер – localhost
– имя сервера – root (в DENWER по умолчанию)
– пароль – без пароля (в DENWER по умолчанию)
– база данных – любое название
Если у сайта есть уже установленный движок, то он подключается к уже имеющейся Базе Денных. А в нашем случае мы все создаем с нуля.
Для начала работы, прежде всего нужно создать основную Базу данных, в которой будут хранится все данные сайта.
Для этого в корне сайта создаем еще один файл setup.php
<?php
include ("config.php");
mysql_connect ($mysql['server'], $mysql['name'], $mysql['pass']); //подключение к серверу
mysql_query ("CREATE DATABASE stepfortop"); //Команда создания Базы данных
?> После создания БД, файл Setup.php можно удалить.
Создать Базу данных можно и с phpMyAdmin (На localhost он находится по адресу: http://localhost/Tools/phpMyAdmin/index.php.)
Практически каждая страница должна будет подключатся к Базе Данных. Поэтому этап подключения выносится в отдельный файл.
Нужно создать файл Connect.php.
<?php /*Подключение к Базе данных*/ $id = mysql_connect ($mysql['server'], $mysql['name'], $mysql['pass']); //подключение к серверу $query = "SET NAMES 'utf8'"; $result = MYSQL_QUERY($query,$id); //определение кодировки подключения mysql_select_db($mysql['db']); //выбор Базы данных ?>
– $id – переменная, в ней запрос на подключение к серверу;
– mysql_connect – функция подключения к серверу.
– mysql_select_db – функция выбора Базы данных;
В самой базе данных нужно создать таблицу с необходимым количеством полей.
В нашем случае это таблица page, которая имеет 3 поля: id, заголовок, текст.
Для этого нужно создать папку install, а в ней файл index.php
<?php
include ("../config.php");
include ("../connect.php");
$query = "CREATE TABLE page (
id int(10) auto_increment,
header varchar(50),
text text,
PRIMARY KEY (id))"; //Создание таблицы c названием page и 4 колонками: порядковый номер, заголовок, текст, первичный ключ
mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
echo ("<br><b>Таблица страниц - установлена!</b><br>");
?> После создания этого файла, его нужно запустить, чтобы создать таблицы. После запуска, его можно(нужно) удалить.
Таким образом создается таблица, в которой будут хранится данные нашего сайта.
Теперь заполним данные таблицы. Для этого нужно создать папку insert, а в ней файл- index.php:
<?php
/*Наполнение таблицы page*/ header ('Content-Type: text/html; charset=utf-8');
include ("../config.php");
include ("../connect.php");
$query = 'INSERT INTO page
(header, text)
VALUES
("Главная страница", "Текст главной страницы")'; //Заполняем поля таблицы page
mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
echo ("<br><b>Запись внесена!</b><br>");
?> Если повторить запуск этого файла несколько раз, при этом менять значения для header и text, можно создать несколько страниц.
Вот, что получилось в phpMyAdmin
Традиционно после запуска этого файла – его нужно удалить.
Далее мы создадим другой файл для наполнения таблицы, чтобы само наполнение происходило через форму ввода данных.
Данные таблицы можем вывести на экран. А если добавить в них ссылки “редактировать” и “удалить” – получится настоящая административная панель сайта.
Также справа мы добавим ссылку на “Создание новой станицы” (то есть новой записи в таблице).
<?php
/*Вывод результата наполнения таблицы page*/ header ('Content-Type: text/html; charset=utf-8');
include ("config.php");
include ("connect.php");
$query = 'SELECT * from page'; //Выборка всех полей из таблицы page
$result = mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
?>
<div style='display:inline-box; float: right'><a href='create.php'>Создать новую страницу</a></div>
<?php
echo "<table border = 1>";
while ($out = mysql_fetch_array($result))
{
echo "<tr><td>".$out["id"]."</td><td>" .$out["header"]."</td><td>".$out["text"]."</td>
<td><a href = 'update.php?id=". $out["id"]."'>Редактировать</a></td>
<td><a href = 'delete.php?id=". $out["id"]."'>Удалить</a></td></tr> ";
}
echo "</table>";
?> – mysql_fetch_array – функция php, которая обрабатывает РЯД результата запроса $result, возвращая ассоциативный массив (также может численный массив или оба);
– while ($out = mysql_fetch_array($result) – цикл, который работает пока не закончатся ряды массива $result;
Файл Update.php – выводит форму, в которой поля заполнены данными из таблицы. Изменив значения полей и нажав кнопку отправки формы, обновленные данные отправляются в файл update_save.php, который уже сохраняет их в таблице.
<?php /*Редактирование ряда таблицы в БД*/header('Content-Type: text/html; charset=utf-8');
include ("config.php");
include ("connect.php");
$id = $_GET['id'];
$query = 'SELECT * from page where id = '.$id; //запрос - выбор строки с нужным ID
$result = mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
echo "<form action = 'update_save.php' method='post'><table>";
while ($out = mysql_fetch_array($result))
{
echo "<tr><td><input type = 'text' name = 'id' value = ".$out["id"]." readonly></td></tr>
<tr><td><input type = 'text' name = 'header' value = ".$out["header"]."></td></tr>
<tr><td><textarea name = 'text'>".$out["text"]."</textarea></td></tr>";
}
echo "<tr><td><input type = 'submit' value = 'Отправить'></td></tr></table>";
?> $_GET[‘id’] – ассоциативный массив переменных, переданных скрипту через параметры URL (известные также как строка запроса). В нашем файле берет результат id.
update_save.php – принимает данные из формы файла update.php и сохраняет их в Базу Данных
<?php /*Сохранение данных в таблицу в БД*/header('Content-Type: text/html; charset=utf-8');
include ("config.php");
include ("connect.php");
$id = $_POST['id'];
$header = $_POST['header'];
$text = $_POST['text'];
$query = 'UPDATE page SET header = "'. $header . '" , text = "' . $text . '" where id = '.$id; //запрос по изменению данных
mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
/* $_POST['id'] -
*/ ?>
<b>Изменения произведены успешно</b>
<br><a href='select.php'>Вернуться на страницу ввода данных</a> Файл delete.php задает уточняющий вопрос перед удалением.
<?php /*Удаление данных из таблицы в БД*/header('Content-Type: text/html; charset=utf-8');
echo "Вы действительно хотите удалить запись с номером ".$_GET['id']."?<br>";
echo "<a href='delete_save.php?id=".$_GET['id']."'>Да</a> <a href='select.php'>Нет</a>";
?> Файл delete_save.php получает через метод GET значение id и удаляет из таблицы page запись, у которой значение поля id соответствует переданному
<?php /*Удаление данных из таблицы в БД*/header('Content-Type: text/html; charset=utf-8');
include ("config.php");
include ("connect.php");
$id = $_GET['id'];
$query = 'DELETE FROM page where id = '.$id; //запрос по изменению данных
mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
?>
<b>Строка успешно удалена</b>
<br><a href='select.php'>Вернуться на страницу ввода данных</a> Если данные можно удалить – то их можно и создать/добавить. И добавлять данные мы будет уже не как ранее (выше), а с помощью формы, похожей на форму редактирования.
Для этого нужен файл create.php
<?php /*Создание данных в БД*/header('Content-Type: text/html; charset=utf-8');
include ("config.php");
include ("connect.php");
if(isset($_POST['save'])){
$query = "INSERT INTO page
(header, text)
VALUES
('".$_POST["header"]."','".$_POST["text"]."')"; //Заполняем поля таблицы page
mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
header("Location: ".$_SERVER['REQUEST_URI']."?showmsg=true"); //Перенаправление, чтобы очистить форму с добавлением строки для последующего GET запроса
}
function show_confirmation()
{
return isset($_GET['showmsg']) && $_GET['showmsg'] == 'true';
}
?>
<form action="create.php" method="post">
<label>Заголовок:</label><br/>
<input type = "text" name = "header" ><br/>
<label>Текст:</label><br/>
<textarea type = 'text' name = 'text'></textarea><br/>
<button type="submit" name="save">save</button>
</form>
<div style="display:<?php echo show_confirmation() ? 'block' : 'none'; ?>">
<b>Запись внесена!</b>
</div>
<br><a href='select.php'>Вернуться на страницу ввода данных</a> Чтобы обнулить данные метода POST используется перезагрузка (обнуление) страницы.
Чтобы вывести запись об успешном создании страницы применяется функция show_confirmation()
Все что было выше – это “Административная часть” сайта, то есть та часть программы, с помощью которой пользователь может вводить и изменять данные.
Далее нужно создать видимую часть сайта, а именно шаблон страницы и подключить к ней работу с Базой данных.
Создаем снова файл index.php
<?php /*Шаблон лицевой страницы сайта*/header('Content-Type: text/html; charset=utf-8');
include ("config.php");
include ("connect.php");
if (isset($_GET['id']))
$id = $_GET['id'];
else $id = 1;
$query = 'SELECT * from page'; //Выборка всех полей из таблицы page
$result = mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
while ($out = mysql_fetch_array($result))
{
echo "<a href = 'index.php?id=" .$out["id"]."'>".$out["header"]."</a> ";
}
echo "<div style='display:inline-box; float: right'><a href = 'update.php?id=" .$id."'>Редактировать страницу</a> <a href='create.php'>Создать новую страницу</a></div>";
echo "<hr>";
$query = 'SELECT * from page where id = '.$id; //Выборка всех полей из таблицы page
$result = mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
while ($out = mysql_fetch_array($result))
{
echo "<center><h2>".$out["header"]."</h2></center>";
echo "<hr>";
echo $out["text"];
}
?> Вот теперь ваш первый сайт полностью готов!
Посмотреть его можно по ссылке: http://localhost/название_сайта/
Далее его можно совершенствовать и наполнять. Он уже рабочий.
А тут можно скачать архив всех перечисленных выше файлов или посмотреть Демо (в демонстрационной версии возможен только просмотр, вносить изменения запрещено).[:en]В этой статье будем создавать самую простую систему управления сайта на PHP. Это даст возможность наглядно увидеть структуру любого сайта и связи его файлов. На основе примера в дальнейшем можно создать более сложные структуры и плагины.
Программа, написанная на PHP, которая позволяет изменять элементы на странице (заголовок, текст, ссылки в футере). На странице для пользователя отображается меню, в котором пункты меню – это заголовки страниц.
– пакет DENWER (http://www.denwer.ru/);
– текстовый редактор Nodepad++ (https://stepfor.top/download/notepad/).
Для начала нужно установить пакет Denwer и создать в на локальном сервере папку, где будет проект этой программы.
c:\WebServers\home\localhost\www\название_папки\
Для начала работы системы управления сайтом нужно подключится к серверу и создать внутри базу данных – таблицу, в которой будет хранится данные для создаваемой страницы.
Для этого в созданной папке нужно создать два файла: Config.php и Connect.php
Config.php – файл конфигурации для подключения к серверу
<?php $mysql['sever'] = 'localhost'; $mysql['name'] = 'root'; $mysql['pass'] = ''; $mysql['db'] = 'stepfortop'; ?>
– $mysql – переменная – ассоциативный массив, когда индексом массива является не число, а буква(слово);
Заполнены параметры массива:
– сервер – localhost
– имя сервера – root (в DENWER по умолчанию)
– пароль – без пароля (в DENWER по умолчанию)
– база данных – любое название
Connect.php – файл подключения к Базе данных
Далее нужно подключится к самой БД – базе данных:
<? php /*Подключение к Базе данных*/ $id = mysql_connect ($mysql['server'], $mysql['name'], $mysql['pass']); //подключение к серверу $query = "SET NAMES 'utf8'"; $result = MYSQL_QUERY($query,$id); //определение кодировки подключения mysql_select_db($mysql['db']); //выбор таблицы ?>
– id – переменная, которая подключает к Базе данных;
– mysql_select_db – функция выбора Базы данных;
В самой базе данных нужно создать таблицу с необходимым количеством полей, в нашем случае 4 поля.
Для этого нужно создать папку Install, а в ней файл Index.php
<? php
include ("../config.php");
include ("../connect.php");
$query = "CREATE TABLE page (
id int(10) auto_increment,
header varchar(50),
text text,
PRIMARY KEY (id))"; /оздание таблицы c названием page и 4 колонками: порядковый номер, заголовок, текст, первичный ключ
mysql_query ($query) or DIE (mysql_error()); //выполнение запроса $query
echo ("<br><b>Таблица страниц - установлена!</b><br>");
?> После создания этого файла, его нужно запустить, чтобы создать таблицы. После запуска, его нужно удалить.
Таким образом создается таблица, в которой будут хранится данные нашего сайта.
Если при открытие csv файла с помощью excel У все поехали ячейки - это простой… Read More
Простые шаги как происходит Загрузка проекта на Github и Автодеплой на сервер Сделайте работу проще! Read More
Миграция базы данных - помогают с этим библиотеки SQLAlchemy и Alembic. Read More
Основные Команды Git, которые точно пригодятся. Сохрани себе шпаргалку Git Read More
Установка PostgreSQL на сервер Read More
Как создать PrimaryKey в талице базы данных SQL [РЕШЕНО] Ошибка relation tablename_id_seq doesn't exist Read More