<MyRusakov.ru />

Создание движка на PHP и MySQL 2.0

Создание движка на PHP и MySQL 2.0

Видеокурс "Создание движка на PHP и MySQL 2.0" научит Вас создавать профессиональные движки для сайтов на PHP и MySQL с использованием ООП и паттерна MVC.

В курсе разобрана вся теория по структуре движка: как всё устроено, какие должны быть объекты, какая у них иерархия и как они взаимодействуют между собой.

В практической части будет создан движок с чистого листа. Будет создано ядро, все адаптеры, все вспомогательные классы, а также классы для работы с объектами базы данных. И чтобы курс был максимально полезным, будет создан движок для сайта MyRusakov.ru.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Создаём сокращатель URL. Часть 2.

Создаём сокращатель URL. Часть 2.

Всех с праздником! А сегодня мы продолжаем создавать сокращатель URL, а именно: создадим базу данных, где будут храниться наши ссылки и их код, и главный класс Shortener.

Создание базы данных

Я создам базу данных с именем website

create database website;

А в ней нам нужно создать таблицу. Назовём её, например, links.

create table links(
  id int not null primary key auto_increment,
  url varchar(255),
  code varchar(12),
  created datetime
);

Таблица элементарная, но всё-таки поясню:

  • id - уникальный идентификатор записи, не может быть пустым, автоматически увеличивается
  • url - url, который будет вводить пользователь через нашу форму, может быть достаточно длинным, но, думаю, 255 знаков нам хватит
  • code - краткий код, который будет сгенерирован для каждого url
  • created - просто дата и время, когда создана запись

Выполните этот запрос в консоли или в phpmyadmin, чтобы создать таблицу. Давайте теперь немного поговорим о нашей структуре файлов, она у нас такая:

  • classes
    • shortener.php
  • css
    • style.css
  • index.php
  • shorten.php
  • redirect.php
  • .htaccess

Откроем файл shortener.php и запишем следующее:

<?php
  class Shortener {
   protected $db;

   public function __construct() {
    $this->db = new Mysqli('localhost', 'root', '', 'website');
   }

   public function generateCode($num) {
    return base_convert($num, 10, 36);
   }

   public function makeCode($url) {
    $url = trim($url);

    if(!filter_var($url, FILTER_VALIDATE_URL)) {
     return '';
    }

    $url = $this->db->escape_string($url);

    $exsists = $this->db->query("SELECT code FROM links WHERE url = '{$url}'");

    if($exsists->num_rows) {
     return $exsists->fetch_object()->code;
    } else {
     $this->db->query("INSERT INTO links(url, created) VALUES('{$url}', NOW())");

     $code = $this->generateCode($this->db->insert_id);

     $this->db->query("UPDATE links SET code = '{$code}' WHERE url = '{$url}'");

     return $code;
    }
   }

   public function getUrl($code) {
    $code = $this->db->escape_string($code);
    $code = $this->db->query("SELECT url FROM links WHERE code = '$code'");

    if($code->num_rows) {
     return $code->fetch_object()->url;
    }

    return '';
   }
  }
?>

Вот такой вот немаленький класс у нас получился. Но, несмотря на размер, он довольно таки прост. Давайте разберёмся, что мы тут написали.

У нас есть четыре метода: __construct, generateCode, getUrl и makeCode. В конструкторе мы просто подключаемся к базе данных и записываем её объект в свойство $db, второй метод принимает число и на его основе генерирует какой-то код. Метод getUrl, как и следует из названия, возвращает url из базы данных по коду, который мы передадим в качестве аргумента. Если такой записи нет, то вернётся пустая строка. И вот, мы подошли к самому большому методу в этом классе - makeCode.

В этот метод передаётся url, который затем очищается от пробелов и проверяется на корректность с помощью filter_var. После мы обращаемся к базе данных и возвращаем код, соотвествующий переданному url. Если же кода нет, то мы записываем в базу данных url и дату создания, потом генерируем код с помощью метода generateCode, передав ему id последней вставленной записи, а дальше обновляем запись, вставив туда наш код, и возвращаем его из метода.

На этом я заканчиваю вторую часть по созданию сокращателя URL. Сегодня мы создали класс, который будет делать всю работу, и тем самым прошли уже больше половины пути. Обязательно просмотрите и поймите код, а если есть вопросы, можете задавать их в комментариях.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.