MVC em PHP Puro – Parte II
Sem preocupações com o
estilo css, vamos dar continuidade ao nosso cadastro de clientes.
Na pasta views crie um
arquivo PHP com o nome “CadastroClienteView.php”, seguindo uma padronização é
possível identificar os arquivos facilmente.
Nesta view, estará o nosso
formulário de cadastro, veja o código abaixo inclusive a parte comentada.
<?php//inclua as classes de conexão com o banco, model e clientes(este dois últimos após terem sido criados).include '../models/Model.php';
include '../models/CadastroClienteModel.php';include '../controllers/CadastroClienteController.php';//instancie a classe de conexão com o banco(o nosso arquivo model.).$conexao = new Model();$sql = $conexao->conexao();$CodigoUsuario = new CadastroClienteController();?>//na action do form chame a classe de Controller, passe um input hidden com uma acao incluir que será utilizada na classe controller para representar o que você deseja, utilize o submit como botão.<form action="../controllers/Ssc_CadastroClienteController.php" method="post" name="form1" id="form1"><input type="hidden" name="acao" value="incluir"/><b style="padding-left:10px;">Dados Principais:</b><br/><div id="dadosprincipais"><label><span>CodCliente: </span><?php$sql1 = "select max(CodigoUsuario)+1 as CodigoUsuario From Usuario ";$qr1 = mssql_query($sql1);while($ln1 = mssql_fetch_array($qr1)){$CodigoUsuario = $ln1['CodigoUsuario'];}echo "<input name=\"CodigoUsuario\" id=\"CodigoUsuario\" type=\"text\" disabled=\"disabled\" value=".$CodigoUsuario."></input>";?></label><label><span>Nome: </span><input type="text" name="NomeUsuario" id="NomeUsuario" size="60" /></label></br><label>Tipo Pessoa: </label><input name="TipoPessoa" type="radio" value="1" onclick="habilita(this.value)" size="10" value=""/>Física<input name="TipoPessoa" type="radio" value="2" onclick="habilita(this.value)" size="10" value=""/>Jurídica<label><span style ="padding-left:20px;">CNPJ:</span><input name="Cnpj" id="cnpj" type="text" size="15" value=""/></label><label><span>CPF: </span><input name="Cpf" id="cpf" type="text" size="18" value="" /></label><br/><label><span>Razão Social:</span><input name="RazaoSocial" id="RazaoSocial" type="text" size="47" value=""/></label><label><span>Cadastro: </span><!--<input type="text" id="datepicker" onfocus="this.value=''" size="13" /><input type="hidden" id="dbDate" name="DataCadastro"/> !--><input type="text" id="datepicker" name="DataCadastro"/></label><br /><label><span>Nome Fantasia: </span><input name="NomeFantasia" id="NomeFantasia" type="text" size="45" value=""/></label><label><span>Insc. Est: </span><input name="Inscest" id="inscest" type="text" size="14" value=""/></label></br><label><span>Insc. Munic:</span><input name="Inscmunic" id="inscmunic" type="text" size="30" value=""/></label><label style="padding-left:80px;">Tipo Usuario:</span></label><select name="TipoUsuario" id="tipoUsuario" class="botao" value=""><option value="---">TipoUsuario</option><?php$login = $_SESSION['login'];$senha = $_SESSION['senha'];$CodigoUsuario = $_SESSION["CodigoUsuario"];//$sql = "S_SELECIONA_TIPOUSUARIO @CodigoUsuario = '$CodigoUsuario'";$sql = "select * from TipoUsuario"; $qr = mssql_query($sql);while($ln = mssql_fetch_assoc($qr)){echo '<option value="'.$ln['CodigoTipoUsuario'].'">'.$ln['TipoUsuario'].'</option>';}?></select><br/></div><b style="padding-left:10px;">Endereço:</b><br/><div id="endereco"><label><span>Endereço: </span><input name="Endereco" type="text" size="70" value=""/></label><br /><label><span>CEP:</span><input name="Cep" type="text" size="20" value=""/></label><br /></div><b style="padding-left:10px;">Contato:</b><br/><div id="contato"><label><span>Telefone Comercial: </span><input name="Telcome" type="text" size="20" value=""/></label><label><span style ="padding-left:10px;">Telefone Residencial: </span><input name="Telresid" type="text" size="20" value=""/></label></br><label><span>Telefone Extra: </span><input name="Telextr" type="text" size="15" value=""/></label><label><span style ="padding-left:10px;">Celular: </span><input name="Celular" type="text" size="15" value=""/></label><label><span style ="padding-left:10px;">Fax: </span><input name="Fax" type="text" size="15" value=""/></label><br/><label><span>Email: </span><input name="Email" type="text" size="75" value=""/></label></div><div id="botoesacao"><p><input type="submit" name="enviar" value="Salvar" class="btn" /></p></div></form>
Depois vamos criar o nosso
arquivo controller (CadastroClienteController), então dentro da pasta controllers crie o arquivo php
CadastroClienteController.php
E nele acrescente o seguinte código:
<?php//inclui a classe model
require("../models/CadastroClienteModel.php");//cria a classeclass CadastroClienteController{public $all;
//método que faz o controle do método all() da class clientepublic function Controle(){//intancia um o objeto da class cliente$this->all = new CadastroClienteModel();//retorna o método all() com os registros em formatos de objetos//como vimos na class cliente.return $this->all->all();}}//identifica a ação efetuada na view(formulario).$acao = $_POST['acao'];if($acao == "incluir") {//intancia a classe referente ao banco de dados$intoCliente = new CadastroClienteModel();
//puxa os valores preenchidos no formulários e o repassa a classe do banco$CodigoUsuario = $_POST['CodigoUsuario'];$intoCliente->setCodigoUsuario($CodigoUsuario);$NomeUsuario = $_POST['NomeUsuario'];$intoCliente->setNomeUsuario($NomeUsuario);$tipopessoa = $_POST['TipoPessoa'];$intoCliente->setTipoPessoa($tipopessoa);$Cnpj = $_POST['Cnpj'];$intoCliente->setCnpj($Cnpj);$Cpf = $_POST['Cpf'];$intoCliente->setCpf($Cpf);$RazaoSocial = $_POST['RazaoSocial'];$intoCliente->setRazaoSocial($RazaoSocial);$setDataCadastro = $_POST['DataCadastro'];$intoCliente->setDataCadastro($setDataCadastro);$NomeFantasia = $_POST['NomeFantasia'];$intoCliente->setNomeFantasia($NomeFantasia);$Inscest = $_POST['Inscest'];$intoCliente->setInscest($Inscest);$Inscmun = $_POST['Inscmun'];$intoCliente->setInscmun($Inscmun);$TipoUsuario = $_POST['TipoUsuario'];$intoCliente->setTipoUsuario($TipoUsuario);$Endereco = $_POST['Endereco'];$intoCliente->setEndereco($Endereco);$Bairro = $_POST['Bairro'];$intoCliente->setBairro($Bairro);$Estado = $_POST['Estado'];$intoCliente->setEstado($Estado);$Cidade = $_POST['Cidade'];$intoCliente->setCidade($Cidade);$Cep = $_POST['Cep'];$intoCliente->setCep($Cep);$Telcome = $_POST['Telcome'];$intoCliente->setTelcome($Telcome);$Telresid = $_POST['Telresid'];$intoCliente->setTelresid($Telresid);$Telextr = $_POST['Telextr'];$intoCliente->setTelextr($Telextr);$Celular = $_POST['Celular'];$intoCliente->setCelular($Celular);$Fax = $_POST['Fax'];$intoCliente->setFax($Fax);$Email = $_POST['Email'];$intoCliente->setEmail($Email);// cria uma variavel para chamar o objeto intoCliente, que é o responsável por inserir no banco de dados.$return = $intoCliente->intoCliente($result);//cria um if que retona se o dado foi gravado no banco ou não, e assim exibe uma mensagem para o usuário, alem de fazer um redirect.if($return){echo "<script>alert('Registro incluído com sucesso!');document.location='../view/cad_cadastro.php'</script>";}else{echo "<script>alert('Erro ao gravar registro!');history.back()</script>";}}?>
Feito
o nosso controller o ultimo passo e fazer a classe model, que será responsável
pelas operações no banco de dados, no nosso caso estamos fazendo a penas o
cadastro ou seja o insert, então na pasta models crie o arquivo
CadastroClienteModel.php
E
vamos a ele:
<?php// inclui o arquivo Model aquele que faz a conexao com obancoinclude '../models/Model.php';//intancia sua classeclass CadastroClienteModel{//ATRIBUTOSvar $CodigoUsuario;var $NomeUsuario;var $TipoPessoa;var $Cnpj;var $Cpf;var $RazaoSocial;var $DataCadastro;var $NomeFantasia;var $Inscest;var $Inscmun;var $TipoUsuario;var $Endereco;var $Bairro;var $Estado;var $Cidade;var $Cep;var $Telcome;var $Telresid;var $Telextr;var $Celular;var $Fax;var $Email;//cria os métodos gets e sets.// métodospublic function setCodigoUsuario($CodigoUsuario) {$this->CodigoUsuario = $CodigoUsuario;}public function getCodigoUsuario() {return $this->CodigoUsuario;}public function setNomeUsuario($NomeUsuario) {$this->NomeUsuario = $NomeUsuario;}public function getNomeUsuario() {return $this->NomeUsuario;}public function setTipoPessoa($TipoPessoa) {$this->TipoPessoa = $TipoPessoa;}public function getTipoPessoa() {return $this->TipoPessoa;}//public $cnpj;public function setCnpj($Cnpj) {$this->Cnpj = $Cnpj;}public function getCnpj() {return $this->Cnpj;}//public $cpf;public function setCpf($Cpf) {$this->Cpf = $Cpf;}public function getCpf() {return $this->Cpf;}//public $RazaoSocial;public function setRazaoSocial($RazaoSocial) {$this->RazaoSocial = $RazaoSocial;}public function getRazaoSocial() {return $this->RazaoSocial;}//public $DataCadastro;public function setDataCadastro($DataCadastro) {$this->DataCadastro = $DataCadastro;}public function getDataCadastro() {return $this->DataCadastro;}//public $nomefantasia;public function setNomeFantasia($NomeFantasia) {$this->NomeFantasia = $NomeFantasia;}public function getNomeFantasia() {return $this->NomeFantasia;}//public $inscest;public function setInscest($Inscest) {$this->Inscest = $Inscest;}public function getInscest() {return $this->Inscest;}//public $inscmun;public function setInscmun($Inscmun) {$this->Inscmun = $Inscmun;}public function getInscmun() {return $this->Inscmun;}//public $tipousuario;public function setTipoUsuario($TipoUsuario) {$this->TipoUsuario = $TipoUsuario;}public function getTipoUsuario() {return $this->TipoUsuario;}//public $endereco;public function setEndereco($Endereco) {$this->Endereco = $Endereco;}public function getEndereco() {return $this->Endereco;}//public $bairro;public function setBairro($Bairro) {$this->Bairro = $Bairro;}public function getBairro() {return $this->Bairro;}//public $estado;public function setEstado($Estado) {$this->Estado = $Estado;}public function getEstado() {return $this->Estado;}//public $cidade;public function setCidade($Cidade) {$this->Cidade = $Cidade;}public function getCidade() {return $this->Cidade;}//public $cep;public function setCep($Cep) {$this->Cep = $Cep;}public function getCep() {return $this->Cep;}//public $telcome;public function setTelcome($Telcome) {$this->Telcome = $Telcome;}public function getTelcome() {return $this->Telcome;}//public $telresid;public function setTelresid($Telresid) {$this->Telresid = $Telresid;}public function getTelresid() {return $this->Telresid;}//public $telextr;public function setTelextr($Telextr) {$this->Telextr = $Telextr;}public function getTelextr() {return $this->Telextr;}//public $celular;public function setCelular($Celular) {$this->Celular = $Celular;}public function getCelular() {return $this->Celular;}//public $fax;public function setFax($Fax) {$this->Fax = $Fax;}public function getFax() {return $this->Fax;}//public $Email;public function setEmail($Email) {$this->Email = $Email;}public function getEmail() {return $this->Email;}// método que retorna todos os clientes cadastradospublic function all(){$mysql = new Model();$conexao = $mysql->conexao();// Executa a Query desejada$conexao = mssql_query("select * from USUARIO");// Aqui criamos um objeto chamado $clientes com os resultado// da query que fizemos acima.while($clientes = mssql_fetch_array($conexao)){// Imprimimos os resultadosreturn $clientes;}return $clientes;}// cria método que faz o cadastro de um novo clientepublic function intoCliente(){// instancia a classe de conexao com o banco e chama o metodo de conexao.
$mysql = new Model();$conexao = $mysql->conexao();// verifica se os campos do formulario estão vazios, caso seja sim com que valor ele deve gravar no banco.if(empty($this->Cnpj)){$this->Cnpj = 0;}if(empty($this->Cpf)){$this->Cpf = 0;}if(empty($this->NomeUsuario)){$this->NomeUsuario = '';}if(empty($this->TipoPessoa)){$this->TipoPessoa = '';}if(empty($this->RazaoSocial)){$this->RazaoSocial = '';}if(empty($this->DataCadastro)){$this->DataCadastro = NULL;}if(empty($this->NomeFantasia)){$this->NomeFantasia = '';}if(empty($this->Inscest)){$this->Inscest = 0;}if(empty($this->Inscmun)){$this->Inscmun = 0;}if(empty($this->TipoUsuario)){$this->TipoUsuario = 0;}if(empty($this->Endereco)){$this->Endereco = '';}if(empty($this->Cep)){$this->Cep = 0;}if(empty($this->Telcome)){$this->Telcome = 0;}if(empty($this->Telresid)){$this->Telresid = 0;}if(empty($this->Telextr)){$this->Telextr = 0;}if(empty($this->Celular)){$this->Celular = 0;}if(empty($this->Fax)){$this->Fax = 0;}if(empty($this->Email)){$this->Email = '';}//crie a variavel de insert e escreva o codigo dessa maneira, repare em VALUES que campos String carregam as variaveis simples, campos inteiros não possuem a variável simples.$sql = "INSERT INTO USUARIO (NomeUsuario, Login, senha, CodigoTipoPessoa, Cnpj, Cpf, RazaoSocial, DataCadastro, NomeFantasia, InscricaoEstadual, InscricaoMunicipal, CodigoTipoUsuario, Endereco, Cep, TelefoneComercial, TelefoneResidencial, TelefoneRecados,Celular, Fax, Email )VALUES ('".$this->NomeUsuario."', 'teste', '123', '".$this->TipoPessoa."', ".$this->Cnpj.", ".$this->Cpf.", '".$this->RazaoSocial."', '".$this->DataCadastro."', '".$this->NomeFantasia."', ".$this->Inscest.", ".$this->Inscmun.", '".$this->TipoUsuario."', '".$this->Endereco."', ".$this->Cep.", ".$this->Telcome.", ".$this->Telresid.", ".$this->Telextr.", ".$this->Celular.", ".$this->Fax.", '".$this->Email."' )";
//utilize o metodo(função nativa) php correspondente ao seu tipo de banco de dados para executar o insert.
// mssql_query = SGBD SQL SERVER
// mysql_query = SGBD MYSQL$result = mssql_query($sql);// retorne o valor da variável, pois ela será utilizada lá na nossa classe controller que verifica se os valores foram inseridos corretamente lembra?return $result;//var_dump($result); die();}}
Então
é isto pessoal, no inicio pareceu bem complicado para mim também, foi difícil
achar conteúdo no Google e precisei recorrer a pessoas bem mais experientes,
espero poder ter ajudado de alguma forma, ao menos ter dado uma boa dica de como começar, desejo que
vocês também consigam superar esses obstáculos. Então ate a próxima.
Comentários
Postar um comentário