Criação de um mini sistema de registro, onde será aplicado o processo de adição, atualização e remoção de dados do banco de dados MySQL.

Overview

CRUD PHP MVC

Criação de um mini sistema de registro, onde será aplicado o processo de adição, atualização e remoção de dados do banco de dados MySQL.

  • A primeira coisa a fazer é criar o arquivo composer.json na pasta raiz do projeto, com o seguinte padrão.
{
  "name": "starting/mvc",
  "autoload": {
    "psr-4": {
      "App\\":"app/"
    }
  }
}
  • Depois de criar seu arquivo composer.json, você precisa executar o seguinte comando em seu terminal, lembre-se de que você precisa estar na pasta raiz de seu projeto.
  composer install

se tudo estiver ok, uma pasta VENDOR foi criada em seu diretório, esta pasta contém os arquivos necessários para realizar as importações automáticas de nossos arquivos PHP.

  • Agora, no diretório raiz, criaremos a seguinte estrutura de pastas e arquivos para iniciar o projeto CRUD PHP.

📂 app
📂 resources
     📂 _components
       📃 footer.html
       📃 header.html
     📂 _styles
       📃 default.css
📃 index.php


  • Arquivo "/resources/_components/footer.html"
  <footer>
    <p>footer</p>
  </footer>

  • Arquivo "/resources/_components/header.html"
  <header>
    <p>header</p>
  </header>

  • Arquivo "/resources/_styles/default.css"
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
  header, footer {
    width: 100%;
    height: 55px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 8px;
    background-color: #33303c;
    color: aliceblue;
    font-size: 100%;
    font-weight: 700;
    text-transform: uppercase;
    text-align: center;
  }
  main {
    width: 100%;
    min-height: calc(100vh - 110px);
  }
  .container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }

  • Arquivo "/resources/view/home.php"
  <!DOCTYPE html>
  <html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="../../resources/_styles/default.css" />
    <title>PHP MVC CRUD OO</title>
  </head>
  <body>
    <?php include_once __DIR__.'/../_components/header.html'; ?>

    <main class="container">
      <!-- O ARQUIVO DE "CADASTRAR.PHP" SERÁ CRIADO UM POUCO MAIS -->

      <a href="../../resources/view/cadastrar.php">
        <button style="padding: 8px 24px;">cadastrar</button>
      </a>

    </main>

    <?php include_once __DIR__.'/../_components/footer.html'; ?>

  </body>
  </html>

  • Arquivo "index.php"
<?php
  // Gerenciar o carregamento das classes
  require __DIR__.'/vendor/autoload.php';

  include_once __DIR__.'/resources/view/home.php';

  • Vamos agora criar nosso arquivo "cadastrar.php" dentro do diretório "/resources/view/cadastrar.php"
  • Vamos criar o arquivo "formulario.html" dentro do diretório "/resources/_components/formulario.html"
  • Em seguida, vamos importá-lo para o nosso arquivo "cadastrar.php"

  • Arquivo "cadastrar.php"
  <!DOCTYPE html>
  <html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="../../resources/_styles/default.css" />
    <title>Cadastrar</title>
  </head>
  <body>
    <?php include_once __DIR__.'/../_components/header.html'; ?>

    <main class="container">
      <!-- CONTAINER GLOBAL FORM -->
      <div class="container form" style="max-width: 400px; padding: 8px;">
        <!-- ADD COMPONENTE FORMULARIO -->
        <?php include_once __DIR__.'/../_components/formulario.html'; ?>

        <!-- BTN VOLTAR -->
        <a href="./home.php">
          <button style="padding: 8px 24px;">voltar</button>
        </a>
      </div>
    </main>

    <?php include_once __DIR__.'/../_components/footer.html'; ?>
  </body>
  </html>

  • Arquivo "formulario.html"
  <form method="post" style="margin: 16px 0px;">
    <label for="title">Title</label>
    <input
      style="width: 100%; padding: 8px; margin-bottom: 16px;"
      type="text" 
      name="title" 
      id="title"
      placeholder="Título"
      required
    />

    </br>
    
    <label for="descriptions">Descriptions</label>
    <textarea
      style="width: 100%; padding: 8px; margin-bottom: 16px;"
      name="descriptions" 
      id="descriptions" 
      cols="10" 
      rows="5"
      placeholder="Descrição da vaga"
      required
    ></textarea>

    </br>

    <div class="container" style="flex-direction: row;">
      <div class="container">
        <label for="active">
          <input type="radio" name="active" id="active" value="s" checked />
          Ativo
        </label>
      </div>

      <div class="container">
        <label for="not-active" style="margin-left: 16px;">
          <input type="radio" name="active" id="not-active" value="n" />
          Inativo
        </label>
      </div>
    </div>

    <button 
      style="padding: 8px 24px; margin-top: 16px; width: 100%;" 
      type="submit"
    >
      cadastrar
    </button>
  </form>

  • Vamos agora criar nossas classes dentro do diretório "app/Model/Crud/"
  Cadastrar.php
  Delete.php
  Select.php
  Update.php

  • Arquivo "Cadastrar.php" no caminho "/app/Model/Crud/Cadastrar.php"
  <?php

    namespace App\Model\Crud;

    class Cadastrar {
      /**
      * Indentificador único
      * @var integer
      */
      public $id;

      /**
      * Título
      * @var string
      */
      public $title;

      /**
      * Descrição
      * @var string
      */
      public $descriptions;

      /**
      * Se está disponível ou não
      * @var string(s/n)
      */
      public $active;

      /**
      * Data da publicação
      * @var string
      */
      public $data;
    }

  • Agora vamos importar nossa classe para o arquivo "cadastrar.php" "resources/view/cadastrar.php"
  • E vamos aproveitar para verificar se os dados estão chegando após o envio através do formulário
  <?php
    // Gerenciar o carregamento das classes
    require __DIR__.'/../../vendor/autoload.php';

    // Importação da nossa classe Cadastrar.php
    use \App\Model\Crud\Cadastrar;

    // Verificação dos dados enviados
    if(isset($_POST['title'],$_POST['descriptions'],$_POST['active'])) {

      $objetoCadastrar = new Cadastrar;
      $objetoCadastrar->title        = $_POST['title'];
      $objetoCadastrar->descriptions = $_POST['descriptions'];
      $objetoCadastrar->active       = $_POST['active'];

      // Imprima os dados na tela
      echo "<pre>";
      print_r($objetoCadastrar);
      echo "</pre>";
    }
  ?>
  <!DOCTYPE html>
  <html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="../../resources/_styles/default.css" />
    <title>Cadastrar</title>
  </head>
  <body>
    <?php include_once __DIR__.'/../_components/header.html'; ?>

    <main class="container">
      <!-- CONTAINER GLOBAL FORM -->
      <div class="container form" style="max-width: 400px; padding: 8px;">
        <!-- ADD COMPONENTE FORMULARIO -->
        <?php include_once __DIR__.'/../_components/formulario.html'; ?>

        <!-- BTN VOLTAR -->
        <a href="./home.php">
          <button style="padding: 8px 24px;">voltar</button>
        </a>
      </div>
    </main>

    <?php include_once __DIR__.'/../_components/footer.html'; ?>
  </body>
  </html>

Se tudo estiver bem, você deverá ver as seguintes informações na tela:

App\Model\Crud\Cadastrar Object
(
    [id] => 
    [title] => Ricardo
    [descriptions] => Santso
    [active] => s
    [data] => 
)

  • Agora vamos realmente registrar os dados no banco de dados, para isso substituiremos a seguinte linha de código dentro do arquivo "resources/view/cadastrar.php"
  // Imprima os dados na tela
  echo "<pre>";
  print_r($objetoCadastrar);
  echo "</pre>";

por

  $objetoCadastrar->registrar();

  • Criação da classe responsável pela conexão "app/Model/Connection/Database.php"
  <?php 

    namespace App\Model\Connection;

    use \PDO;

    class Database {
      /**
      * Host de conexão
      * @var string
      */
      const HOST = 'localhost';

      /**
      * Nome do banco de dados
      * @var string
      */
      const NAME = "rsanttos";

      /**
      * Usuário do banco de dados
      * @var string
      */
      const USER = 'phpmyadmin';

      /**
      * Senha do banco de dados
      * @var string
      */
      const PASSWORD = 'B9118rss';

      /**
      * Nome da tabela no banco de dados
      * @var string
      */
      private $table;

      /**
      * Conexão usando PDO
      * @var PDO
      */
      private $connection;

      /**
      * Definindo a tabela e instanciar a conexão
      * @param string
      */
      public function __construct($table = null) {
        $this->table = $table;
        $this->setConnection();
      }

      /** 
      * Criando a conexão
      */
      private function setConnection() {
        try {
          // Realizando conexão
          $this->connection = new PDO(
            'mysql:host='.self::HOST.';dbname='.self::NAME,
            self::USER,self::PASSWORD
          );

          // Tratando algum erro na hora do registro
          $this->connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $err) {
          // Não faça isso em produção, crie uma mensagem personalizada para o usuário e salve o erro em um log.
          die('ERROR:'.$err->getMessage());
        }
      }
    }

  • Vamos importar nossa classe "Database.php" para dentro de "/app/Model/Crud/Cadastrar.php"
  use \App\Model\Connection\Database;

  • Vamos criar nosso método de "registrar()" dentro da classe "/app/Model/Crud/Cadastrar.php"
  /**
    * Método registrar();
    * @return boolean
    */
  public function registrar() {
    // Definir data manualmente
    $this->data = date('Y-m-d H:i:s');

    // Inserir Dados
    $objetoDatabase = new Database('vacancies');
    $this->id = $objetoDatabase->insert([
      'title'        => $this->title,
      'descriptions' => $this->descriptions,
      'active'       => $this->active,
      'data'         => $this->data
    ]);

    return true;
  }

You might also like...
Rede social com laravel que possui as seguintes funcionalidades: Adicionar ao amigos, Criação de Grupo, Perfil, Criação de post, Comentários entre outros... Além de possuir um design
Rede social com laravel que possui as seguintes funcionalidades: Adicionar ao amigos, Criação de Grupo, Perfil, Criação de post, Comentários entre outros... Além de possuir um design

Social Network Sobre o Projeto Fala Devs! Estou trazendo aqui uma rede social com laravel que possui as seguintes funcionalidades: Adicionar ao amigos

 Formulário de contato utilizando HTML, CSS, Bootstrap, PHP, Javascript e conexão ao banco de dados MySQL.
Formulário de contato utilizando HTML, CSS, Bootstrap, PHP, Javascript e conexão ao banco de dados MySQL.

Formulário de Contato Tecnologias | Projeto | Licença | 🚀 Tecnologias Esse projeto foi desenvolvido com as seguintes tecnologias: HTML CSS PHP JavaSc

Projeto de uma página de login desenvolvido totalmente em PHP (puro) - com conexão a banco de dados MySQL.

Projeto Página de Login com conexão à Banco de dados: Tecnologias Utilizadas: HTML(Em documento PHP); PHP (Sem a utilização de Frameworks - puro); MyS

Realice un programa en cualquier lenguaje de programación en el cual implemente un sistema de registro de asistencias para los ayudantes y becarios del LTIC.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Atividade de transações em banco de dados II

Transaction php with postgres on csv O desafio aqui é implementar uma transação em diferentes linguagens de programação. Ao implementar uma transação

💻 ➔  Projeto de um website que possuí um Banco de Dados, feito juntamente com minha amiga Helena (hmiranda99).
💻 ➔ Projeto de um website que possuí um Banco de Dados, feito juntamente com minha amiga Helena (hmiranda99).

💈 Barber Shop Duhel Website feito para o projeto final do 2º Módulo da matéria de PW2. Visite o site clicando aqui 📎 Autores 👨‍💻 Helena Miranda 👨

Projeto de criação Sistema de eventos

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

📁 As Sessões são uma forma simples de armazenar dados para usuários, ficando mais confiável em manipular dados importantes

📁 As Sessões são uma forma simples de armazenar dados para usuários, ficando mais confiável em manipular dados importantes

Desarrollo de una aplicación muy sencilla, desarrollada con HTML - Bootstrap - PHP - (PDO)- Mysql. (Login - Registro - Create Read Update Delete)
Desarrollo de una aplicación muy sencilla, desarrollada con HTML - Bootstrap - PHP - (PDO)- Mysql. (Login - Registro - Create Read Update Delete)

php-mysql-aplicacion-web Desarrollo de una aplicación muy sencilla, desarrollada con HTML - Bootstrap - PHP - (PDO)- Mysql. (Login - Registro - Create

Tcc realizado na Etec de Guaianazes (2021),onde eu fui o back-end e Vinicius de Almeida foi o front-end.

TCC-Facilita+ Todos os arquivos do projeto de TCC (Facilita+) da Etec de Guaianases realizado em 2021 1° Para utilizar os arquivos,primeiro será nesce

Este es un sitema bibliotecario para registro de adquisiciones y prestamos para INATEC Siuna

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Un proyecto que crea una API de usuarios para registro, login y luego acceder a su información mediante autenticación con JSON Web Token

JSON WEB TOKEN CON LARAVEL 8 Prueba de autenticación de usuarios con una API creada en Laravel 8 Simple, fast routing engine. License The Laravel fram

CRUD utilizando laravel, sendo um site para criação de eventos e festivais.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Criação de um framework mvc do zero para estudo

PHP + PostgreSQL + PGAdmin4 + Composer A complete template for small projects Running the project To run this project you only need to run docker-comp

plugin de criação de PDF através do HTML fácil

pluginmpdf plugin de criação de PDF através do HTML Para inciar nosso pluginmpdf devemos instalar a lib abaixo. mPDF is a PHP library which generates

Sistema de Contas a Pagar e a Receber com PHP, MySQL e Bootstrap4

contas sistema-contas Demo: Aqui Sistema de Contas a Pagar e a Receber Feito com PHP, MySQL e Bootstrap 4 Usuário padrão: gustavo Senha padrão: 1234 É

Sistema de login usando PHP, MySQL(PDO),HTML,CSS e bootstrap
Sistema de login usando PHP, MySQL(PDO),HTML,CSS e bootstrap

sistemalogin link para entrar no projeto: https://williamsistema.000webhostapp.com/ Sistema de login usando PHP, MySQL(PDO),HTML,CSS e bootstrap Requi

Uma solucão simples para integrar sua aplicação Laravel a API PIX do Banco Central do Brasil
Uma solucão simples para integrar sua aplicação Laravel a API PIX do Banco Central do Brasil

Uma solução simples para integrar a sua aplicação Laravel com a API PIX do Banco Central do Brasil Instalação Publicando os assets Publicando o arquiv

Consulta os índices de correção do Banco Central via API

Índices correção Banco Central Realiza a consulta dos índices de correção através da API do Banco Central. Instalação composer require valbert/indices

Owner
Ricardo Santos
Desenvolvimento mobile, web e desktop
Ricardo Santos
Sistema de Contas a Pagar e a Receber com PHP, MySQL e Bootstrap4

contas sistema-contas Demo: Aqui Sistema de Contas a Pagar e a Receber Feito com PHP, MySQL e Bootstrap 4 Usuário padrão: gustavo Senha padrão: 1234 É

Gustavo Alves da Silva 1 Jul 19, 2022
Gestor de Contraseñas basado en Laravel 8 + PHP 8 + MySQL 8. Self-hosted Password Manager based on Laravel 8 + PHP 8 + MySQL 8.

English Gestor de Contraseñas Esta aplicación permite una gestión completa de contraseñas para múltiples tipos de servicios (web, ssh, teléfonos, wifi

Lito 134 Jan 2, 2023
PHP Laravel, MySQL and AIML chatbot engine and admin portal

Lemur Engine The Lemur Engine is a PHP/MySQL/AIML Chatbot. Written using the Laravel Framework. Demo You can demo the bot at the website: https://lemu

The Ramen Robot Disco Code 18 Nov 8, 2022
A simple CRUD built in PHP, Bootstrap and MySQL

✨ Notes-CRUD ✨ A simple CRUD built in PHP, Bootstrap and MySQL ?? Table of Contents Usage Contribute Screenshots ?? Usage Add the project to your envi

Bonnie Fave 7 Dec 7, 2022
Automatically Create professional ready to use Laravel REST API for MySQL Database With Postman Docs and JWT Authentication

Laravel Simple Rest API Generator An API Boilerplate to create a ready-to-use REST API in seconds with Laravel 8.x Install with Composer $ curl -s

null 5 Mar 12, 2022
Simple CRUD Product dengan PHP, MySQL & Bootstrap 5

Simple CRUD Product dengan PHP, MySQL & Bootstrap 5 Instalasi Pastikan sudah menginstall XAMPP atau sejenisnya Nyalakan service apache dan mysql buka

Gian Nurwana 1 Jan 3, 2022
A CRUD operation using php and Mysql database

This is a CRUD operation using php and Mysql database. In this when we add(CREATE) new user we need to submit add data in one form only in frontenf but in backend the data is storing in two different tables this is done using foreign key in Mysql.

Mohit Kumar 1 May 10, 2022
Html-Css-Php-Javascript-MySql dilleri ve bootstrap , sweetalert teknolojilerini kullanarak bir kütüphane sistemi yaptım.

Html-Css-Php-Javascript-MySql dilleri ve bootstrap , sweetalert teknolojilerini kullanarak bir kütüphane sistemi yaptım. Mysql de kütüphane adında bir

Merve 2 Sep 3, 2022
Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de login, guarda de rotas e cadastro de usuários no banco de dados MySQL

Times-de-Futebol-BR Descrição do Projeto Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de l

Lucas Henrique Pessutto 5 Mar 14, 2022
Scripts em PHP para um processo seletivo, onde trabalho com lógica básica para testar minhas competências na linguagem referida.

Processo-Seletivo-PHP-Junior Scripts em PHP para um processo seletivo, onde trabalho com lógica básica para testar minhas competências na linguagem re

Gabriel Silva Araujo 2 Dec 10, 2021