Работа с БД на 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>
Здесь может быть ваша реклама! Блок 1. Настройка рекламы в личном кабинете.
Grai Просмотров сегодня +3 15 июня 2017 команда сайта
Комментарии ( 1 )
Dbrnjhbz
Доброго времени суток. Статья класс. Однако, у меня вместо всего этого просто белый экран. Подскажите что делать, пожалуйста. Не ужели я забыл включить ошибки в PHP. Уже отправил
10.06.2019
Оставить комментарий
Здесь может быть ваша реклама! Блок 2. Настройка рекламы в личном кабинете.
   🔔 Отдохните не много, может Вам будет интересно прочитать статьи пользователей нашего сайта.

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

Как редактировать и удалять новости на MVC и PHP

Как разрезать изображение на части и склеить обратно из фрагментов, используя PHP и Ajax

Безопасная авторизация пользователей на MVC и PHP

Как проверить радио кнопку checkbox без перезагрузки страницы ajax php

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

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

Создание профиля или личного кабинета пользователя на MVC, PHP и SQL

Тег a - это ссылка

Как на MVC при помощи PHP создать регистрацию с хешированием пароля

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

Как узнать ID последней вставленной записи
Здесь может быть ваша реклама! Блок 3. Настройка рекламы в личном кабинете.

→ Магазин матрасов в Москве с доставкой по России.
→ Недорогие детские матрасы от 2215 руб!
Реклама Интернет-магазин Каталог матрасов открыт 24 часа, 7 дней в неделю!
www.catalog-matrasov.ru
→ Продажа арендованных лесных участков в РБ от 30 000 руб. Жми сейчас!
РекламаПокупая участок вы получаете выгоду, вам не нужно бегать по инстанциям и заниматься бумажной волокитой, тратя свое время. Вы сразу приобретаете ГОТОВЫЙ БИЗНЕС – лесозаготовительное предприятие.
www.svetobor.com
→ BULLET-SHOP - сварка аргоном, полуавтомат, тюнинг авто!
Реклама Ремонтируем радиаторы, интеркулеры, пайпинг и ВСЁ из алюминия, чугуна, стали с ГАРАНТИЕЙ КАЧЕСТВА. Диагностика и ремонт подвески, трансмиссии, всех узлов и агрегатов
www.bullet-shop.pro
→ Доставка товаров из Китая в кротчайшие сроки без переплат!
Реклама Вам нужен товар из Китая мы с радостью доставим его, а также поможем с выкупом товара с ТаоБао, АлиБаба, 1688.com. Помощь в переводе при заключении сделок!
www.unikorob.ru
Реклама помогает поддерживать
и развивать наш сервис.


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