cadastro.php

<< Click to Display Table of Contents >>

Navigation:  Outros > CRUD simples mas otimizado  >

cadastro.php

Previous pageReturn to chapter overviewNext page

<?php
require __DIR__ . '/banco.php';
 
// default id = 0 (cadastro)
$id = 0;
 
// limpa o GET
$get_array = filter_input_array(INPUT_GETFILTER_DEFAULT);
 
// tem GET = alteração
if ($get_array && !empty($get_array['id'])) {
    $id = $get_array['id'];
}
 
// conteudo quando é novo registro
$nome = '';
$endereco = '';
$telefone = '';
$email = '';
$sexo = 'M';
$foco = "nome";
// mensagens de erros de validação
$nomeErro = '';
$enderecoErro = '';
$telefoneErro = '';
$emailErro = '';
 
// limpa o POST (quando usuario pressionar "Gravar")
$post_array = filter_input_array(INPUT_POSTFILTER_DEFAULT);
 
if ($post_array) {
 
    $invalido = 'is-invalid';
 
    // transfere o conteudo do POST para variaveis
    $nome = $post_array['nome'];
    $endereco = $post_array['endereco'];
    $telefone = $post_array['telefone'];
    $email = $post_array['email'];
    $sexo = $post_array['sexo'] ?? "M";
 
    // validar todos os campos
    if (empty($nome) || mb_strlen($nome) < 3) {
        $nomeErro = $invalido;
        $foco = "nome";
    }
 
    if (empty($endereco)) {
        $enderecoErro = $invalido;
        $foco = "endereco";
    }
 
    if (empty($telefone)) {
        $telefoneErro = $invalido;
        $foco = "telefone";
    }
 
    if (empty($email) || !filter_var($emailFILTER_VALIDATE_EMAIL)) {
        $emailErro = $invalido;
        $foco = "email";
    }
 
    $cadastro_valido = empty($nomeErro) && empty($enderecoErro) && empty($telefoneErro) && empty($emailErro);
 
    // se não tem nenhum erro grava no banco
    if ($cadastro_valido) {
        $pdo = Banco::conectar();
        $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
 
        // insert
        if ($id == 0) {
            $sql = "INSERT INTO pessoa (nome, endereco, telefone, email, sexo) VALUES(?,?,?,?,?)";
            $q = $pdo->prepare($sql);
            $q->execute(array($nome$endereco$telefone$email$sexo));
        } else {
            // update
            $sql = "UPDATE pessoa  set nome = ?, endereco = ?, telefone = ?, email = ?, sexo = ? WHERE id = ?";
            $q = $pdo->prepare($sql);
            $q->execute(array($nome$endereco$telefone$email$sexo$id));
        }
 
        Banco::desconectar();
        header("Location: index.php");
    }
else {
 
    // não tem POST, mas se o id > 0 é alteração!
    if ($id > 0) {
        $pdo = Banco::conectar();
        $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
        $sql = "SELECT * FROM pessoa where id = ?";
        $q = $pdo->prepare($sql);
        $q->execute(array($id));
        $data = $q->fetch(PDO::FETCH_ASSOC);
        $nome = $data['nome'];
        $endereco = $data['endereco'];
        $telefone = $data['telefone'];
        $email = $data['email'];
        $sexo = $data['sexo'];
        Banco::desconectar();
    }
}
 
$titulo = "Cadastro de Contato";
include __DIR__ . "/cabecalho.php";
?>
 
<body>
    <div class="container">
        <header>
            <h3><?php echo $id == 0 ? "Novo" : "Alteração de"; ?> Contato</h3>
        </header>
        <section>
            <div class="card-body">
                <form class="form-horizontal" action="cadastro.php?id=<?php echo $id ?>" 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="<?= $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="<?= $endereco ?>">
                        <div class="invalid-feedback">Você deve preencher o endereço</div>
                    </div>
 
                    <div class="form-group">
                        <label for="telefone">Telefone</label>
                        <input name="telefone" id="telefone" class="form-control <?= $telefoneErro ?>" size="30" type="text" placeholder="Telefone" value="<?= $telefone ?>">
                        <div class="invalid-feedback">Você deve preencher o telefone</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="<?= $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 ($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 ($sexo == "F" ? "checked" : null); ?>/> 
                            <label class="form-check-label" for="sexo">Feminino</label>                            
                        </div>
                    </div>
 
                    <div class="form-actions">
                        <button type="submit" class="btn btn-success">Gravar</button>
                        <a href="index.php" type="btn" class="btn btn-primary">Voltar</a>
                    </div>
                </form>
            </div>
        </section>    
    </div>
</div>
<?php
include __DIR__ . "/js_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>