В этой статье будем создавать самую простую систему управления сайтом на PHP.
Цель — дать наглядное и простое понимание работы и взаимодействия файлов и функций сайта.
Это даст возможность наглядно увидеть структуру любого сайта. И уже на основе примера в дальнейшем можно создать более сложные структуры, плагины или разобраться в их работе.
Описание
Систему управления сайтом написана на PHP. Она позволяет изменять элементы на странице (заголовок, текст, ссылки в футере).
На странице для пользователя отображается меню, в котором пункты меню — это заголовки страниц.
Необходимые программы
— пакет DENWER (http://www.denwer.ru/);
— текстовый редактор Nodepad++ (https://stepfor.top/download/notepad/).
Предполагается, что у читателя уже есть базовые знания по работе с сайтами, поэтому все объяснения будут достаточно краткими. Но ведь всегда можно задать вопрос в комментариях 🙂
Для начала нужно установить пакет Denwer и создать в на локальном сервере папку, где будет проект этой программы.
c:\WebServers\home\localhost\www\название_папки\
Создание Базы Данных — БД
Config.php — файл конфигурации для подключения к серверу
В только что созданной папке, она будет корневой — нужно создать самый первый файл — это будут настройки подключения к серверу. Такой файл обязателен для любого сайта. В нем находятся настройки подключения к Базе данных.
config.php — файл конфигурации для подключения к серверу
1 2 3 4 |
<?php $mysql['server'] = 'localhost'; $mysql['name'] = 'root'; $mysql['pass'] = ''; $mysql['db'] = 'stepfortop'; ?> |
— $mysql — переменная — ассоциативный массив, когда индексом массива является не число, а буква(слово);
Заполнены параметры массива:
— сервер — localhost
— имя сервера — root (в DENWER по умолчанию)
— пароль — без пароля (в DENWER по умолчанию)
— база данных — любое название
Создание Базы Данных — setup.php
Если у сайта есть уже установленный движок, то он подключается к уже имеющейся Базе Денных. А в нашем случае мы все создаем с нуля.
Для начала работы, прежде всего нужно создать основную Базу данных, в которой будут хранится все данные сайта.
Для этого в корне сайта создаем еще один файл setup.php
1 2 3 4 5 6 |
<?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
Практически каждая страница должна будет подключатся к Базе Данных. Поэтому этап подключения выносится в отдельный файл.
Нужно создать файл Connect.php.
1 2 3 4 5 6 7 |
<?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 — функция выбора Базы данных;
Создание таблицы в БД — install — index.php
В самой базе данных нужно создать таблицу с необходимым количеством полей.
В нашем случае это таблица page, которая имеет 3 поля: id, заголовок, текст.
Для этого нужно создать папку install, а в ней файл index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?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
Теперь заполним данные таблицы. Для этого нужно создать папку insert, а в ней файл- index.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?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
Традиционно после запуска этого файла — его нужно удалить.
Далее мы создадим другой файл для наполнения таблицы, чтобы само наполнение происходило через форму ввода данных.
Вывод всех данных таблицы на экран — select.php
Данные таблицы можем вывести на экран. А если добавить в них ссылки «редактировать» и «удалить» — получится настоящая административная панель сайта.
Также справа мы добавим ссылку на «Создание новой станицы» (то есть новой записи в таблице).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?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.php — выводит форму, в которой поля заполнены данными из таблицы. Изменив значения полей и нажав кнопку отправки формы, обновленные данные отправляются в файл update_save.php, который уже сохраняет их в таблице.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?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_save.php — принимает данные из формы файла update.php и сохраняет их в Базу Данных
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?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 и delete_save.php
Файл delete.php задает уточняющий вопрос перед удалением.
1 2 3 4 5 6 7 |
<?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 соответствует переданному
1 2 3 4 5 6 7 8 9 10 |
<?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
Если данные можно удалить — то их можно и создать/добавить. И добавлять данные мы будет уже не как ранее (выше), а с помощью формы, похожей на форму редактирования.
Для этого нужен файл create.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<?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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?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 и Connect.php
Config.php — файл конфигурации для подключения к серверу
1 2 3 4 |
<?php $mysql['sever'] = 'localhost'; $mysql['name'] = 'root'; $mysql['pass'] = ''; $mysql['db'] = 'stepfortop'; ?> |
— $mysql — переменная — ассоциативный массив, когда индексом массива является не число, а буква(слово);
Заполнены параметры массива:
— сервер — localhost
— имя сервера — root (в DENWER по умолчанию)
— пароль — без пароля (в DENWER по умолчанию)
— база данных — любое название
Connect.php — файл подключения к Базе данных
Далее нужно подключится к самой БД — базе данных:
1 2 3 4 5 6 7 |
<? 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 — функция выбора Базы данных;
Install — Index.php
В самой базе данных нужно создать таблицу с необходимым количеством полей, в нашем случае 4 поля.
Для этого нужно создать папку Install, а в ней файл Index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<? 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>"); ?> |
После создания этого файла, его нужно запустить, чтобы создать таблицы. После запуска, его нужно удалить.
Таким образом создается таблица, в которой будут хранится данные нашего сайта.