cadastro.php

<< Click to Display Table of Contents >>

Navigation:  Outros > CRUD com persistencia Orientada Objeto > projeto >

cadastro.php

Previous pageReturn to chapter overviewNext page

<?php
include_once filter_var(getenv('DOCUMENT_ROOT')) . '/init.php';
 
use \modelo\Pessoa;
use \persistencia\DAL;
 
// cria um novo objeto que será usado para colocar informações na pagina
$pessoa = new Pessoa();
$pessoa->clear();  // este método é necessário para limpar conteudo caso seja novo registro
 
// pega o get (com filter para pegar só int), se for null, pega ZERO = novo
$pessoa->id_pessoa = filter_input(INPUT_GET"id"FILTER_SANITIZE_NUMBER_INT) ?? 0;
$foco = "nome";
 
// mensagens de erros de validação - uma para cada campo que queremos validar
$nomeErro = '';
$enderecoErro = '';
$nascErro = '';
$emailErro = '';
 
// limpa o POST (quando usuario pressionar "Gravar")
$post_array = filter_input_array(INPUT_POSTFILTER_DEFAULT);
 
// tem algo no POST?  
if ($post_array) {
 
    // se é post para exclusao...
    if (isset($post_array['excluir']) && $pessoa->id_pessoa > 0) {
 
        DAL::Excluir(new Pessoa(), $pessoa->id_pessoa);
        DAL::desconectar();
 
        // volta para principal
        header("Location: \index.php");
    }
 
    // chegou até aqui é confirmação de gravação...
    $invalido = 'is-invalid';
 
    // transfere o conteudo do POST para o objeto Pessoa que será usado para gravar na base (e colocar na tela)
    $pessoa->nome = $post_array['nome'];
    $pessoa->endereco = $post_array['endereco'];
    $pessoa->nascimento = $post_array['nascimento'];
    $pessoa->email = $post_array['email'];
    $pessoa->sexo = $post_array['sexo'] ?? "M";
    $pessoa->limite = $post_array['limite'] ?? 0;
 
    // validar todos os campos
    if (empty($pessoa->nome) || mb_strlen($pessoa->nome) < 3) {
        $nomeErro = $invalido;
        $foco = "nome";
    }
 
    if (empty($pessoa->endereco)) {
        $enderecoErro = $invalido;
        $foco = "endereco";
    }
 
    if (empty($pessoa->nascimento)) {
        $nascErro = $invalido;
        $foco = "nasc";
    }
 
    if (empty($pessoa->email) || !filter_var($pessoa->emailFILTER_VALIDATE_EMAIL)) {
        $emailErro = $invalido;
        $foco = "email";
    }
 
    if (empty($pessoa->limite)) {
        $pessoa->limite = 0;
    }
 
    // tudo válido?
    $cadastro_valido = empty($nomeErro) && empty($enderecoErro) && empty($nascErro) && empty($emailErro);
 
    // se não tem nenhum erro grava no banco
    if ($cadastro_valido) {
 
        try {
            DAL::Gravar($pessoa);
            DAL::Desconectar();
            
            // volta para página inicial
            header("Location: \index.php");
        } catch (Exception $e) {
            
            // qualquer erro criamos a variável msgException
            $msgException = $e->getMessage();
        }
    }
else {
 
    // não tem POST, mas se o id > 0 é alteração - vamos carregar os dados!
    if ($pessoa->id_pessoa > 0) {
        $pessoa = DAL::GetObjectById($pessoa$pessoa->id_pessoa);
        DAL::desconectar();
    }
}
 
$titulo = "Cadastro de Contato";
include __DIR__ . "/visual/cabecalho.php";
?>
 
<body>
    <div class="container">
        <header>
            <h3><?php echo $pessoa->id_pessoa == 0 ? "Novo" : "Alteração de"; ?> Contato</h3>
        </header>
        <section>
            <?php if (isset($msgException)): ?>
                <div class="alert alert-danger alert-dismissible fade show" role="alert">Ocorreu um erro ao gravar registroMensagem original:<br/>
                    <?= $msgException ?>
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
            <?php endif; ?>
            <div class="card-body">
                <form class="form-horizontal" action="cadastro.php?id=<?php echo $pessoa->id_pessoa ?>" method="post">
                    <div class="form-group">
                        <label for="nome">Nome</label>
                        <input name="nome" id="nome" class="form-control <?= $nomeErro ?>" size="50" type="text" placeholder="Nome" value="<?= $pessoa->nome ?>">
                        <div class="invalid-feedback">Nome deve estar preenchido e ter pelo menos 3 letras</div>
                    </div>
                    <div class="form-group">
                        <label for="endereco">Endereco</label>
                        <input name="endereco" id="endereco" class="form-control <?= $enderecoErro ?>" size="80" type="text" placeholder="Endereço" value="<?= $pessoa->endereco ?>">
                        <div class="invalid-feedback">Você deve preencher o endereço</div>
                    </div>
                    <div class="form-group">
                        <label for="nascimento">Nascimento</label>
                        <input name="nascimento" id="nascimento" class="form-control <?= $nascErro ?>" type="text" placeholder="Nascimento" value="<?= $pessoa->nascimento ?>">
                        <div class="invalid-feedback">Você deve preencher a data de nascimento</div>
                    </div>
                    <div class="form-group">
                        <label for="email">Email</label>
                        <input name="email" id="email" class="form-control <?= $emailErro ?>" size="40" type="text" placeholder="Email" value="<?= $pessoa->email ?>">
                        <div class="invalid-feedback">Você deve preencher um email válido</div>
                    </div>                            
                    <div class="form-group">
                        <label>Sexo</label>
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="sexo" id="sexo" value="M" <?php echo ($pessoa->sexo == "M" ? "checked" : null); ?>/> 
                            <label class="form-check-label" for="sexo">Masculino</label>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="sexo" id="sexo" value="F" <?php echo ($pessoa->sexo == "F" ? "checked" : null); ?>/> 
                            <label class="form-check-label" for="sexo">Feminino</label>                            
                        </div>
                    </div>
                    <div class="form-actions">
                        <button type="submit" name="gravar"  class="btn btn-success">Gravar</button>
                        <button type="submit" name="excluir" class="btn btn-danger" onclick="return confirm('Confirma e exclusão?')" <?php echo $pessoa->id_pessoa > 0 ? '' : 'style="display: none;"'; ?>>Excluir</button>
                        <a href="/index.php" type="btn" class="btn btn-primary">Voltar</a>
                    </div>
                </form>
            </div>
        </section>    
    </div>
    <?php
    include __DIR__ . "/visual/scripts_terceiros.php";
    // se a variavel foco está definida manda o foco para lá    
    if (isset($foco)) {
        echo "<script>document.getElementById('{$foco}').focus();</script>";
    }
    ?>
</body>
 
</html>