Работа с БД на MVC создание модели и выполнение SQL запросов. Часть Вторая


X

Работа с БД на MVC создание модели и выполнение SQL запросов. Часть Вторая

В этой статье используются материалы из первой части.

Создаем модель для MVC, в ней будем описывать процессы которые будут работать с базой данных.

В корне проекта создаем папку models. Затем заходим в директорию components и открываем файл Autoload.php.  В массив $array_paths добавляем папку models:

<?php
$array_paths = array(
    '/models/',
    '/components/',
    '/controllers/',
);
?>

 

Далее возвращаемся в корень проекта, открываем директорию components и создаем там файл Db.php. Его листинг приведен ниже:

<?
class Db
{
   public static function getConnection()
    { 
        // Получаем параметры подключения из файла
         $paramsPath = ROOT. '/config/db_params.php';
         $params = include($paramsPath);

        // Устанавливаем соединение 
        $dsn = "mysql:host={$params['host']};dbname={$params['dbname']}";
        $db = new PDO($dsn, $params['user'], $params['password']);
        // Задаем кодировку
        $db->exec("set names utf8");
        return $db;
     } 
}
?>


 

Возвращаемся в корень и заходим в директорию config. Создаем файл db_params.php, он будет содержать параметры подключения к БД.

<?php
return array(
    'host' => 'localhost',
    'dbname' => 'dbname',
    'user' => 'username',
    'password' => '123456',
);
?>

 

 Теперь возвращаемся в корень, открываем папку models и создаем файл Page.php. В файле создаем класс Page и четыре метода – добавление в БД, вывод из БД, редактирование и удаление строк БД:

<?php
class Page
{
    public static function InsertInfo()
    {
    }

    public static function GetInfo()
    {
    }

    public static function UpdateInfo($id)
    {
    }

    public static function DeleteInfo($id)
    {
    }
}
?>

 

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

<?php
class Page
{
    public static function InsertInfo($name)
    {
        $db = Db::getConnection();
        $sql = 'INSERT INTO `table`(`name`) VALUES (:name_bind)';
        $result = $db->prepare($sql);
        $result->bindParam(':name_bind',$name, PDO::PARAM_STR);;
        return $result->execute();
    }

    public static function GetInfo()
    {
        $db = Db::getConnection();
        $sql = 'SELECT * FROM `table`';
        $result = $db->query($sql);
        $index = array();
        $i=0;
        while($row=$result->fetch()) {
            $index[$i]['id'] = $row['id'];
            $index[$i]['name'] = $row['name'];
            $i++;
        }
        return $index;
    }

    public static function UpdateInfo($id, $name)
    {
        $db = Db::getConnection();
        $sql = 'UPDATE `table` SET name=:name_bind WHERE id=:id_bind';
        $result = $db->prepare($sql);
        $result->bindParam(':id_bind',$id, PDO::PARAM_INT);
        $result->bindParam(':name_bind',$name, PDO::PARAM_STR);
        return $result->execute();
    }

    public static function DeleteInfo($id)
    {
        $db = Db::getConnection();
        $sql = 'DELETE FROM `table` WHERE id=:id_bind';
        $result = $db->prepare($sql);
        $result->bindParam(':id_bind',$id, PDO::PARAM_INT);
        return $result->execute();
    }
}
?>

 

Если мы передаем в запрос какой-то параметр, то используем пред подготовленный запрос  и бинд-параметры. Это нужно, чтобы избежать SQL-инъекций и других подобных методов взлома.

Спускаемся в корень, заходим в директорию controllers открываем файл SiteController.php и изменяем его следующим образом:

<?php
class SiteController
{
    public function actionIndex()
    {
        if(isset($_POST['submitadd'])) {
            $name = $_POST['name'];
            Page::InsertInfo($name);
        }

        if(isset($_POST['submitupd'])) {
            $id = $_POST['id'];
            $name = $_POST['name'];
            Page::UpdateInfo($id,$name);
        }

        if(isset($_POST['submitdel'])) {
            $id = $_POST['id'];
            Page::DeleteInfo($id);
        }

        require_once(ROOT. '/views/site/index.php');
        return true;
    }
}
?>

 

Спускаемся в корень сайта, заходим в директорию views, далее в директорию site и открываем файл index.php. Тут сделаем так, чтобы все данные с БД выводились на странице, а добавление, редактирование и удаление было по формам:

<?php foreach (Page::GetInfo() AS $index): ?> 
    id: <?=$index['id']?>
    name: <?=$index['name']?>
<?php endforeach; ?>

<form action="" method="post" > 
Форма добавления строки в БД 
    <input name="name" type="text" value="name" />
    <input name="submitadd" type="submit" />
</form>

<form action="" method="post" >
    Форма редактирования строки БД
    <input name="id" type="text" value="id" />
    <input name="name" type="text" value="name" />
    <input name="submitupd" type="submit" />
</form>
Grai Просмотров сегодня +2 15 июня 2017 команда сайта
Комментарии ( 1 )
Dbrnjhbz
доброго времени суток. Статья класс. Однако, у меня вместо всего этого просто белый экран. Подскажите что делать, пожалуйста.
10.06.2019
Оставить комментарий
   🔔 Отдохните не много, может Вам будет интересно прочитать статьи пользователей нашего сайта.

Как на MVC с помощью PHP и MySQL создать счетчик просмотров страниц

Тег audio - это управление аудиофайлом

Тег br - это перенос строки

Тег abbr - это аббревиатура

Как сделать модуль бесплатной консультации на ajax

Основные запросы SQL работа с базой данных PHP

Как на MVC и PHP создать систему восстановления доступа с отправкой пароля на адрес электронной почты

Раскрутка группы Вконтакте с помощью лайков

В какие каталоги добавить свой сайт бесплатно

Как на MVC с помощью PHP загружать изображения на сервер

Тег address - это обозначения контактной информации автора

Как сделать алгоритм поиска по нескольким словам на PHP из БД

Создание сайтов и мобильных приложений от 5 500 руб. Любой сложности!
Реклама Собственный фреймворк. Большие и сложные проекты. ТОП 100 разработчиков РФ.
Создание сайтов от 5 500 руб.
Мобильные приложения от 50 000 руб.
irogex.ru
Наши проекты Инстаграм от 6 500 руб.
Конструкторы Ugears купить в Иркутске от 690 руб. с Доставкой!
Реклама UGEARS это путешествие в удивительную атмосферу гармонии природы и совершенства конструкторской мысли
Конструктор Навигатор дат - 690 руб.
Конструктор Комбайн - 2990 руб.
ugears-irk.ru
Оплата и Доставка Контакты
Стоматология в Улан-Удэ | ДентаВита | Шок цены от 100 руб!
Реклама От всей нашей семьи хотим выразить огромную благодарность стоматологической клинике
Осмотр, консультация от 150 руб.
Рентгеновский снимок от 100 руб.
dentavita03.ru
Наши цены Отзывы
Реклама помогает поддерживать
и развивать наш сервис.


Подробнее
(ссылка откроется в новой вкладке)
  Реклама