Облако ссылок Добавить сайт Опубликовать Пользователи Категории

Сервис полезной информации


Размещайте полезную информацию и одновременно продвигайте свои проекты.


Узнать больше

Работа с БД на 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 Просмотров сегодня +3 15 июня 2017 команда сайта
Реклама помогает поддерживать
и развивать наш сервис.


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