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

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

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

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

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

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

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

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