Página1.php
________________
<?php
require 'conexao.php';
function generateCodCliente($lastCodCliente)
{
$n = ltrim($lastCodCliente, 'C') + 1;
return 'C' . str_pad($n, 4, "0", STR_PAD_LEFT);
}
// Recebe o termo de pesquisa se existir
$termo = (isset($_GET['termo'])) ? $_GET['termo'] : '';
// Verifica se o termo de pesquisa está¡ vazio, se estiver executa uma consulta completa
if (empty($termo)):
$conexao = conexao::getInstance();
$sql = 'SELECT id, cod_cli, nome, sobrenome_cli, email, celular, status, foto FROM tab_clientes ORDER BY cod_cli ASC';
$stm = $conexao->prepare($sql);
$stm->execute();
$clientes = $stm->fetchAll(PDO::FETCH_OBJ);
else:
// Executa uma consulta baseada no termo de pesquisa passado como parâmetro
$conexao = conexao::getInstance();
$sql = 'SELECT id, cod_cli, nome, sobrenome_cli, email, celular, status, foto FROM tab_clientes WHERE nome LIKE :nome OR cod_cli LIKE :cod_cli ORDER BY cod_cli ASC';
$stm = $conexao->prepare($sql);
$stm->bindValue(':nome', $termo.'%');
$stm->bindValue(':cod_cli', $termo.'%');
$stm->execute();
$clientes = $stm->fetchAll(PDO::FETCH_OBJ);
endif;
foreach($clientes as $cliente);
$cod = generateCodCliente($cliente->cod_cli);
?>
<!DOCTYPE html>
<html lang=”pt-br”>
<head>
<meta charset="utf-8">
<title>Listagem de Clientes</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/custom.css">
</head>
<body>
<div class='container'>
<fieldset>
<!-- Cabeçalho da Listagem -->
<legend><h1>Cadastro de Clientes</h1></legend>
<!-- Formulário de Pesquisa -->
<table>
<form action="" method="get" id='form-contato' class="form-horizontal">
<td>
<td><label class="control-label" for="termo">Pesquisar</label></td>
<td width=500><input type="text" class="form-control" id="termo" name="termo" placeholder="Infome o Código ou Nome do Cliente"></td>
<td><button type="submit" class="btn btn-primary">Pesquisar</button</td>>
<td><a href='listclie.php' class="btn btn-primary">Ver Todos</a></td>
</form>
<!-- Link para página de cadastro -->
<td width=100></td>
<td><a href='cadclie.php?cod=<?=$cod;?>' class="btn btn-success">Cadastrar Cliente</a></td>
<td><a href='main.html' class="btn btn-success pull-right">Sair</a></td>
<div class='clearfix'></div>
</td>
</table>
<?php if(!empty($clientes)):?>
<!-- Tabela de Clientes -->
<table class="table table-striped">
<tr class='active'>
<th>Foto</th>
<th>Cod.</th>
<th>Nome</th>
<th>Sobrenome</th>
<th>E-mail</th>
<th>Celular</th>
<th>Status</th>
<th>Acao</th>
</tr>
<?php foreach($clientes as $cliente):?>
<tr>
<td><img src='fotos/<?=$cliente->foto?>' height='40' width='40'></td>
<td><?=$cliente->cod_cli?></td>
<td><?=$cliente->nome?></td>
<td><?=$cliente->sobrenome_cli?></td>
<td><?=$cliente->email?></td>
<td><?=$cliente->celular?></td>
<td><?=$cliente->status?></td>
<td>
<a href='editclie.php?id=<?=$cliente->id?>' class="btn btn-primary">Editar</a>
<a href='javascript:void(0)' class="btn btn-danger link_exclusao" rel="<?=$cliente->id?>">Excluir</a>
</td>
</tr>
<?php endforeach;?>
</table>
<?php else: ?>
<!-- Mensagem caso nãoo exista clientes ou nãoo encontrado -->
<h3 class="text-center text-primary">Não existem clientes cadastrados!</h3>
<?php endif; ?>
</fieldset>
</div>
<script type="text/javascript" src="js/custom.js"></script>
</body>
</html>
Página2.php
--------------------
<!DOCTYPE html>
<html lang=â€pt-brâ€>
<head>
<meta charset="utf-8">
<title>Sistema de Cadastro</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/custom.css">
</head>
<body>
<div class='container box-mensagem-crud'>
<?php
require 'conexao.php';
include('valida-cpf.php');
// Atribui uma conexão PDO
$conexao = conexao::getInstance();
// Recebe os dados enviados pela submissão
$acao = (isset($_POST['acao'])) ? $_POST['acao'] : '';
$id = (isset($_POST['id'])) ? $_POST['id'] : '';
$tipo = (isset($_POST['tipo'])) ? $_POST['tipo'] : '';
$cod = (isset($_POST['codigo'])) ? $_POST['codigo'] : '';
$nome = (isset($_POST['nome'])) ? $_POST['nome'] : '';
$sobrenome = (isset($_POST['sobrenome'])) ? $_POST['sobrenome'] : '';
$data_nascimento = (isset($_POST['data_nascimento'])) ? $_POST['data_nascimento'] : '';
$endereco = (isset($_POST['endereco'])) ? $_POST['endereco'] : '';
$cidade = (isset($_POST['cidade'])) ? $_POST['cidade'] : '';
$estado = (isset($_POST['estado'])) ? $_POST['estado'] : '';
$cep = (isset($_POST['cep'])) ? $_POST['cep'] : '';
$email = (isset($_POST['email'])) ? $_POST['email'] : '';
$cpf = (isset($_POST['cpf'])) ? str_replace(array('.','-'), '', $_POST['cpf']): '';
$rg = (isset($_POST['rg'])) ? $_POST['rg'] : '';
$passaporte = (isset($_POST['passaporte'])) ? $_POST['passaporte'] : '';
$emissao = (isset($_POST['emissao'])) ? $_POST['emissao'] : '';
$vencimento = (isset($_POST['vencimento'])) ? $_POST['vencimento'] : '';
$foto_atual = (isset($_POST['foto_atual'])) ? $_POST['foto_atual'] : '';
$telefone = (isset($_POST['telefone'])) ? str_replace(array('-', ' '), '', $_POST['telefone']) : '';
$celular = (isset($_POST['celular'])) ? str_replace(array('-', ' '), '', $_POST['celular']) : '';
$status = (isset($_POST['status'])) ? $_POST['status'] : '';
$data_nascimento = implode("-",array_reverse(explode("/",$data_nascimento)));
$emissao = implode("-",array_reverse(explode("/",$emissao)));
$vencimento = implode("-",array_reverse(explode("/",$vencimento)));
// Valida os dados recebidos
$mensagem = '';
if ($acao == 'editar' && $id == ''):
$mensagem .= '<li>ID do registros desconhecido.</li>';
endif;
// Se for ação diferente de excluir valida os dados obrigatórios
if ($acao != 'excluir'):
if ($nome == '' || strlen($nome) < 3):
$mensagem .= '<li>Favor preencher o Nome.</li>';
endif;
if ( valida_cpf( $cpf ) === false) {
$mensagem .= '<li> O CPF é Inválido.';
}
if ($mensagem != ''):
$mensagem = '<ul>' . $mensagem . '</ul>';
echo "<div class='alert alert-danger' role='alert'>".$mensagem."</div> ";
exit;
endif;
//Aqui o retorno para a página1.php sem perder os dados cadastrados e focando o campo onde deu o erro.
if ($mensagem != ''):
$mensagem = '<ul>' . $mensagem . '</ul>';
echo "<script>alert('Por favor, digite um email válido.');";
echo "javascript:history.go(-1)'</script>";
exit;
endif;
endif;
// Verifica se foi solicitada a inclusão de dados
if ($acao == 'incluir'):
$nome_foto = 'padrao.jpg';
if(isset($_FILES['foto']) && $_FILES['foto']['size'] > 0):
$extensoes_aceitas = array('bmp' ,'png', 'svg', 'jpeg', 'jpg');
$extensao = strtolower(end(explode('.', $_FILES['foto']['name'])));
// Validamos se a extensão do arquivo é aceita
if (array_search($extensao, $extensoes_aceitas) === false):
echo "<h1>Extensão Inválida!</h1>";
exit;
endif;
// Verifica se o upload foi enviado via POST
if(is_uploaded_file($_FILES['foto']['tmp_name'])):
// Verifica se o diretório de destino existe, senão existir cria o diretório
if(!file_exists("fotos")):
mkdir("fotos");
endif;
// Monta o caminho de destino com o nome do arquivo
$nome_foto = date('dmY') . '_' . $_FILES['foto']['name'];
// Essa função move_uploaded_file() copia e verifica se o arquivo enviado foi copiado com sucesso para o destino
if (!move_uploaded_file($_FILES['foto']['tmp_name'], 'fotos/'.$nome_foto)):
echo "Houve um erro ao gravar arquivo na pasta de destino!";
endif;
endif;
endif;
$sql = 'INSERT INTO tab_clientes (tipo_cli, cod_cli, nome, sobrenome_cli, data_nascimento, endereco_cli, cidade_cli, estado_cli, cep_cli, email, telefone, celular, cpf, rg_cli, passaporte_cli, emis_pp_cli, val_pp_cli, status, foto)
VALUES(:tipo, :codigo, :nome, :sobrenome, :data_nascimento, :endereco, :cidade, :estado, :cep, :email, :telefone, :celular, :cpf, :rg, :passaporte, :emissao, :vencimento, :status, :foto)';
$stm = $conexao->prepare($sql);
$stm->bindValue(':tipo', $tipo);
$stm->bindValue(':codigo', $cod);
$stm->bindValue(':nome', $nome);
$stm->bindValue(':sobrenome', $sobrenome);
$stm->bindValue(':data_nascimento', $data_nascimento);
$stm->bindValue(':endereco', $endereco);
$stm->bindValue(':cidade', $cidade);
$stm->bindValue(':estado', $estado);
$stm->bindValue(':cep', $cep);
$stm->bindValue(':email', $email);
$stm->bindValue(':telefone', $telefone);
$stm->bindValue(':celular', $celular);
$stm->bindValue(':cpf', $cpf);
$stm->bindValue(':rg', $rg);
$stm->bindValue(':passaporte', $passaporte);
$stm->bindValue(':emissao', $emissao);
$stm->bindValue(':vencimento', $vencimento);
$stm->bindValue(':status', $status);
$stm->bindValue(':foto', $nome_foto);
$retorno = $stm->execute();
if ($retorno):
echo "<div class='alert alert-success' role='alert'>Registro inserido com sucesso, aguarde você está sendo redirecionado ...</div> ";
else:
echo "<div class='alert alert-danger' role='alert'>Erro ao inserir registro!</div> ";
endif;
echo "<meta http-equiv=refresh content='3;URL=listclie.php'>";
endif;
// Verifica se foi solicitada a edição de dados
if ($acao == 'editar'):
if(isset($_FILES['foto']) && $_FILES['foto']['size'] > 0):
// Verifica se a foto é diferente da padrão, se verdadeiro exclui a foto antiga da pasta
if ($foto_atual <> 'padrao.jpg'):
unlink("fotos/" . $foto_atual);
endif;
$extensoes_aceitas = array('bmp' ,'png', 'svg', 'jpeg', 'jpg');
$extensao = strtolower(end(explode('.', $_FILES['foto']['name'])));
// Validamos se a extensão do arquivo é aceita
if (array_search($extensao, $extensoes_aceitas) === false):
echo "<h1>Extensão Inválida!</h1>";
exit;
endif;
// Verifica se o upload foi enviado via POST
if(is_uploaded_file($_FILES['foto']['tmp_name'])):
// Verifica se o diretório de destino existe, senão existir cria o diretório
if(!file_exists("fotos")):
mkdir("fotos");
endif;
// Monta o caminho de destino com o nome do arquivo
$nome_foto = date('dmY') . '_' . $_FILES['foto']['name'];
// Essa função move_uploaded_file() copia e verifica se o arquivo enviado foi copiado com sucesso para o destino
if (!move_uploaded_file($_FILES['foto']['tmp_name'], 'fotos/'.$nome_foto)):
echo "Houve um erro ao gravar arquivo na pasta de destino!";
endif;
endif;
else:
$nome_foto = $foto_atual;
endif;
$sql = 'UPDATE tab_clientes SET tipo_cli=:tipo, nome=:nome, sobrenome_cli=:sobrenome, data_nascimento=:data_nascimento, endereco_cli=:endereco, cidade_cli=:cidade, estado_cli=:estado, cep_cli=:cep, email=:email, telefone=:telefone, celular=:celular, cpf=:cpf, rg_cli=:rg, passaporte_cli=:passaporte, emis_pp_cli=:emissao, val_pp_cli=:vencimento, status=:status, foto=:foto ';
$sql .= 'WHERE id = :id';
$stm = $conexao->prepare($sql);
$stm->bindValue(':tipo', $tipo);
$stm->bindValue(':nome', $nome);
$stm->bindValue(':sobrenome', $sobrenome);
$stm->bindValue(':data_nascimento', $data_nascimento);
$stm->bindValue(':endereco', $endereco);
$stm->bindValue(':cidade', $cidade);
$stm->bindValue(':estado', $estado);
$stm->bindValue(':cep', $cep);
$stm->bindValue(':email', $email);
$stm->bindValue(':telefone', $telefone);
$stm->bindValue(':celular', $celular);
$stm->bindValue(':cpf', $cpf);
$stm->bindValue(':rg', $rg);
$stm->bindValue(':passaporte', $passaporte);
$stm->bindValue(':emissao', $emissao);
$stm->bindValue(':vencimento', $vencimento);
$stm->bindValue(':status', $status);
$stm->bindValue(':foto', $nome_foto);
$stm->bindValue(':id', $id);
$retorno = $stm->execute();
if ($retorno):
echo "<div class='alert alert-success' role='alert'>Registro editado com sucesso, aguarde você está sendo redirecionado ...</div> ";
else:
echo "<div class='alert alert-danger' role='alert'>Erro ao editar registro!</div> ";
endif;
echo "<meta http-equiv=refresh content='3;URL=listclie.php'>";
endif;
// Verifica se foi solicitada a exclusão dos dados
if ($acao == 'excluir'):
// Captura o nome da foto para excluir da pasta
$sql = "SELECT foto FROM tab_clientes WHERE id = :id AND foto <> 'padrao.jpg'";
$stm = $conexao->prepare($sql);
$stm->bindValue(':id', $id);
$stm->execute();
$cliente = $stm->fetch(PDO::FETCH_OBJ);
if (!empty($cliente) && file_exists('fotos/'.$cliente->foto)):
unlink("fotos/" . $cliente->foto);
endif;
// Exclui o registro do banco de dados
$sql = 'DELETE FROM tab_clientes WHERE id = :id';
$stm = $conexao->prepare($sql);
$stm->bindValue(':id', $id);
$retorno = $stm->execute();
if ($retorno):
echo "<div class='alert alert-success' role='alert'>Registro excluÃdo com sucesso, aguarde você está sendo redirecionado ...</div> ";
else:
echo "<div class='alert alert-danger' role='alert'>Erro ao excluir registro!</div> ";
endif;
echo "<meta http-equiv=refresh content='3;URL=listclie.php'>";
endif;
?>
</div>
</body>
</html>