README.md
CRUD Simples Utilizando PHP + MySql + Bootstrap 4
Cadastro Simples de Usuário Utilizando apenas PHP
Instalação
Criar a tabela no Banco de dados:
create table usuario(
id integer primary key AUTO_INCREMENT,
nome varchar(200) not null,
sobrenome varchar(300) not null,
idade integer not null,
sexo char(1) not null
)
Configurar o arquivo Conexao.php dentro da pasta 'app/conexao':
Adicione o codigo abaixo dentro da função getConexão(), caso seu banco seja Mysql ja está como padrão.
Lembre-se de alterar os dados(dbname,user,password) na conexão de acordo com seu banco.
-Conexão para MySql
if (!isset(self::$instance)) {
self::$instance = new PDO('mysql:host=localhost;dbname=github', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$instance->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);
}
return self::$instance;
-Conexão para PostgreSql
$host = 'localhost;port=5432';
$dbname = 'github';
$user = 'root';
$pass = '';
try {
if (!isset(self::$instance)) {
self::$instance = new \PDO('pgsql:host='.$host.';dbname=' . $dbname . ';options=\'--client_encoding=UTF8\'', $user, $pass);
self::$instance->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
self::$instance->setAttribute(\PDO::ATTR_ORACLE_NULLS, \PDO::NULL_EMPTY_STRING);
}
return self::$instance;
} catch (Exception $ex) {
echo $ex.'<br>';
}
Créditos
Brayan Monteiro
email: brayanmonteirooo@gmail.com
index.php
<?php
include_once "./app/conexao/Conexao.php";
include_once "./app/dao/UsuarioDAO.php";
include_once "./app/model/Usuario.php";
//instancia as classes
$usuario = new Usuario();
$usuariodao = new UsuarioDAO();
?>
<!DOCTYPE html>
CRUD Simples PHP
<br>
.menu,<br>
thead {<br>
background-color: #bbb !important;<br>
}</p>
<div class="highlight"><pre class="highlight plaintext"><code> .row {
padding: 10px;
}
</style>
</code></pre></div>
<p></head></p>
<p><body><br>
<nav class="navbar navbar-light bg-light menu"><br>
<div class="container"><br>
<a class="navbar-brand" href="#"><br>
CRUD PHP POO<br>
</a><br>
</div><br>
</nav><br>
<div class="container"><br>
<form action="app/controller/UsuarioController.php" method="POST"><br>
<div class="row"><br>
<div class="col-md-3"><br>
<label>Nome</label><br>
<input type="text" name="nome" value="" autofocus class="form-control" require /><br>
</div><br>
<div class="col-md-5"><br>
<label>Sobrenome</label><br>
<input type="text" name="sobrenome" value="" class="form-control" require /><br>
</div><br>
<div class="col-md-2"><br>
<label>Idade</label><br>
<input type="number" name="idade" value="" class="form-control" require /><br>
</div><br>
<div class="col-md-2"><br>
<label>Sexo</label><br>
<select name="sexo" class="form-control"><br>
<option value="M">Masculino</option><br>
<option value="F">Feminino</option><br>
</select><br>
</div><br>
<div class="col-md-2"><br>
<br><br>
<button class="btn btn-primary" type="submit" name="cadastrar">Cadastrar</button><br>
</div><br>
</div><br>
</form><br>
<hr><br>
<div class="table-responsive"><br>
<table class="table table-sm table-bordered table-hover"><br>
<thead><br>
<tr><br>
<th>Id</th><br>
<th>Nome</th><br>
<th>Sobrenome</th><br>
<th>Idade</th><br>
<th>Sexo</th><br>
<th>Ações</th><br>
</tr><br>
</thead><br>
<tbody><br>
<?php foreach ($usuariodao->read() as $usuario) : ?><br>
<tr><br>
<td><?= $usuario->getId() ?></td><br>
<td><?= $usuario->getNome() ?></td><br>
<td><?= $usuario->getSobrenome() ?></td><br>
<td><?= $usuario->getIdade() ?></td><br>
<td><?= $usuario->getSexo()?></td><br>
<td class="text-center"><br>
<button class="btn btn-warning btn-sm" data-toggle="modal" data-target="#editar><?= $usuario->getId() ?>"><br>
Editar<br>
</button><br>
<a href="app/controller/UsuarioController.php?del=<?= $usuario->getId() ?>"><br>
<button class="btn btn-danger btn-sm" type="button">Excluir</button><br>
</a><br>
</td><br>
</tr><br>
<!-- Modal --><br>
<div class="modal fade" id="editar><?= $usuario->getId() ?>" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"><br>
<div class="modal-dialog modal-lg" role="document"><br>
<div class="modal-content"><br>
<div class="modal-header"><br>
<h5 class="modal-title" id="exampleModalLabel">Editar</h5><br>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><br>
<span aria-hidden="true">×</span><br>
</button><br>
</div><br>
<div class="modal-body"><br>
<form action="app/controller/UsuarioController.php" method="POST"><br>
<div class="row"><br>
<div class="col-md-5"><br>
<label>Nome</label><br>
<input type="text" name="nome" value="<?= $usuario->getNome() ?>" class="form-control" require /><br>
</div><br>
<div class="col-md-7"><br>
<label>Sobrenome</label><br>
<input type="text" name="sobrenome" value="<?= $usuario->getSobrenome() ?>" class="form-control" require /><br>
</div><br>
</div><br>
<div class="row"><br>
<div class="col-md-3"><br>
<label>Idade</label><br>
<input type="number" name="idade" value="<?= $usuario->getIdade() ?>" class="form-control" require /><br>
</div><br>
<div class="col-md-3"><br>
<label>Sexo</label><br>
<select name="sexo" class="form-control"><br>
<?php if ($usuario->getSexo() == 'F') : ?><br>
<option value="F">Feminino</option><br>
<option value="M">Masculino</option><br>
<?php else : ?><br>
<option value="M">Masculino</option><br>
<option value="F">Feminino</option><br>
<?php endif ?></p>
<div class="highlight"><pre class="highlight plaintext"><code> </select>
</div>
</div>
<div class="row">
<div class="col-md-2">
<br>
<input type="hidden" name="id" value="<?= $usuario->getId() ?>" />
<button class="btn btn-primary" type="submit" name="editar">Cadastrar</button>
</div>
</div>
</form>
</div>
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;?php endforeach ?&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</code></pre></div>
<p></body></p>
<h2>
<a name="" href="#" class="anchor">
</a>
</html>
</h2>
<h2>
<a name="appmodelusuariophp" href="#appmodelusuariophp" class="anchor">
</a>
/app/model/Usuario.php
</h2>
<p><?php</p>
<p>class Usuario{</p>
<div class="highlight"><pre class="highlight plaintext"><code>private $id;
private $nome;
private $sobrenome;
private $idade;
private $sexo;
function getId() {
return $this->id;
}
function getNome() {
return $this->nome;
}
function getSobrenome() {
return $this->sobrenome;
}
function getIdade() {
return $this->idade;
}
function getSexo() {
return $this->sexo;
}
function setId($id) {
$this->id = $id;
}
function setNome($nome) {
$this->nome = $nome;
}
function setSobrenome($sobrenome) {
$this->sobrenome = $sobrenome;
}
function setIdade($idade) {
$this->idade = $idade;
}
function setSexo($sexo) {
$this->sexo = $sexo;
}
</code></pre></div>
<p>}</p>
<hr>
<h2>
<a name="appdaousuariodaophp" href="#appdaousuariodaophp" class="anchor">
</a>
/app/dao/UsuarioDAO.php
</h2>
<p><?php<br>
/*<br>
Criação da classe Usuario com o CRUD<br>
*/<br>
class UsuarioDAO{</p>
<div class="highlight"><pre class="highlight plaintext"><code>public function create(Usuario $usuario) {
try {
$sql = "INSERT INTO usuario (
nome,sobrenome,idade,sexo)
VALUES (
:nome,:sobrenome,:idade,:sexo)";
$p_sql = Conexao::getConexao()-&gt;prepare($sql);
$p_sql-&gt;bindValue(":nome", $usuario-&gt;getNome());
$p_sql-&gt;bindValue(":sobrenome", $usuario-&gt;getSobrenome());
$p_sql-&gt;bindValue(":idade", $usuario-&gt;getIdade());
$p_sql-&gt;bindValue(":sexo", $usuario-&gt;getSexo());
return $p_sql-&gt;execute();
} catch (Exception $e) {
print "Erro ao Inserir usuario &lt;br&gt;" . $e . '&lt;br&gt;';
}
}
public function read() {
try {
$sql = "SELECT * FROM usuario order by nome asc";
$result = Conexao::getConexao()->query($sql);
$lista = $result->fetchAll(PDO::FETCH_ASSOC);
$f_lista = array();
foreach ($lista as $l) {
$f_lista[] = $this->listaUsuarios($l);
}
return $f_lista;
} catch (Exception $e) {
print "Ocorreu um erro ao tentar Buscar Todos." . $e;
}
}
public function update(Usuario $usuario) {
try {
$sql = "UPDATE usuario set
nome=:nome,
sobrenome=:sobrenome,
idade=:idade,
sexo=:sexo
WHERE id = :id";
$p_sql = Conexao::getConexao()-&gt;prepare($sql);
$p_sql-&gt;bindValue(":nome", $usuario-&gt;getNome());
$p_sql-&gt;bindValue(":sobrenome", $usuario-&gt;getSobrenome());
$p_sql-&gt;bindValue(":idade", $usuario-&gt;getIdade());
$p_sql-&gt;bindValue(":sexo", $usuario-&gt;getSexo());
$p_sql-&gt;bindValue(":id", $usuario-&gt;getId());
return $p_sql-&gt;execute();
} catch (Exception $e) {
print "Ocorreu um erro ao tentar fazer Update&lt;br&gt; $e &lt;br&gt;";
}
}
public function delete(Usuario $usuario) {
try {
$sql = "DELETE FROM usuario WHERE id = :id";
$p_sql = Conexao::getConexao()->prepare($sql);
$p_sql->bindValue(":id", $usuario->getId());
return $p_sql->execute();
} catch (Exception $e) {
echo "Erro ao Excluir usuario<br> $e <br>";
}
}
private function listaUsuarios($row) {
$usuario = new Usuario();
$usuario->setId($row['id']);
$usuario->setNome($row['nome']);
$usuario->setSobrenome($row['sobrenome']);
$usuario->setIdade($row['idade']);
$usuario->setSexo($row['sexo']);
return $usuario;
}
</code></pre></div>
<p>}</p>
<h2>
<a name="gt" href="#gt" class="anchor">
</a>
?>
</h2>
<h2>
<a name="appcontrollerusuariocontrollerphp" href="#appcontrollerusuariocontrollerphp" class="anchor">
</a>
/app/controller/UsuarioController.php
</h2>
<p><?php<br>
include_once "../conexao/Conexao.php";<br>
include_once "../model/Usuario.php";<br>
include_once "../dao/UsuarioDAO.php";</p>
<p>//instancia as classes<br>
$usuario = new Usuario();<br>
$usuariodao = new UsuarioDAO();</p>
<p>//pega todos os dados passado por POST</p>
<p>$d = filter_input_array(INPUT_POST);</p>
<p>//se a operação for gravar entra nessa condição<br>
if(isset($_POST['cadastrar'])){</p>
<div class="highlight"><pre class="highlight plaintext"><code>$usuario->setNome($d['nome']);
$usuario->setSobrenome($d['sobrenome']);
$usuario->setIdade($d['idade']);
$usuario->setSexo($d['sexo']);
$usuariodao->create($usuario);
header("Location: ../../");
</code></pre></div>
<p>} <br>
// se a requisição for editar<br>
else if(isset($_POST['editar'])){</p>
<div class="highlight"><pre class="highlight plaintext"><code>$usuario->setNome($d['nome']);
$usuario->setSobrenome($d['sobrenome']);
$usuario->setIdade($d['idade']);
$usuario->setSexo($d['sexo']);
$usuario->setId($d['id']);
$usuariodao->update($usuario);
header("Location: ../../");
</code></pre></div>
<p>}<br>
// se a requisição for deletar<br>
else if(isset($_GET['del'])){</p>
<div class="highlight"><pre class="highlight plaintext"><code>$usuario->setId($_GET['del']);
$usuariodao->delete($usuario);
header("Location: ../../");
</code></pre></div>
<p>}else{<br>
header("Location: ../../");</p>
<h2>
<a name="" href="#" class="anchor">
</a>
}
</h2>
<h2>
<a name="appconexaoconexaophp" href="#appconexaoconexaophp" class="anchor">
</a>
/app/conexao/Conexao.php
</h2>
<p><?php<br>
class Conexao {</p>
<p>public static $instance;</p>
<p>private function __construct() {<br>
//<br>
}</p>
<p>public static function getConexao() {<br>
if (!isset(self::$instance)) {<br>
self::$instance = new PDO('mysql:host=localhost;dbname=crud_example', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));<br>
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);<br>
self::$instance->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);<br>
}</p>
<div class="highlight"><pre class="highlight plaintext"><code> return self::$instance;
</code></pre></div>
<p>}</p>
<p>}</p>
Top comments (0)