Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Arthur Warmling

Cadastro de Usuários

Recommended Posts

 Boa noite galera, eu fiz uma classe de cadastro de usuários. Segue o link no Pastebin dela.
Então, fiz um formulário para cadastrar esse funcionário. Como eu faria para utilizar a função Inserir() no formulário?
Eu pego os campos via POST e jogo como parâmetro na função?

Obrigado!

	

    <?php
     
     
    class Usuarios{
       
        private $db;
       
        private $id;
        private $nome;
        private $email;
        private $senha;
        private $tipo;
       
        public function __construct(\PDO $db){
            $this->db = $db;
        }
       
        public function Inserir(){
            $query = "Insert into usuarios(nome,email,senha,tipo) values (:nome, :email, :senha, :tipo)";
            $stmt = $this->db->prepare($query);
            $stmt->bindValue(':nome', $this->getNome());
            $stmt->bindValue(':email', $this->getEmail());
            $stmt->bindValue(':senha', $this->getSenha());
            $stmt->bindValue(':tipo', $this->getTipo());
           
            if($stmt->execute()) {
                return true;
            }
           
        }
       
       
        public function setId($id){
            $this->id = $id;
            return $this;
        }
       
        public function getId(){
            return $this->id;
        }
       
        public function setNome($nome){
            $this->nome = $nome;
            return $this;
        }
       
        public function getNome(){
            return $this->nome;
        }
       
        public function setEmail($email){
            $this->email = $email;
            return $this;
        }
       
        public function getEmail(){
            return $this->email;
        }
       
        public function setSenha($senha){
            $this->senha = $senha;
            return $this;
        }
       
        public function getSenha(){
            return $this->senha;
        }
       
        public function setTipo($tipo){
            $this->tipo = $tipo;
            return $this;
        }
       
        public function getTipo(){
            return $this->tipo;
        }
       
       
       
    }
     
    ?>


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz, acho que se você já setou todos as variáveis nos métodos sets basta chamar o método inserir sem passar nenhum parâmetro, ele vai recuperar os valores com os métodos get. Porém, você teria que setar os valores advindos via POST ou GET do formulário para dentro dos sets e depois chamar o metodo inserir()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz, acho que se você já setou todos as variáveis nos métodos sets basta chamar o método inserir sem passar nenhum parâmetro, ele vai recuperar os valores com os métodos get. Porém, você teria que setar os valores advindos via POST ou GET do formulário para dentro dos sets e depois chamar o metodo inserir()

 

No caso no meu form eu tenho a action que manda para determinada pagina correto?

 

Exemplo, criei uma arquivo chamado cadUsuariosOk.php

 

Nesse arquivo eu colocaria

<?php
require_once 'conn.php';

$nome = $_POST['nome'];
$email = $_POST['email'];
$senha = $_POST['senha'];
$tipo = $_POST['tipo'];

$user = new Usuarios($conexao);

$user->setNome($nome)
     ->setEmail($email)
     ->setSenha($senha)
     ->setTipo($tipo)
;

$user->Inserir();

// Como eu colocaria no código aqui para pegar via set?

// Seria isso?

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz, pela sua classe, os métodos SETs enviam para a classe e incia as variáveis, para obter estas informações você deve utilizar os métodos GETs.

 

Quando você chama $user ->Inserir(); é o momento que de fato você realiza a inserção. há um retorno então é melhor

 
$result = $this -> Inserir();
if($result ==1)
{
echo " Informações cadastradas com sucesso!";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que você abordou um nível um pouco mais técnico, também serei mais rigoroso.

 

De cara, sua classe viola SRP. Pois além de ser uma entidade, possui funções que realizam interação com SGBD.

 

É importante separar as responsabilidades entre uma classe de entidade (Usuario) e a camada de persistência (um StorageManager, por exemplo).

 

Você está utilizando algum padrão de arquitetura? Tal qual MVC?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que você abordou um nível um pouco mais técnico, também serei mais rigoroso.

 

De cara, sua classe viola SRP. Pois além de ser uma entidade, possui funções que realizam interação com SGBD.

 

É importante separar as responsabilidades entre uma classe de entidade (Usuario) e a camada de persistência (um StorageManager, por exemplo).

 

Você está utilizando algum padrão de arquitetura? Tal qual MVC?

 

Opa boa noite, não estou utilizando MVC ainda não.

Sim, eu andei pesquisando e o correto é separar. Estou fazendo um curso de PDO e estou aprendendo esta parte de separar o código.

 

Agora uma pequena dúvida... Uma função para verificar se o meu Login ou email já está cadastrado... Como faria essa parte?

    public function ConsultaUsuario(){
        $query = "Select * from usuarios where nome =:nome";
        $stmt = $this->db->prepare($query);
        $stmt->bindValue(':nome', $this->getNome());
        $stmt->execute();
        $consulta = $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na maioria dos casos de contraints para uniques, eu utilizo a própria restrição do SGBD e trato através de exceções.

 

Segue um exemplo de uso de exceptions com transactions:

http://forum.imasters.com.br/topic/519213-transacoes-pdo-em-php/?p=2064505

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.