Опубликован: 22.10.2016 | Доступ: свободный | Студентов: 828 / 84 | Длительность: 04:02:00
Лекция 1:

Обзор технологий. Начало кодирования

Лекция 1: 1234 || Лекция 2 >

PHP, MySQL

Листинг 1.1 пример 1.1 был достаточно прост, но дальше вам понадобится проверять работу каждого фрагмента кода в реальных условиях, отлаживать программу. Поэтому сразу создадим эти реальные условия (или убедимся, что они созданы). Если вы работаете на Windows, мы будем исходить из того, что вы установили USBWebserver и назначили для Apache порт 80; тогда в браузере вы сможете открыть ваш сайт по адресу http://localhost/ (либо http://localhost:8080/), а файлы для работы сайта (php, js, css) вы должны будете копировать в папку c:/usbws/root (или другую папку, в которую вы установили USBWebserver). Вместе с USBWebserver, кстати, должен сразу установиться phpMyAdmin.

Если вы работаете под Линуксом, папка для вашего сайта, скорее всего, будет расположена по адресу /var/www/html (хотя, возможно, и в домашней директории пользователя – это будет зависеть от настроек веб-сервера), а phpMyAdmin вы должны будете установить самостоятельно (например, командой консоли sudo apt-get install phpmyadmin).

Вся дальнейшая работа технически будет выглядеть так:

  1. вы пишете что-то (например, программный код) в файлы php, js, css в папке вашего сайта;
  2. открываете в браузере адрес http://localhost/ (иногда http://localhost/index2.php или index3.php) и смотрите, какие изменения произошли на сайте вследствие вашей работы с кодом;
  3. корректируете код – и затем повторяете пункты 1 и 2 (и при необходимости 3 – пока не "заработает").

От этих двух добавлений (Php и Mysql) сложность кода начнёт возрастать по экспоненте. Минимальный повторяемый фрагмент страницы ("шаблон") теперь будет выглядеть так (листинг 1.2 пример 1.2):

<?php
$title = 'Астрология';
$img1 = 'img1.jpg';
$html1 = 'Гадание по кофейной гуще';
$img2 = 'img2.jpg';
$html2 = 'Гадание по кофейной гуще';
$page = <<<PAGE
<!DOCTYPE html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>{$title}</title>
	<link rel="stylesheet" href="site.css" type="text/css">
	<script type="text/javascript" src="site.js"></script>
</head>
<body>
	<p><img src="files/{$img1}" />{$html1}</p>
	<p><img src="files/{$img2}" />{$html1}</p>
</body>
PAGE;
print $page;
?>
Листинг 1.2.

А если использовать базу данных, тогда ещё сложнее (листинг 1.3 пример 1.3):

<?php
$id = $_GET['id'];
$link = mysqli_connect("localhost", "unsinn", "go68dbs", "unsinn");
$sql = "SELECT * FROM `mypages` where id = " . (int) $id;
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_assoc($result);
$page = <<<PAGE
<!DOCTYPE html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>{$row['title']}</title>
	<link rel="stylesheet" href="site.css" type="text/css">
	<script type="text/javascript" src="site.js"></script>
</head>
<body>
	<p><img src="files/{$row['img1']}" />{$row['html1']}</p>
	<p><img src="files/{$row['img2']}" />{$row['html2']}</p>
</body>
PAGE;
print $page;
?>
Листинг 1.3.

Создайте в Папке сайта файл с именем index0.php и сохраните в этом файле приведённый код. На нашем учебном хостинге он выглядит так: index0.php?code. Обратите внимание на строчку:

$link = mysqli_connect("localhost", "unsinn", "go68dbs", "unsinn");

Слово "localhost" там правильное, обычно его менять не надо. А вот пользователя "unsinn" с паролем "go68dbs" и БД "unsinn" вы должны будете создать на своём mysql-сервере с помощью программы phpMyAdmin: откройте в браузере адрес, по которому расположен phpMyAdmin (возможно, это будет http://localhost/phpmyadmin/), найдите там раздел для выполнения sql-запросов, скопируйте туда следующий текст и выполните запрос (листинг 1.4 пример 1.4):

CREATE DATABASE IF NOT EXISTS `unsinn` ;
GRANT ALL PRIVILEGES ON `unsinn` . * TO 'unsinn'@'localhost' IDENTIFIED BY 'go68dbs';
flush PRIVILEGES;
Листинг 1.4.

И ещё мы должны создать в базе данных `unsinn` таблицу `mypages` со следующей структурой (листинг 1.5 пример 1.5):

CREATE TABLE IF NOT EXISTS `mypages` (
	`id` int(7) NOT NULL AUTO_INCREMENT,
	`title` text NOT NULL,
	`html1` text NOT NULL,
	`html2` text NOT NULL,
	`img1` varchar(99) NOT NULL,
	`img2` varchar(99) NOT NULL,
	PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
insert ignore into `mypages` (`id`, `title`, `html1`, `html2`, `img1`, `img2`) values 
(1, 'Астрология', 'Гадание по кофейной гуще', 
'Оптом, в розницу и на экспорт', 'img1.jpg', 'img2.jpg'),
(2, 'Воздушные шарики', 'Синие, белые и зелёные', 
'Круглые, квадратные, треугольные', 'img1.jpg', 'img2.jpg');
Листинг 1.5.

Этот код надо также вставить в поле для sql-запросов в phpMyAdmin и выполнить запрос. Сохраним этот код в файл source1.sql, чтобы потом не писать каждый раз код, а просто ссылаться на этот файл (и вы тоже сохраните его у себя на компьютере).

Лекция 1: 1234 || Лекция 2 >
Михаил Гутентог
Михаил Гутентог

Этот курс ( Практикум по разработке CMS ) создавался, когда у PHP была версия 5.3 или 5.4. Со временем какие-то функции PHP устаревают (mysql, each), какие-то начинают работать по-другому (empty). Пожалуйста, следите за изменениями в PHP по сайту php.net!

Александр Мельников
Александр Мельников

Изучаю курс "Практикум по созданию CMS" в листинге 4.3

$n = count($_GET); if ($n > 0) { $param = each($_GET); // самое простое: пропускаем только первый параметр if ($n > 1 || !isset($valid[$param['key']])) { _404(); }

При попытке просмотра в браузере получаю ошибку: Deprecated: The each() function is deprecated.  И не пойму как исправить ситуацию.