PHP MySQL разработка

PHP MySQL разработка — набор заданий для PHP-разработчика по взаимодействию языка и сервера БД MySQL: PHP магазин, поиск по базе, заполнение таблиц

Задание  1: PHP магазин

Создайте «двухстраничный» PHP магазин (index.php и basket.php). На главной странице магазина index.php должны располагаться товары в количестве не менее 5 наименований (не требуется, чтобы товары хранились в БД, это тема следующих заданий).  с названием, стоимостью и кнопкой «Добавить». Правом углу главной страницы должна выводиться корзина пользователя, а при нажатии на «Добавить», товар должен появляться в пунктах корзины.

На странице basket.php сделать возможным изменением пунктов корзины и кнопку/ссылку «Заказать». При нажатии на неё, показывать поля доставки товара, а после, результат заказа (уникальный идентификатор и перечень товаров с указанием количества) должен оправляться в базу (в одну таблицу БД)

  1. Если запланируете размещать количество товаров более 9, предусмотрите постраничное разбиение
  2. Для хранения корзины используйте сессионную переменную
  3. Количество товаров отдельного наименования должно меняться при добавлении в корзину

Задание  2: Заполнение связанных таблиц

Создайте две, связанные в MySQL  как «один ко многим» таблицы: категории (category) и товары (catalog). Создайте php-скрипт, который будет выводить товары из каталога с указанием категории, добавлять новые категории, добавлять новые товары с указанием категории

  1. при добавлении товара должен быть доступен элемент <select> с перечнем категорий (они выбираются из таблицы category)

Задание  3: Поиск данных по базе

Создайте одну таблицу catalog. Товары в каталоге должны содержать поля: название, описание,  категория, цена. Напишите скрипт, который будет принимать данные из HTML-формы и выводить отфильтрованные данные из таблицы. Форма должна содержать <select> с перечнем категорий и три текстовых поля фильтрации (название, описание,  цена).

Нужно получить HTML форму приблизительно такого содержания:

<h2>Поиск товара</h2>
<form action="">
<input type="text" name="title"/>
<input type="text" name="description"/>
<select name="category" id="">
  <option value="">Lorem.</option>
  <option value="">Nesciunt!</option>
  <option value="">Cumque.</option>
  <option value="">Reprehenderit.</option>
</select>
<input type="text" name="price"/>
</form>

Задание  4: Паджинация

Создайте таблицу catalog. Напишите PHP код, который при выводе товаров из базы реализует постраничное разбиение материала (http://htmllab.ru/php-pagination/).

Задание  5: Аутентификация

Создайте таблицу user с полями id, user, pass, status. Заполните её несколькими строками данных. Реализуйте форму входа на сайт: при совпадении имен пользователя и хэша вводимого пароля с значением хэша в таблице, в сессионную переменную отмечать о корректной аутентификации и создавать ссылку «Выход» на странице. При некорректном вводе отмечать, что данные введены некорректно и выводить фразу «Некорректный ввод». Подсказка: логин: John, пароль: qwerty.

Задание  6: Заполнение данными сторонней таблицы

Дана MySQL-таблица. Написать php-скрипт, который будет заполнять таблицу данными.


DROP TABLE IF EXISTS `wp_posts`;
CREATE TABLE IF NOT EXISTS `wp_posts` (
  `ID` bigint(20) unsigned NOT NULL,
  `post_author` bigint(20) unsigned NOT NULL DEFAULT '0',
  `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_content` longtext NOT NULL,
  `post_title` text NOT NULL,
  `post_excerpt` text NOT NULL,
  `post_status` varchar(20) NOT NULL DEFAULT 'publish',
  `comment_status` varchar(20) NOT NULL DEFAULT 'open',
  `ping_status` varchar(20) NOT NULL DEFAULT 'open',
  `post_password` varchar(20) NOT NULL DEFAULT '',
  `post_name` varchar(200) NOT NULL DEFAULT '',
  `to_ping` text NOT NULL,
  `pinged` text NOT NULL,
  `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_content_filtered` longtext NOT NULL,
  `post_parent` bigint(20) unsigned NOT NULL DEFAULT '0',
  `guid` varchar(255) NOT NULL DEFAULT '',
  `menu_order` int(11) NOT NULL DEFAULT '0',
  `post_type` varchar(20) NOT NULL DEFAULT 'post',
  `post_mime_type` varchar(100) NOT NULL DEFAULT '',
  `comment_count` bigint(20) NOT NULL DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=2068 DEFAULT CHARSET=utf8;

Примечания:

  1. Эта таблица из БД WordPress; в процессе выполнения этого упражнения познакомитесь со структурой
  2. Рассмотреть варианты вставки данных через форму (по одной записи, при этом HTML-форму сделать минимальной, чтобы при проверке и работе не вводить 100-500 полей), а также пакетно, через LOAD DATA
  3. Не нужно уточнять у меня, что значит то или иное поле — пользуйтесь инетом

Задание  7: Содержимое сайта

Создайте простую таблицу для хранения страниц сайта. Реализуйте добавление, просмотр, удаление страниц сайта.

Примечания:

  1. Основной материал страниц должен добавляться через произвольный визивиг-редактор
  2. Адреса страниц должны быть реализованы в виде «чистых ссылок»

Задание  8: Игры на PHP

Это задание для отдыха и отвлечения от трудностей квеста. Нужно выполнить минимум одно задание из перечня

  1. Создайте на PHP игру пользователя с компьютером — «Крестики-нолики» (пример игры на JavaScript). Это задание для разминки и не требует работы с БД. Используйте сессию.
  2. Создайте игру «Угадай слово». Правила: есть база с таблицей слов и описаний этих слов. При старте игры, из базы  выбирается произвольное слово и описание. Пользователю показывается описание и поля ввода для ввода букв слова. Все правильно введенные буквы учитываются, а неправильно введённые не показываются при проверке, чтобы пользователь продолжал ввод. Чем меньше ходов у пользователя — тем лучше
  3. Создать произвольную (от крестиков-ноликов, до монополии с шахматами) игру в двухпользовательском режиме. Для совместной игры нужно генерировать уникальный код и присылать партнеру по игре
  4. Создать игру морской бой. Режим работы с компьютером или парный
  5. Создайте игру, в которой нужно периодически заходит на страницу и «прокачивать» уровень игрового персонажа (героя или здания, или тому подобное). После каждого повышения уровня, должно требоваться больше времени на последующее улучшение. Используйте header() для обновления страницы после истечения требуемого времени. По-хорошему, игра должна использовать базу, но можно и на сессиях. Присмотритесь к Travian и Ogame
  6. Создайте игру по аналогии с Монополией. Будьте аккуратны, это затягивает 🙂 Предусмотрите многопользовательский режим.

Задание  9: Хранение переписки

Создать две таблицы users и messages для хранения переписки между пользователями. Реализовать возможность закрытой переписки между  отдельными пользователями по аналогии с vk.com/fb.com (но без JS и AJAX — с ними можно экспериментировать после выполнения задания или прохождения квеста). Предусмотреть аутентификацию пользователей. При проверке задания — пришлите мне логин и пароль, для переписки с вами.

Задание  10: Автозамена слов

Есть таблица words, в которой хранятся слова и некоторые URL (создать самостоятельно). Создать простую форму из <textarea> и кнопки отправки формы. Написать скрипт, который будет заменять все слова полученные из многострочного текстового поля на те же слова, но с гиперссылкой на URL из базы.