Ir para conteúdo
Rodrigo5468

Validação em PDO OOP

Recommended Posts

Boa tarde a todos.

 

Estou desenvolvendo um sistema de registro para fins de estudos, mas tenho algumas dúvidas e dificuldades até. Estou usando "programação orientada a objetos", e quero validar alguns campos do meu registro, se puderem me auxiliar, será de grande ajuda.

 

Meu Diretório:

Projeto1/
├── backend/
│   ├── classes/
│   │   ├── Register.php
├── index.php

Em Register.php tenho o seguinte código para fazer a validação, mas acredito que estou fazendo algo de errado.

        public function setUsername($username) {
            $sql    = "SELECT * FROM $this->table WHERE username = :username";
            $stmt   = Database::prepare($sql);
            $stmt->execute(array('username' => $_POST["username"]));
            
            if(empty($_POST["username"])) {
                return "O campo usuário não pode ser vázio.";
            }elseif(ctype_space($_POST["username"])) {
                return "Não pode usar apenas espaços no campo de usuário.";
            }elseif(strlen($_POST["username"] < 3)) {
                return "É necessário no mínimo 3 (três) caracteres no usuário.";
            }elseif(strlen($_POST["username"] > 15)) {
                return "O máximo é de 15 (quinze) caracteres no usuário.";
            }elseif(preg_match("/^[a-zA-Z0-9]*$/", $_POST["username"] == 0)) {
                return "O nome de usuário só pode conter letras e números. (sem espaços e sem caracteres epeciais)";
            }elseif($stmt->num_rows !== 0) {
                return "O nome de usuário já está cadastrado em nossos bancos de dados.";
            }else {
                $this->username = $username;
            }
        }

E no index.php tenho o seguinte código, acredito que está certo, mas eu gostaria de mostrar as mensagens de erros que estão no Register.php, como que posso fazer isso?

        $register = new Registers();
        
        if(isset($_POST["cadastrar"])) {
            $username   = $_POST["username"];
            $email      = $_POST["email"];
            $password   = $_POST["password"];
            
            $register->setUsername($username);
            $register->setEmail($email);
            $register->setPassword($password);
            
            if($register->insert()) {
                return "Usuário cadastrado com sucesso.";
            }
        }

 

 

Obrigado pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Rodrigo5468, joia!

Existem muitas formas de fazer, a refatoração não tem limites!

Uma boa prática, seria você ter suas validações isoladas, e os métodos realmente fazerem o que dizem que fazem, por exemplo:
Eu espero que o método setName apenas sete o nome, e nada mais!

Segue uma ideia:

class ValidaCadastro
{
    private $erros = [];

    public function __construct(array $dados)
    {
        $this->validaNome($dados['nome']);
        $this->validaEmail($dados['email']);
        $this->validaSenha($dados['senha'])
    }
    
    public function erros()
    {
        return $this->erros;
    }

    public function validaNome($nome)
    {
        /**
         *  se o nome estiver vazio 
         */
        $this->erros[] = 'O campo usuário não pode ser vázio.';

        /**
         *  se o nome tiver menos que três letras
         */
        $this->erros[] = 'É necessário no mínimo 3 (três) caracteres no usuário';
    }

    public function validaEmail()
    {
        //
    }

    public function validaSenha()
    {
        //
    }
}

   $validaCadastro = new ValidaCadastro($_POST)

    if ($erros = $validaCadastro->erros()) {
        foreach ($erros as $erro) {
            echo $erro;
        }
        return;   
    }

    $register = new Registers();

    $register->setUsername($username);
    $register->setEmail($email);
    // etc...

 

Editado por EdCesar
Alterado new ValidaCadastro($_POST['cadastrar']) para new ValidaCadastro($_POST)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

image.thumb.png.4ce57010b5b39bd1114a3bf43b8d8338.png

Fiz o quê você me pediu, aliás, tentei fazer, mas acho que não deu muito certo.

ValidaCadastro.php

<?php
    require_once (__DIR__."\Registers.php");
    
    class ValidaCadastro extends Registers {
        private $dados;
        private $erros = [];
        
        public function __construct($dados) {
            $this->validaUsername($this->username);
    }
        
        public function erros() {
            return $this->erros;
        }
        
        public function validaUsername() {
            if(empty($_POST["username"])) {
                 $this->erros[] = "O campo usuário não pode ser vázio.";
            }elseif(ctype_space($_POST["username"])) {
                 $this->erros[] = "Não pode usar apenas espaços no campo de usuário.";
            }elseif(strlen($_POST["username"] < 3)) {
                 $this->erros[] = "É necessário no mínimo 3 (três) caracteres no usuário.";
            }elseif(strlen($_POST["username"] > 15)) {
                 $this->erros[] = "O máximo é de 15 (quinze) caracteres no usuário.";
            }elseif(preg_match("/^[a-zA-Z0-9]*$/", $_POST["username"] == 0)) {
                 $this->erros[] = "O nome de usuário só pode conter letras e números. (sem espaços e sem caracteres epeciais)";
            }elseif($stmt->num_rows !== 0) {
                 $this->erros[] = "O nome de usuário já está cadastrado em nossos bancos de dados.";
            }
        }
    }

E no index.php

    <?php
        $validaCadastro = new ValidaCadastro($_POST["cadastrar"]);
        
        if($erros = $validaCadastro->erros()) {
            foreach ($erros as $erro) {
                echo $erro;
            }
            
            return;
        }
        
        $register = new Registers();
        
        if(isset($_POST["cadastrar"])) {
            $username   = $_POST["username"];
            $email      = $_POST["email"];
            $password   = $_POST["password"];
            
            $register->setUsername($username);
            $register->setEmail($email);
            $register->setPassword($password);
            
            if($register->insert()) {
                return "Usuário cadastrado com sucesso.";
            }
        }
    ?>

 

O quê eu tenho que fazer exatamente, poderia me dá mais detalhes por favor.

 

 

OBRIGADOOO!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Rodrigo5468, só alguns ajustes...
 

// Aqui eu me confundi, no construtor, vai $_POST, e não $_POST['cadastrar']
$validaCadastro = new ValidaCadastro($_POST);

// E aqui fica assim mesmo
public function __construct($dados) {
    $this->validaUsername($dados['username']);
}

// E no metodo, não precisa mais usar o $_POST, use o $userName
public function validaUsername($userName) {
    if(empty($userName)) {
            $this->erros[] = "O campo usuário não pode ser vázio.";
    }
    //
    //
}

 

class ValidaCadastro extends Registers

E ValidaCadastro não herda de Registers

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, mano tá dando certo, mas peço que tenha mais um pouco de paciência comigo.

image.png.0d4094b14807adb8d99e96429e3e79d9.png

 

<?php
    class ValidaCadastro {
        private $dados;
        private $erros = [];
        
        public function __construct(array $dados) {
            $this->validaUsername($dados['username']);
        }
        
        public function erros() {
            return $this->erros;
        }
        
        public function validaUsername() {
            if(empty($username)) {
                 $this->erros[] = "O campo usuário não pode ser vázio.";
            }elseif(ctype_space($username)) {
                 $this->erros[] = "Não pode usar apenas espaços no campo de usuário.";
            }elseif(strlen($username) < 3) {
                 $this->erros[] = "É necessário no mínimo 3 (três) caracteres no usuário.";
            }elseif(strlen($username) > 15) {
                 $this->erros[] = "O máximo é de 15 (quinze) caracteres no usuário.";
            }elseif(preg_match("/^[a-zA-Z0-9]*$/", $username == 0)) {
                 $this->erros[] = "O nome de usuário só pode conter letras e números. (sem espaços e sem caracteres epeciais)";
            }elseif($username !== 0) {
                 $this->erros[] = "O nome de usuário já está cadastrado em nossos bancos de dados.";
            }
        }
    }

Fiz as alterações, mas está dando erro, já tentei alterar para

$this->dados = $username;

 

Entre diversas outras maneiras, mas não foi.

 

Obrigado por tudo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como a intenção é só validação de uma string ao qual pode existir ou não.

Usar um construtor no meu ponto de vista não é uma boa ideia, pois não necessita de um comportamento inicial pela classe.

 

Então só passando o olho rapidinho identifiquei erro já na primeira condição do método validaUsername uma vez que a variável $username não pertence ao escopo do método nem foi criada.

Ou detalhe que no caso específico de sua classe que usa um construtor. Ela só pode ser instanciada dentro das condições que existem uma super global POST e obrigatoriamente é necessário existir o índice username, caso não sempre vai gerar o erro citado.

Outro erro é que o método construtor envia como parâmetro dados para o outro método, ao qual não possui recebimento de parâmetro.

 

Tente assim:

Spoiler

<?php
class ValidaCadastro {

    private $erros;

    public function erros() {
        return $this->erros;
    }

    public function validaUsername($username) {
        if (!isset($username)) {
            $this->erros = "Ops! não temos a string para prosseguir";
            return true;
        } else if (empty($username)) {
            $this->erros = "O campo usuário não pode ser vázio.";
            return true;
        //} else if (ctype_space($username)) { Desnecessário pois temos uma expressão regular para verificar isso
        } else if (strlen($username) < 3) {
            $this->erros = "É necessário no mínimo 3 (três) caracteres no usuário.";
            return true;
        } else if (strlen($username) > 15) {
            $this->erros = "O máximo é de 15 (quinze) caracteres no usuário.";
            return true;
            //} else if (preg_match("/^[a-zA-Z0-9]*$/", $username == 0)) {
        } else if (!preg_match('/^([a-zA-Z0-9]+)$/i', $username)) {
            $this->erros = "O nome de usuário só pode conter letras e números. (sem espaços e sem caracteres epeciais)";
            return true;
        }
        /*
          Isso aqui não deveria exisir estamos verificando um STRING e não um INTEGER
          else if ($username !== 0) {
          $this->erros[] = "O nome de usuário já está cadastrado em nossos bancos de dados.";
          }
         */
    }
}

 

 

Exemplo simples:


$register = new ValidaCadastro();

if (isset($_POST["cadastrar"])) {
    if ($register->validaUsername(isset($_POST["username"]) ? $_POST["username"] : null)) {
        echo $register->erros();
    }
    // Crie os métodos para verificar os outros dados email/password
    else {
        var_dump($_POST); // Isso é só para depurar seus dados
        // Aqui você faz o que tem de fazer com o banco de dados
    }
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Omar~, beleza!

Neste caso, instanciar a classe, vazia, abriria margens para falsos positivos, por exemplo:

$validaCadastro = new ValidaCadastro();
echo $validaCadastro->erros(); // Sem erros

Eu passei pela validação, sem passar os dados. Isso não deveria ser possível!
Alem do mais, para essa regra, os campos nome, email e senha são obrigatórios para validar o cadastrado, nenhum é opcional.

Mas o seu comentário só acrescenta, pois esse mesmo racional que você colocou sobre o construtor, muita gente tem.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, EdCesar disse:

@Omar~, beleza!

Neste caso, instanciar a classe, vazia, abriria margens para falsos positivos, por exemplo:


$validaCadastro = new ValidaCadastro();
echo $validaCadastro->erros(); // Sem erros

Eu passei pela validação, sem passar os dados. Isso não deveria ser possível!
Alem do mais, para essa regra, os campos nome, email e senha são obrigatórios para validar o cadastrado, nenhum é opcional.

Mas o seu comentário só acrescenta, pois esse mesmo racional que você colocou sobre o construtor, muita gente tem.

 

Sim, você está correto. Minha intenção foi esclarecer que ele inverteu sua lógica onde o uso dos dados é true, e ele mesmo deixou de usar a lógica do construtor, que tem a finalidade de determinar o que a classe vai fazer antes mesmo de algum método ser iniciado.

A única coisa que eu mudaria nesse caso:

Spoiler
13 horas atrás, EdCesar disse:

 



// Aqui eu me confundi, no construtor, vai $_POST, e não $_POST['cadastrar']
$validaCadastro = new ValidaCadastro($_POST);

// E aqui fica assim mesmo
public function __construct($dados) {
    $this->validaUsername($dados['username']);
}

// E no metodo, não precisa mais usar o $_POST, use o $userName
public function validaUsername($userName) {
    if(empty($userName)) {
            $this->erros[] = "O campo usuário não pode ser vázio.";
    }
    //
    //
}

 

 

É ao invés de repassar o índice do POST como parâmetro. Eu armazenaria em um atributo se não vazio ou não existente, assim poderia usar em mais de um método, caso queira criar novo método para verificar a existência dos mesmo em um banco de dados, mas enfim cada caso é um caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Fiz algumas alterações no código, e decidir remover o validaCadastro.php, não sei se agir de maneira correta, mas vamos lá.

Register.php

<?php
    require_once (__DIR__."\Crud.php");
    
    final class Registers extends Crud {
        protected $table = "accounts";
        
        private $erros;
        private $username;
        private $email;
        private $password;
        
        public function erros() {
            return $this->erros;
        }
        
        /*MÉTODOS SET*/
        public function setUsername($username) {
            if(!isset($username)) {
                 $this->erros[] = "Ops! não temos a string para prosseguir.";
                 return true;
            }elseif(empty($username)) {
                 $this->erros[] = "O campo usuário não pode ser vázio.";
                 return true;
            }elseif(strlen($username) < 3) {
                 $this->erros[] = "É necessário no mínimo 3 (três) caracteres no usuário.";
                 return true;
            }elseif(strlen($username) > 15) {
                 $this->erros[] = "O máximo é de 15 (quinze) caracteres no usuário.";
                 return true;
            }elseif(!preg_match('/^([a-zA-Z0-9]+)$/i', $username)) {
                 $this->erros[] = "O nome de usuário só pode conter letras e números. (sem espaços e sem caracteres epeciais)";
                 return true;
            }else {
                $this->username = $username;
            }
        }
        
        public function setEmail($email) {
            $this->email = $email;
        }
        
        public function setPassword($password) {
            if(!empty($password)) {
                $options = [
                    "cost" => 11,
                ];
                
                $this->password = password_hash($password, PASSWORD_BCRYPT, $options);
                
                if(password_verify($password, $this->password)) {
                    return true;
                }
            }
            
            return false;
        }
        
        /*FUNÇÕES*/
        public function insert() {
            $sql    = "INSERT INTO $this->table (username, email, password) VALUES (:username, :email, :password)";
            $stmt   = Database::prepare($sql);
            $stmt->bindParam(":username", $this->username);
            $stmt->bindParam(":email", $this->email);
            $stmt->bindParam(":password", $this->password);
            
            return $stmt->execute();
        }
        
        public function update($id) {
            $sql    = "UPDATE $this->table SET username = :username, email = :email, password = :password WHERE id = :id";
            $stmt   = Database::prepare($sql);
            $stmt->bindParam(":username", $this->username);
            $stmt->bindParam(":email", $this->email);
            $stmt->bindParam(":password", $this->password);
            $stmt->bindParam(":id", $id);
            
            return $stmt->execute();
        }
    }

index.php

    <?php
        $register = new Registers();
        
        if(isset($_POST["cadastrar"])) {
            $username   = $_POST["username"];
            $email      = $_POST["email"];
            $password   = $_POST["password"];
            
            if($register->setUsername(isset($username) ? $username : null)) {
                echo $register->erros();
            }else {
                $var_dump = var_dump($username);
                echo $var_dump;
            }
            $register->setEmail($email);
            $register->setPassword($password);
            
            if($register->insert()) {
                return "Usuário cadastrado com sucesso.";
            }
        }
    ?>

 

Só que o código não está funcionando como deveria, poderia me dizer, o quê tem de errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há um erro de arquitetura como EdCezar já mencionou, quando se trabalha com POO, a primeira coisa a levar em consideração é,  em qual padrão de persistência de dados você vai usar. DAO, MVC "Mais fáceis" etc. Porque do mais, é como que colocar scripts procedurais dentro de classes "Seu Caso". 

Utilizando o DAO, você pode separar as regras de negócios das regras de acesso ao banco de dados.

Exemplo  básico ilustrativo, pois a inúmeros exemplos na net.
 

<?php

require "../Database.php";
require "../Entities/User.php";
require "../Rules/UserRule.php";
require "../Persistences/UserDAO.php";

$db = new Database();
$user = new User();
$dao = new UserDAO($db);

$rule = new UserRule(); //Caso precise verificar se usuario ou email existe, passe a conexão peloo constructor
$rule->isUserName($username);
$rule->isPassword($password);
$rule->isEmail($email);

if(count( $rule->errors() <= 0 )) {

    $user->setUserName($username);
    $user->setPassword($password);
    $user->setEmail($email);    

    $success = $dao->add($user);

} else {
    foreach($rule->errors() as $error) {
        // Tras todos os erros de uma só vez
    }
}





 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por gersonab
      estou atualizando um código para PDO, o mesmo funciona na versão PHP mais antiga, no PDO não.
      Versão php:
      if ( isset( $_GET['action'] ) ) { $action = $_GET['action']; $action(); } function updateFotoCover() { $id_imovel = $_POST['id_imovel']; $id_img = $_POST['id_img']; mysql_query( "update imagens set prin = 0 where id_imovel = $id_imovel" ); mysql_query( "update imagens set prin = 1 where id_img = $id_img" ); echo 'Cover Atualizado <Br/>'; } function deleteFoto() { $id_img = $_POST['id_img']; $rset = mysql_query( "select * from imagens where id_img = $id_img" ); $linha = mysql_fetch_assoc($rset); $nome = $linha["img"]; unlink("php/files/".$nome); $sql = "DELETE FROM imagens WHERE id_img = $id_img"; $rset = mysql_query($sql); echo 'Foto Removida<Br/>'; } PDO:
      if ( isset( $_GET['action'] ) ) { $action = $_GET['action']; $action(); } function updateFotoCover() { $id_imovel = (int)$_POST['id_imovel']; $id_img = (int)$_POST['id_img']; $sql= "UPDATE imagens SET prin = 0 where id_imovel = :id_imovel"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':id_imovel', $id_imovel, PDO::PARAM_INT); $stmt->execute(); $sql= "UPDATE imagens SET prin = 1 where id_img = :id_img"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':id_img', $id_img, PDO::PARAM_INT); $stmt->execute(); } function deleteFoto() { $id_img = (int)$_POST['id_img']; $sql2 = "SELECT imagens FROM imagens WHERE id_imovel =:idc"; $stmt = $pdo->prepare($sql2); $stmt->bindParam(':idc', $id_img); $stmt->execute(); $aux = $stmt->fetch(PDO::FETCH_ASSOC)); unlink("php/files/".$aux["img"]); $sql3 = "DELETE FROM imagens WHERE id_imovel=:idc"; $stmt = $pdo->prepare($sql3); $stmt->bindParam(':idc', $id_img, PDO::PARAM_INT); $stmt->execute(); } Não encontro o erro.
    • Por gersonab
      há tempos utilizo para cadastrar data no BD a instrução :
      implode('-',array_reverse(explode('/',$data)))
      com isso no input posso colocar 09/02/2019 e no banco de dados grava 2019-02-09 , até ai sem problemas, porém ao atualizar um sistema para pdo, estou com problema no insert dinâmico, onde posso fazer 1 ou mais inserts, da forma abaixo cadastro quantos eu quiser :
      $sql = "INSERT INTO cantos ( id_t, id_c, data, ca, cant, po, des) VALUES (:id_t, :id_c, :data, :ca, :cant, :po, :des)";              $stmt = $pdo->prepare($sql);             foreach($_POST['idp'] as $indice => $valor) {             $stmt->bindParam(':id_t', $_POST['id_tor'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':id_c', $_POST['idp'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':data', $_POST['data'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':ca', $_POST["ca"][$indice], PDO::PARAM_STR);             $stmt->bindParam(':cant', $_POST['cant'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':po', $_POST['po'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':des', $_POST['des'][$indice], PDO::PARAM_STR);                              if ($stmt->execute()){                     echo "Cadastrado com sucesso.";             }
      no entento a data vai no formato do input 09/02/2019.
      caso utilize :
      $stmt->bindParam(':data', implode('-',array_reverse(explode('/',$_POST['data'][$indice]))), PDO::PARAM_STR);
      tenho o erro Strict standards: "Only variables should be passed by reference in "que significa "Apenas as variáveis podem ser passadas por referência"
      qual a melhor forma de se fazer neste caso ?
    • Por Fábio.info7
      Olá, sou iniciante em php OO, estou com uma dúvida e gostaria que alguém me ajudasse, preciso saber como eu faço pra chamar uma função "private estatic" que está eu outra classe, quando ela está na mesma classe eu consigo chamar usando o self::, mas em outra classe o self:: não funciona, como seria a forma correta?
      No Código abaixo eu preciso chamar a função conectaBanco(), através de outra classe.
       
      class Conexao{ private static $host = "localhost"; private static $dbname = "aluno"; private static $usuario = "root"; private static $senha = ""; private static $banco = null; private static function conectaBanco(){ try { self::$banco = new PDO('mysql:host=' . self::$host . ';dbname=' . self::$dbname, self::$usuario, self::$senha); return self::$banco; }catch (Exception $e) { echo "Mensagem de Erro:" . $e->getMessage() . '<br>'; echo "Linha do Erro:" . $e->getLine(); } } public function getBanco(){ return self::conectaBanco(); } }  
    • Por geovanesilva
      Bom dia a todos, não tenho experiencia com mysql e sou novato em programação, recentemente iniciei um sistema de controle de estoque onde em um dos módulos preciso selecionar apenas um registro de uma determinada tabela, para isso passo ao select o parâmetro necessário para me retornar o registro adequado. Li alguns tópicos de vários foruns e me deparei com PDO, então optei por utilizá-lo em minhas conexões com o banco de dados, porem recebo dois avisos: Atenção: PDOStatement :: execute () espera que o parâmetro 1 seja array, string dada em C: \ wamp64 \ www \ ControledeEstoque \ DAL \ DALUsuario.php na linha 13 e  Aviso: Argumento inválido fornecido para foreach () em C: \ wamp64 \ www \ ControledeEstoque \ GUI \ listausu.php na linha 158.
      A seguir segue o DALUsuario.php e o Listausu.php a que se referem os avisos.
      Desde já agradeço a todos.
       
      <?php
          require_once '../Modelo/ModeloUsuario.php';  //Cruduser
          
          class DALUsuario extends ModeloUsuario{
              
              protected $tabela = 'usuarios';    
              
              public function buscaUsucod($usucod){    
                  $sql = "SELECT * FROM $this->tabela WHERE usucod = :cod";
                  $stm = DALConexao::prepare($sql);
                  $stm->bindParam(':cod', $usucod, PDO::PARAM_INT);
               $stm->execute($sql);
                  return $stm->fetch();
              }
              
              public function buscaLogin($usulogin, $ususenha){
                  $sql = "SELECT * FROM $this->tabela WHERE usulogin = :usulogin AND ususenha = :ususenha LIMIT 1";
                  $stm = DALConexao::prepare($sql);
                  $stm->bindParam(':usulogin', $usulogin, PDO::PARAM_STR);
                  $stm->bindParam(':ususenha', $ususenha, PDO::PARAM_STR);
                  return $stm->fetchAll( PDO::FETCH_ASSOC);
              }
              
              public function listaAll(){
                  $sql = "SELECT * FROM $this->tabela";
                  $stm = DALConexao::prepare($sql);
                              $stm->execute();
                  return $stm->fetchAll();
              }
              
              public function buscaTodos(){
                  $sql = "SELECT * FROM $this->tabela ";
                  $stm = DALConexao::prepare($sql);
                              $stm->execute();
                  return $stm->fetchAll();
              }         
              
              public function insert(){
                  $sql = "INSERT INTO $this->tabela(usunome,usulogin,ususenha,nivcod,usunivel,sitcod,ususituacao,clicod)
                  VALUES(:nome,:usuario,:senha,:nivcod,:nivel,:sitcod,:situacao,:clicod)";
                  $stm = DALConexao::prepare($sql);
                  $stm->bindParam(':nome', $this->nome);
                  $stm->bindParam(':usuario', $this->usuario);
                  $stm->bindParam(':senha', $this->senha);
                  $stm->bindParam(':nivcod', $this->nivcod);
                  $stm->bindParam(':nivel', $this->nivel);
                  $stm->bindParam(':sitcod', $this->sitcod);
                  $stm->bindParam(':situacao', $this->situacao);
                  $stm->bindParam(':clicod', $this->clicod);
                  return $stm->execute();
              }
              
              public function alterar($usucod){
                  $sql = "UPDATE $this->tabela SET usunome=:nome,usulogin=:usuario,ususenha=:senha,nivcod=:nivcod,usunivel=:nivel,sitcod=:sitcod,ususituacao=:situacao, 
                  clicod=:clicod WHERE usucod=:usucod";
                  $stm = DALConexao::prepare($sql);
                  $stm->bindParam(':usucod', $this->codusu);
                  $stm->bindParam(':nome', $this->nome);
                  $stm->bindParam(':usuario', $this->usuario);
                  $stm->bindParam(':senha', $this->senha);
                  $stm->bindParam(':nivcod', $this->nivcod);
                  $stm->bindParam(':nivel', $this->nivel);
                  $stm->bindParam(':sitcod', $this->sitcod);
                  $stm->bindParam(':situacao', $this->situacao);
                  $stm->bindParam(':clicod', $this->clicod);
                  return $stm->execute();
              }
              
              public function excluir($usucod){
                  $sql = "DELETE FROM $this->tabela WHERE usucod = :usucod";
                  $stm = DALConexao::prepare($sql);
                  $stm->bindParam(':usucod', $usucod, PDO::PARAM_INT);
                  return $stm->execute();
              }
          
          }
      ?>
       
      <?php
          
          session_start();
          
          include_once("../Controle/seguranca.php"); 
          
          if($_SESSION['usuNivel'] != 'administrador'){
              $_SESSION['Msg'] = "Erro, acesso não permitido.";
              header("location:../GUI/login.php");    
          }
          
          function __autoload($class) {
              require_once '../DAL/' . $class . '.php';
          }
          
      ?>
      <!DOCTYPE html>
      <html lang="pt-br">
          
          <head>        
              <title>Controle de Estoque</title>
              
              <?php 
                  include_once("../GUI/cabecalhopagadm.php");
              ?>        
          </head>
          
          <body>    
              <nav>                
                  <?php
                      include_once("../GUI/menupagadm.php");
                  ?>    
              </nav> <!-- Fim navbar -->
              
              <div class="container"><br />
              
                  <h2>Administração - Lista de Usuários</h2>
                  
                  <?php
                      require_once("../GUI/msgs.php");
                  ?>    
                  
                  <blockquote class="blockquote text-right">
                      <div class="float:left;">
                          <button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#modalinserir">                            
                              <i class="material-icons"> shop </i> Novo Usuário                            
                          </button>
                      </div>
                  </blockquote>
                  
                  <div class="row">            
                      <div class="col-12">
                      
                  <!-- Inicio Modal -->
                  <div class="modal fade" id="modalinserir" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                      <div class="modal-dialog" role="document">
                          <div class="modal-content">
                              <div class="modal-header">
                                  <h4 class="modal-title" id="myModalLabel">Cadastro de Usuários</h4>
                                  <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>                            
                              </div>
                              <div class="modal-body">
                                  <form class="form-horizontal" method="POST" action="http://localhost/ControledeEstoque../Controle/crud_usuario.php" enctype="multipart/form-data">
                                      <div class="form-group">                 
                                          <label for="recipient-name" class="col-sm-3 control-label">Empresa(cliente)</label>            
                                          <div class="col-md-12 mb-2">                             
                                              <select class="form-control is-valid" name="cliente" required>
                                       <option value="">Faça uma seleção</option>
                                                      <?php
                                                          $dalcli = new DALCliente();
                                                          foreach ($dalcli->buscaTodos() as $key => $value){                                                             
                                                              echo '<option value="'.$value->clicod.'">'.$value->clinome.'</option>';
                                                      } ?>                                        
                                              </select>                                    
                                          </div>                            
                                      </div>
                                      <div class="form-group">
                                          <label for="recipient-name" class="col-sm-3 control-label">Nome</label>
                                          <div class="col-md-12 mb-2">
                                              <input name="nome" type="text" class="form-control" placeholder="nome dcompleto" required>
                                         </div>
                                      </div>
                                      <div class="form-group">
                                          <label for="recipient-name" class="col-sm-3 control-label">Usuário</label>
                                          <div class="col-md-12 mb-2">
                                              <input name="usuario" type="text" class="form-control" placeholder="nome de usuário" required>
                                         </div>
                                      </div>
                                      <div class="form-group">
                                          <label for="recipient-name" class="col-sm-3 control-label">Senha</label>
                                          <div class="col-md-12 mb-2">
                                              <input name="senha" type="password" class="form-control" placeholder="senha de acesso" required>
                                         </div>
                                      </div>
                                      
                                      <div class="form-group">                 
                                          <label for="recipient-name" class="col-sm-3 control-label">Nivel de acesso</label>            
                                          <div class="col-md-12 mb-2">                             
                                              <select class="form-control is-valid" name="nivel" required>
                                       <option value="">Faça uma seleção</option>
                                                      <?php
                                                          $dalnivel = new DALNivel();
                                                          foreach ($dalnivel->buscaTodos() as $key => $value){                                                             
                                                              echo '<option value="'.$value->nivcod.'">'.$value->nivnome.'</option>';
                                                      } ?>                                        
                                              </select>                                    
                                          </div>                            
                                      </div>
                                      <div class="form-group">                 
                                          <label for="recipient-name" class="col-sm-3 control-label">Situação</label>                            
                                          <div class="col-md-12 mb-2">                             
                                              <select class="form-control is-valid" name="situacao" required>                                    
                                                  <option value="">Faça uma seleção</option>
                                                      <?php
                                                          $dalsit = new DALSituacao();
                                                          foreach ($dalsit->buscaParteMenor() as $key => $value){                                                
                                                              echo '<option value="'.$value->sitcod.'">'.$value->sitnome.'</option>';    
                                                      } ?>                                        
                                              </select>                                    
                                          </div>                            
                                      </div>                                            
                                      
                                      <div class="modal-footer">
                                      
                                          <button type="button" class="btn btn-info btn-sm" data-dismiss="modal">
                                              <i class = "material-icons"> cancel_presentation</i> Cancelar
                                          </button>
                                          <button type="submit" name="btncad" class="btn btn-success btn-sm">
                                              <i class = "material-icons"> save</i> Cadastrar</span>
                                          </button>
                                          
                                      </div>
                                      
                                  </form>
                              </div>
                          </div>
                      </div>
                  </div>
                  <!-- Fim Modal -->
                  
                  <div class="row">
                      <div class="col-md-12">                    
                          <table class="table table-condensed">
                              <thead>
                                  <tr>
                                      <th>Nome</th>
                                      <th>Usuário</th>
                                      <th>Nivel</th>
                                      <th>Situacao</th>
                                      <th class="cabecalho-tabela">Ação</th>
                                  </tr>
                              </thead>
                              <tbody>
                                  <?php
                                      $dalusu = new DALUsuario();
                                      foreach($dalusu->buscaUsucod(2) as $key => $linha){ ?>
                                      <tr>
                                          <td><?php echo $linha -> usunome; ?></td>
                                          <td><?php echo $linha -> usulogin; ?></td>
                                          <td><?php echo $linha -> usunivel; ?></td>
                                          <td><?php echo $linha -> ususituacao; ?></td>                                    
                                          <td class="cabecalho-tabela">
                                          
                                              <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#modalvisualizar<?php echo $linha -> usucod;?>">
                                                  <i class = "material-icons"> remove_red_eye</i> Visualizar
                                              </button>
                                              
                                              <button type="button" class="btn btn-warning btn-sm text-white" data-toggle="modal" data-target="#modalalterar<?php echo $linha -> usucod;?>">
                                                  <i class = "material-icons"> edit</i> Alterar
                                              </button>                                        
                                              
                                              <button type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#modalexcluir<?php echo $linha -> usucod; ?>">
                                                  <i class = "material-icons"> delete_forever</i> Excluir
                                              </button>
                                          
                                          </td>
                                      </tr>                            
                                      
                                      <!-- Inicio Modal viasualizasusu -->
                                      <div class="modal fade" id="modalvisualizar<?php echo $linha -> usucod; ?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                                          <div class="modal-dialog" role="document">
                                              <div class="modal-content">
                                                  <div class="modal-header">
                                                      <h4 class="modal-title" id="myModalLabel"><?php echo "Usuário - ".$linha -> usunome; ?></h4>
                                                      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                                                  </div>                                            
                                                  
                                                  <div class="modal-body">
                                                      <p><?php echo "Cód Usuário    - ".$linha -> usucod; ?></p>
                                                      <p><?php echo "Nome           - ".$linha -> usunome; ?></p>
                                                      <p><?php echo "Usuário        - ".$linha -> usulogin; ?></p>
                                                      <p><?php echo "Nível          - ".$linha -> usunivel; ?></p>
                                                      <p><?php echo "Situação       - ".$linha -> ususituacao; ?></p>
                                                      
                                                      <div class="modal-footer">
                                                          <button type="button" class="btn btn-info btn-sm" data-dismiss="modal">
                                                              <i class = "material-icons"> exit_to_app</i> Fechar
                                                          </button>
                                                      </div>                                                
                                                  </div>
                                              </div>
                                          </div>
                                      </div>
                                      <!-- Fim Modal viasualizasusu-->
                                      
                                      <!-- Inicio Modalexcluir -->                                
                                      <div class="modal fade" id="modalexcluir<?php echo $linha -> usucod; ?>" tabindex="-1" role="dialog" aria-labelledby="modalexcluirLabel">
                                          <div class="modal-dialog" role="document">
                                              <div class="modal-content">
                                                  <div class="modal-header">
                                                      <h4 class="modal-title" id="modalexcluirLabel">Exclusão de Produto</h4>
                                                      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                                                  </div>    
                                                  <div class="modal-body">
                                                      <form class="form-horizontal" method="POST" action="http://localhost/ControledeEstoque../Controle/crud_produto.php" enctype="multipart/form-data">
                                                          <p><?php echo "Cód Usuário    - ".$linha -> usucod; ?></p>
                                                          <p><?php echo "Nome           - ".$linha -> usunome; ?></p>
                                                          <p><?php echo "Usuário        - ".$linha -> usulogin; ?></p>
                                                          <p><?php echo "Nível          - ".$linha -> usunivel; ?></p>
                                                          <p><?php echo "Situação       - ".$linha -> ususituacao; ?></p>
                                                          <p><?php echo "Registros excluídos não poderão ser recuparados.";?></p>
                                                          
                                                          <input name="Xcod" type="hidden" id="Xcod" value="<?php echo $linha -> usucod; ?>">    
                                                          
                                                          <div class="modal-footer">
                                                              <button type="button" class="btn btn-info btn-sm" data-dismiss="modal">
                                                                  <i class = "material-icons"> cancel_presentation</i> Cancelar
                                                              </button>
                                                              <button type="submit" name="btnexc" class="btn btn-danger btn-sm">
                                                                  <i class = "material-icons"> delete_forever</i> Excluir
                                                              </button>
                                                          </div>
                                                      </form>
                                                  </div>
                                              </div>
                                          </div>
                                      </div>                            
                                      <!-- Fim Modal Modalexcluir-->                                
                                  
                                      <!-- Inicio Modalalterar -->
                                      <div class="modal fade" id="modalalterar<?php echo $linha -> usucod;?>" tabindex="-1" role="dialog" aria-labelledby="modalalterarLabel"
                                          data-target="#modalalterar" data-backdrop="static" data-keyboard="false">
                                          <div class="modal-dialog" role="document">
                                              <div class="modal-content">
                                                  <div class="modal-header">
                                                      <h4 class="modal-title" id="modalalterarLabel">Alteração de Produto</h4>
                                                      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>                                                
                                                  </div>
                                                  <div class="modal-body">
                                                      <form class="form-horizontal" method="POST" action="http://localhost/ControledeEstoque../Controle/crud_usuario.php" enctype="multipart/form-data">
                                                          <div class="form-group">                 
                                                              <label for="recipient-name" class="control-label">Empresa(cliente)</label>
                                                                  <select class="form-control is-valid" name="cliente" required>
                                                                      <option value="">Faça uma seleção</option>
                                                                      <?php
                                                                      $dalcli = new DALCliente();
                                                                      foreach ($dalcli->buscaTodos() as $key => $value){ 
                                                                          if($value->clicod != $linha->clicod){
                                                                              echo '<option value="'.$value->clicod.'">'.$value->clinome.'</option>';                                                        
                                                                          }else{
                                                                              $clientecod = $value->clicod;
                                                                              $clientenome = $value->clinome;
                                                                          }
                                                                      } ?>                                                    
                                                                      <option
                                                                          value="<?php echo $clientecod;?>"
                                                                          <?php echo "selected"; ?> >
                                                                          <?php echo $clientenome;?>
                                                                      </option>    
                                                                  </select>
                                                          </div>
                                                          <div class="form-group">
                                                              <label for="recipient-name" class="control-label">Nome</label>
                                                              <input name="nome" type="text" class="form-control" id="nome" 
                                                              value="<?php echo $linha->usunome;?>" required>
                                                          </div>
                                                          <div class="form-group">
                                                              <label for="recipient-name" class="control-label">Usuário</label>
                                                              <input name="usuario" type="text" class="form-control" id="usuario"
                                                              value="<?php echo $linha->usulogin;?>" required>
                                                          </div>
                                                          <div class="form-group">
                                                              <label for="recipient-name" class="control-label">Senha</label>
                                                              <input name="senha" type="password" class="form-control" id="senha"
                                                              value="<?php //echo $linha->ususenha;?>" required>
                                                          </div>
                                                          <div class="form-group">                 
                                                              <label for="recipient-name" class="control-label">Nível de acesso</label>
                                                                  <select class="form-control is-valid" name="nivel" required>
                                                                      <option value="">Faça uma seleção</option>
                                                                      <?php
                                                                      $dalnivel = new DALNivel();
                                                                      foreach ($dalnivel->buscaTodos() as $key => $value){ 
                                                                          if($value->nivcod != $linha->nivcod){
                                                                              echo '<option value="'.$value->nivcod.'">'.$value->nivnome.'</option>';                                                        
                                                                          }else{
                                                                              $nivelcod = $value->nivcod;
                                                                              $nivelnome = $value->nivnome;
                                                                          }
                                                                      } ?>                                                    
                                                                      <option
                                                                          value="<?php echo $nivelcod;?>"
                                                                          <?php echo "selected"; ?> >
                                                                          <?php echo $nivelnome;?>
                                                                      </option>    
                                                                  </select>
                                                          </div>
                                                          <div class="form-group">                 
                                                              <label for="recipient-name" class="control-label">Situação</label>
                                                                  <select class="form-control is-valid" name="situacao" required>
                                                                      <option value="">Faça uma seleção</option>
                                                                      <?php
                                                                      $dalsit = new DALSituacao();
                                                                      foreach ($dalsit->buscaParteMenor() as $key => $value){ 
                                                                          if($value->sitcod != $linha->sitcod){
                                                                              echo '<option value="'.$value->sitcod.'">'.$value->sitnome.'</option>';                                                        
                                                                          }else{
                                                                              $situacaocod = $value->sitcod;
                                                                              $situacaonome = $value->sitnome;
                                                                          }
                                                                      } ?>                                                    
                                                                      <option
                                                                          value="<?php echo $situacaocod;?>"
                                                                          <?php echo "selected"; ?> >
                                                                          <?php echo $situacaonome;?>
                                                                      </option>    
                                                                  </select>
                                                          </div>
                                                          
                                                              
                                                          <input name="Xcod" type="hidden" id="Xcod" value="<?php echo $linha -> usucod;?>">
                                  
                                                          <div class="modal-footer">                                                                                                            
                                                              
                                                              <button type="button" class="btn btn-info btn-sm" data-dismiss="modal">
                                                                  <i class = "material-icons"> cancel_presentation</i> Cancelar
                                                              </button>
                                                              <button type="submit" name="btnalt" class="btn btn-warning btn-sm text-white">
                                                                  <i class = "material-icons"> edit</i> Alterar
                                                              </button>
                                                              
                                                          </div>                                                    
                                                          </form>
                                                  </div>              
                                              </div>
                                          </div>
                                      </div>        
                                      <!-- Termino Modalalterar -->
              
                                  <?php } ?>
                              </tbody>
                           </table>
                      </div>
                  </div>    <!-- DIV ROW -->            
              </div> <!-- DIV COL - 12 -->
              </div>    <!-- DIV ROW -->            
          </div> <!-- DIV CONTAINER -->
              
              <?php
                  include_once("../GUI/rodapepagadm.php");
              ?>
              
          </body>
      </html>
       
       
       
       
          
×

Informação importante

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