O objetivo dessa aplicação é poder fazer um cadastro de um usuário do banco de dados e listar todos os usuários que já estão cadastrados no banco de dados, e excluir eles quando quiser e tambem poder fazer uma alteração de um usuário individual.
Vamos lá para começamos é necessario primeiro criar uma tabela de dados a onde vai ser inserido todos os dados.
A tabela vai se chamar de Usuario(s), e os campos que a tabela terá vai ser (Id) para toda vez que um usuário ser criado o id vai ser auto incrementado ,(nome_usuario) o campo responsável pelo o nome do usuário,(email_usuario) Responsável pelo o email do usuário e por último (cpf_usuario) que vai ser obviamente o cpf do usuário.
create table usuario(
id int unsigned not null auto_increment,
nome_usuario varchar(20) not null,
email_usuario varchar(30) not null,
cpf_usuario varchar(20) not null,
primary key (id)
);
Agora proximo passo é fazer o front-End da aplicação e para isso nós ultilizaremos o Boostrap para a estilização não ser um problema.
Então o layout da tela será essa imagem de baixo.
Para isso vamos ter que recuperar os dados do formulário para fazer a validação no Back-end, e para isso a requisição que vai ser mais segurar para os dados virem com segurança será feito pelo o método "POST".
- é necessario usar uma função do PHP para ver se o usuário clicou no submit do formulário, que é a função isset(), e como parâmetro vai ser passado o valor do submit que vai ser recuperado com a superglobal $_POST.
- Recuperar os valores dos input e colocar tudo em uma variável que vai ser 3(três) variaveis com o nome dos campos da tabela do banco de dados (nome,email,cpf),e o valores das variaveis vai ser o name de cada input que está no formulário.
- Fazer uma condição com o if() para verificar se os campos estão vázios, para isso vai ser necessario usar a função empty() ,e passa como parâmetro as variaveis que foi atribuida a pouco tempo tem que ser passada individualmente cada variavel.
- Verificar se o email é válido com a função filter_var() e passar 2(dois) parâmetros primeiro a $variavel do email e em segundo uma constante FILTER_VALIDATE_EMAIL.
- Validar o cpf com a expressao regular que vai ser "/^[0-9]{3}.?[0-9]{3}.?[0-9]{3}-?[0-9]{2}/", e usar a função do preg_match() passando 2(dois) parâmetros, o primeiro a expressão e o segundo a $variavel do cpf.
- Inserir tudo na tabela usando o INSERT e os valores vai ser o id como null e as 3(três) $variaveis.
if(isset($_POST['cadastrar'])){
$nome = $_POST['nome'];
$email = $_POST['email'];
$cpf = $_POST['cpf'];
if(empty($nome) || empty($email) || empty($cpf)){
echo '<div style="padding:10px;color:white;" class=" bg-danger bg-gradient ">Preenchar todos os campos!!</div>';
}else{
if(filter_var($email,FILTER_VALIDATE_EMAIL)){
if(\Models\coisasModel::validarCpf($cpf)){
$sql = \MySql::connect()->prepare("INSERT INTO usuario VALUES (null,?,?,?)");
$sql->execute(array($nome,$email,$cpf));
echo '<script>alert("cadastrado com sucesso!!!");location.href="home"</script>';
}else{
echo '<div style="padding:10px;color:white;" class=" bg-danger bg-gradient">Cpf invalido!!</div>';
}
}else{
echo '<div style="padding:10px;color:white;" class=" bg-danger bg-gradient">Email invalido!!</div>';
}
}
}
Vai ser utilizado o SELECT para puxar todos os dados da tabela e em seguida usar a função foreach() para pode fazer um loop de todos os dados já inseridos.
<tbody>
<?php
$pegarTudo = \MySql::connect()->prepare("SELECT * FROM usuario");
$pegarTudo->execute();
$pegarTudo = $pegarTudo->fetchAll();
foreach($pegarTudo as $pegar){ ?>
<tr>
<th scope="row"><?= $pegar['nome_usuario']?></th>
<td><?= $pegar['email_usuario']?></td>
<td><?= $pegar['cpf_usuario']?></td>
<td><a class="btn btn-outline-primary" href="edit?usuario=<?= $pegar['id'] ?>" >Update</a></td>
<td><a class="btn btn-outline-danger" href="?apagar=<?= $pegar['id'] ?>" >Exit</a></td>
</tr>
<?php } ?>
</tbody>
Para isso na tabela do front já vai ter uma opção para excluir o dado. esse botão vai ser uma tag a e no href vai ser passada uma query url que o nome vai ser apagar(excluir) e o valor vai ser o id do usuário escolhido.
E para isso mais uma vez vai ser usado a função isset() para verificar se existe o GET apagar(excluir).Agora deletar o usuario escolhido com o DELETE onde o id do usuario escolhido vai ser o GET passado na url.
if(isset($_GET['apagar'])){
$apagar = $_GET['apagar'];
$excluir = \MySql::connect()->prepare("DELETE FROM usuario WHERE id = $apagar");
$excluir->execute();
echo '<script>alert("O usuário com o id '.$apagar.' foi deletado com sucesso!!");location.href="home"</script>';
}
Para isso vai ser necessario criar uma nova tela com o nome edit e um layout desente no front-end.
Essa tela só vai pode ser acessada só se existir o usuário na tabela então terá que ser feita uma verificação para poder acessar essa tela.
Na tabela do front-end vai ter um botão(tag a) azul escrito update onde o caminho vai ser o arquivo edit e uma query url chamada usuario com o valor do id do usuario.
Se não existir essa query url a tela edit não vai ser rederizada.
E para verificar se existir o valor do id vai ser feita uma consulta na tabela onde o valor do id vai ser o valor da query url. se não existir a tabela com esse valor a tela edit não vai ser rederizada.
if(isset($_GET['usuario'])){
$id = $_GET['usuario'];
$editar = \MySql::connect()->prepare("SELECT * FROM usuario WHERE id = $id");
$editar->execute();
if($editar->rowCount() == 1){
$editar = $editar->fetch();
\Views\MainView::render('edit',$editar,['titulo'=>'Editando o '.$editar['nome_usuario'].' ']);
}else{
echo '<script>location.href="home"</script>';
}
}else{
echo '<script>location.href="home"</script>';
}
Os valores dos input vai ser a cosulta da tabela usuario onde o valor do id vai ser a query url usuario.
Agora é só fazer uma validação dos campos. verificar se os campos estão vázios ,validar o cpf e depois usar o UPDATE para fazer a atualização do usuário na tabela.
É muito importante não atualizar o email do usuário porque o email é uma caracteristica única do usuário.
if(isset($_POST['editar_usuario'])){
$nome = $_POST['nome'];
$cpf = $_POST['cpf'];
if(empty($nome) || empty($cpf)){
echo '<div style="padding:10px;color:white;" class=" bg-danger bg-gradient ">Preenchar todos os campos!!</div>';
}else{
if(\Models\coisasModel::validarCpf($cpf)){
$sql = \MySql::connect()->prepare("UPDATE usuario SET nome_usuario = ?,cpf_usuario = ? WHERE id = $id");
$sql->execute(array($nome,$cpf));
echo '<script>alert("Editado com sucesso!!!");location.href="home"</script>';
}else{
echo '<div style="padding:10px;color:white;" class=" bg-danger bg-gradient">Email invalido!!</div>';
}
}
}