Ir para conteúdo
Fórum Script Brasil
  • 0

MVC PHP: incluindo o meu primeiro registro no banco de dados


Frank K Hosaka

Pergunta

O Bard ajuda muito, perguntei para ele se havia um exemplo de como incuir um registro de banco de dados, e ele disse que sim e passou o código.

O código dele é muito bacana, mas na hora de testar, nada deu certo. O exemplo do Bard presume que não existe um montes de pastas no MVC, mas o ruim é que eu não consegui enxergar como os dados do View passavam para o Controller.

Eu pergutei para o Bard se era possível passar os dados de um <form> de um View diretamente para uma classe no Controller, e ele respondeu: não, não e não.

Logo, o único jeito de fazer um MVC funcionar é tudo na base da tentativa e erro, como eu faço com o PHP desde 2020. Depois de 57 tentativas, consegui o meu código MVC para incluir um único registro no banco de dados:

index.php

<?php
require_once "Views/timeView.php";
======================================================
Views/timeView.php

<?php
if(isset($_POST['nome'])){
  require_once './Controllers/timeController.php';
  $time=new timeController();
  $time->salvarTime();exit;}
?>
<!DOCTYPE html>
<html>
<head>
<title>Cadastrar novo time</title>
</head>
<body>
<form method="post">
  <input type="text" name="nome" placeholder="Name">
  <input type="email" name="email" placeholder="Email">
  <input type="password" name="senha" placeholder="Senha">
  <input type="text" name="telefone" placeholder="Telefone">
  <input type="submit" value="Salvar Novo Time">
</form>
===========================================
Models/conexao.php

 <?php
class conexao{
    private $conexao;
    public function __construct(){
        $host='localhost';
        $user='root';
        $password='';
        $db='laravel';
        $this->conexao=new mysqli($host,$user,$password,$db);
        return $this->conexao;}
    public function consulta($sql){
        try {$query=$this->conexao->query($sql);}
        catch(Exception $e){echo $e->getMessage();exit;}
        $rows=$query->fetch_all(MYSQLI_ASSOC);
        return $rows;}}
=====================================================================
Models/times.php

<?php
class times{
    private $conexao;
    public function __construct(){
        require_once 'conexao.php';
        $this->conexao=new conexao();}
    public function save($nome,$email,$senha,$telefone){
        $this->conexao->consulta("insert into times (nome,email,senha,telefone)
            values('$nome','$email','$senha','$telefone')");}}

======================================================================
Controllers/timeController.php

<?php
class timeController{
    private $times;
    public function __construct(){
        require './Models/times.php';
        $this->times=new times();}
    public function salvarTime(){
        $name=$_POST['nome'];
        $email=$_POST['email'];
        $senha=$_POST['senha'];
        $telefone=$_POST['telefone'];
        $this->times->save($name,$email,$senha,$telefone);
        header('Location: index.php');}}
=============================================================
Controllers/viewController.php

<?php
class view{
    private $template_name;
    private $vars=[];
    public function __construct($template_name){
        $this->template_name=$template_name;}
    public function setVar($name,$value){
        $this->vars[$name]=$value;}
    public function getVar($name){
        return $this->vars[$name];}
    public function render() {
        extract($this->vars);
        ob_start();
        include $this->template_name;
        $content=ob_get_contents();
        ob_end_clean();
        return $content;}}

Eu ainda não testei a classe view nesse código, mas espero fazer dele o coração dos meus projetos futuros.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...