-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
28 changed files
with
1,152 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
# Criador Automático de CRUDs | ||
|
||
#### Apenas indique o banco de dados e a tabela no conexao.php e ele cria seu CRUD com PDO, Bootstrap e Paginação, com suporte a MySQL e PostgreSQL garantidos e ainda outros via PDO. | ||
|
||
### Mais facilidades para esta versão | ||
Agora você pode apenas inserir o script.sql na pasta script e indicar no conexão que o auto-crud-pt irá criar o banco para ele e importar seu script | ||
|
||
### Em dois Idiomas | ||
Português - https://github.com/ribafs/auto-crud-pt | ||
|
||
Inglês - https://github.com/ribafs/auto-crud-en | ||
|
||
### Requisitos: | ||
- Apache2 | ||
- PHP 5.5.9+ | ||
- MySQL 5.5+ ou PostgreSQL 8+ | ||
|
||
## Download | ||
https://github.com/ribafs/auto-crud | ||
|
||
## Instalação | ||
Descompacte o pacote baixado e copie o diretório auto-crud para seu diretório web (renomeie a vontade). | ||
Supondo que tenha mudado o nome para clientes. | ||
|
||
## Instalando via composer | ||
- Criar um diretório via terminal | ||
- Acessar o diretório criado e executar: | ||
|
||
composer require ribafs/auto-crud-pt | ||
|
||
## Configuração | ||
|
||
Edite o arquivo db_connnect.php e ajuste para as informações do seu banco de dados | ||
Lembre também de indicar a tabela a ser usada. | ||
Pode testar com os scripts existentes para mysql e para postgresql: clientes_my.sql e clientes_pg.sql na pasta scripts | ||
|
||
Chame em seu navegador com | ||
http://localhost/clientes | ||
|
||
Ao abrir no navegador verá o grid com o CRUD como abaixo: | ||
|
||
<img src="imagens/grid.png"> | ||
|
||
No grid acima verá a listagem dos registros existentes com paginação, edição, exclusão e adição de um novo registro. | ||
|
||
Para inserir um novo registro clique no botão à esquerda Novo Registro | ||
|
||
<img src="imagens/insert.png"> | ||
|
||
Para atualizar um dos registros clique no ícone Editar à esquerda e verá a tela: | ||
|
||
<img src="imagens/update.png"> | ||
|
||
Para remover um registro apenas clique no link Excluir à direita do Editar e confirme na tela: | ||
|
||
<img src="imagens/delete.png"> | ||
|
||
## Funcionamento | ||
|
||
Após configurar o banco e a tabela e chamar pelo navegador ele trata cada um dos campos da tabela de forma particular usando para isso informações de metadados do SGBD. | ||
|
||
## Customizações | ||
|
||
O código com a paginação está no arquivo libs/ps_pagination.php. | ||
|
||
## Releases | ||
|
||
- 1.0 - Versão inicial | ||
- 1.1 - Nesta versão os arquivos foram todos renomeados para nomes em português | ||
|
||
- Melhorados e traduzidos os comentários | ||
- Simplificação do código removendo código desnecessário | ||
- Criadas duas funções para substituir trechos de código que se repetiam. Inseri seu include na conexao.php para facilitar | ||
- Pequena alteração no css do cabeçalho e do rodapé | ||
|
||
- 1.2 - Correçes devido aos ajustes da 1.1 | ||
|
||
- 1.3 - Separados os arquivos principais inserir, atualizar e excluir em dois. Agora o inserir é inserir e inserirdb. | ||
|
||
- 1.4 - Agora ele cria o banco para você e importa seu script, basta indicar onde ele está no conexao.php | ||
|
||
- 1.5 - Otimização das funções. Passando mais informações para elas e reduzindo a quantidade de parâmetros. Assim o código fica mais simples e mais fácil de entender. | ||
Estes são os objetivos principais: facilitar a vida do programador/usuário e simplificar/otimizar o código. | ||
|
||
- 1.6 - Ainda continuando a otimização do código. Melhorando as funções e com isso tambéma a quantidade de linhas foi reduzida. | ||
|
||
- 1.7 - Mais ajustes para o código. Otimizando para separar melhor e deixar fácil para converter para OO. | ||
|
||
## AVISO | ||
O principal objetivo deste pequeno software é o de facilitar a vida de quem não programa e nem está pensando em aprender e também o de facilitar para quem programa mas apenas quer criar algo rápido, como uma agenda ou um cadastro simples. | ||
|
||
## Licença | ||
|
||
MIT | ||
|
||
Agradecimento ao site | ||
https://www.codeofaninja.com/2011/06/paginating-your-data-with-ajax-and.html | ||
|
||
Sem ele a paginação não seria tão elegante e eficiente. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
<?php | ||
require_once('./cabecalho.php'); | ||
require_once('./conexao.php'); | ||
|
||
// Receebr o id via GET do busca_resultados.php ou via POST deste arquivo | ||
if(isset($_GET['id'])){ | ||
$id=$_GET['id']; | ||
}else{ | ||
$id=$_POST['id']; | ||
} | ||
|
||
// Mostrar nome da Tabela | ||
print '<h3 align="center">'.ucfirst($table).'</h3>'; | ||
?> | ||
|
||
<!-- Mostrar form de atualização --> | ||
<div class="container" align="center"> | ||
<div class="row"> | ||
<div class="col-md-3"></div> | ||
<div class="col-md-6"> | ||
<form method="post" action="atualizar.php"> | ||
<table class="table table-bordered table-responsive table-hover"> | ||
|
||
<?php | ||
$sth = $pdo->prepare("SELECT * from $table WHERE id = :id"); | ||
$sth->bindValue(':id', $id, PDO::PARAM_STR); // No select e no delete basta um único bindValue | ||
$sth->execute(); | ||
|
||
$reg = $sth->fetch(PDO::FETCH_OBJ); | ||
|
||
$num_campos = num_campos(); | ||
|
||
for($x=0;$x<$num_campos;$x++){ | ||
$campo = nome_campo($x); | ||
?> | ||
<tr><td><b><?=ucfirst($campo)?></td><td><input type="text" name="<?=$campo?>" value="<?=$reg->$campo?>"></td></tr> | ||
<?php | ||
} | ||
?> | ||
<input name="id" type="hidden" value="<?=$id?>"> | ||
<tr><td></td><td><input name="enviar" class="btn btn-primary" type="submit" value="Editar"> | ||
<input name="enviar" class="btn btn-warning" type="button" onclick="location='index.php'" value="Voltar"></td></tr> | ||
</table> | ||
</form> | ||
</div> | ||
<div> | ||
</div> | ||
|
||
<?php | ||
require_once('./rodape.php'); | ||
require_once('./atualizarbd.php'); | ||
?> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
<?php | ||
|
||
if(isset($_POST['enviar'])){ | ||
$set=''; | ||
$num_campos = num_campos(); | ||
|
||
for($x=0;$x<$num_campos;$x++){ | ||
$campo = nome_campo($x); | ||
// A linha abaixo gerará a linha: $nome = 'Nome do cliente'; | ||
$$campo = $_POST[$campo]; | ||
|
||
// Esta if gerará a variável $set contendo "$nome = :$nome, $email = :$email, ..."; | ||
if($x<$num_campos-1){ | ||
if($x==0) continue; | ||
$set .= "$campo = :$campo,"; | ||
}else{ | ||
if($x==0) continue; | ||
$set .= "$campo = :$campo"; | ||
} | ||
} | ||
|
||
$sql = "UPDATE $table SET $set WHERE id = :id"; | ||
$sth = $pdo->prepare($sql); | ||
|
||
for($x=0;$x<$num_campos;$x++){ | ||
$campo = nome_campo($x); | ||
$sth->bindParam(":$campo", $_POST["$campo"], PDO::PARAM_INT); | ||
} | ||
|
||
if($sth->execute()){ | ||
print "<script>location='index.php';</script>"; | ||
}else{ | ||
print "Erro ao editar o registro!<br><br>"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
<?php | ||
require_once('./cabecalho.php'); | ||
include './conexao.php'; | ||
|
||
// Busca | ||
if(isset($_GET['palavra'])){ | ||
$palavra=$_GET['palavra']; | ||
$campo = nome_campo(1); | ||
|
||
$sql = "select * from $table WHERE $campo LIKE :palavra order by id"; | ||
$sth = $pdo->prepare($sql); | ||
$sth->bindValue(":palavra", $palavra."%"); | ||
$sth->execute(); | ||
$rows =$sth->fetchAll(PDO::FETCH_ASSOC); | ||
} | ||
|
||
print '<div class="container" align="center">'; | ||
print '<h4>Registro(s) encontrado(s)</h4>'; | ||
|
||
if(count($rows) > 0){ | ||
print '<div class="container" align="center">'; | ||
echo '<table class="table table-hover">'; | ||
echo "<tr>"; | ||
|
||
$num_campos = num_campos(); | ||
|
||
for($x=0;$x<$num_campos;$x++){ | ||
$campo = nome_campo($x); | ||
?> | ||
<th><?=ucfirst($campo)?></th> | ||
<?php | ||
} | ||
|
||
print '<th colspan="2">Ação</th>'; | ||
echo "</tr>"; | ||
|
||
// Loop através dos registros recebidos | ||
foreach ($rows as $row){ | ||
echo "<tr>"; | ||
for($x=0;$x<$num_campos;$x++){ | ||
$campo = nome_campo($x); | ||
?> | ||
<td><?=$row[$campo]?></td> | ||
<?php | ||
} | ||
?> | ||
<td><a href="atualizar.php?id=<?=$row['id']?>"><i class="glyphicon glyphicon-edit" title="Editar"></a></td> | ||
<td><a href="excluir.php?id=<?=$row['id']?>"><i class="glyphicon glyphicon-remove-circle" title="Excluir"></a></td></tr> | ||
|
||
<?php | ||
echo "</tr>"; | ||
} | ||
echo "</table>"; | ||
|
||
}else{ | ||
print '<h3>Nenhum Registro encontrado!</h3>'; | ||
} | ||
|
||
?> | ||
|
||
<input name="enviar" class="btn btn-warning" type="button" onclick="location='index.php'" value="Voltar"> | ||
</div> | ||
|
||
<?php require_once('./cabecalho.php'); ?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
<?php require_once('./cabecalho.php'); ?> | ||
|
||
<div class="container"> | ||
<div class="row"> | ||
<!-- Botão para adicionar novo registro--> | ||
<div class="col-md-3"> | ||
<a href="inserir.php" class="btn btn-default">Novo Registro</a> | ||
</div> | ||
|
||
<!-- Form de busca--> | ||
<div class="col-md-9"> | ||
<form action="busca.php" method="get" > | ||
<div class="pull-right"style="padding-left: 0;" > | ||
<span class="pull-right"> | ||
<label class="control-label" for="palavra" style="padding-right: 0;"> | ||
<input type="text" value="" placeholder="Nome ou parte" class="form-control" name="palavra"> | ||
</label> | ||
</span> | ||
<button class="btn btn-info">Busca</button> | ||
</div> | ||
</form> | ||
</div> | ||
</div> | ||
</div> | ||
<br> | ||
|
||
<?php | ||
require_once './conexao.php'; | ||
require_once './paginacao.php'; | ||
|
||
$sql = "select * from $table order by id"; | ||
|
||
/* | ||
Parâmetros da Paginacao: | ||
> $pdo é a variável da nossa conexao.php | ||
> $sql é a string SQL da consulta acima | ||
> 15 é o número de registros recebidos por página | ||
> 23 é o número de páginas mostradas por vez | ||
> null - Usamos null porque não temos nenhum outro parâmetro para passar | ||
(i.e. param1=valu1¶m2=value2) | ||
You can use this if you are going to use this class for search results. | ||
O último parâmetro é útil para quando estamos fazendo busca via paginação (keyword), mas no caso não estou usando. | ||
*/ | ||
|
||
// Sintaxe da Paginacao($pdoection, $sql, $rows_per_page = 15, $links_per_page = 23, $append = "") | ||
$pager = new Paginacao($pdo, $sql, 15, 23, null); | ||
|
||
// Classe de paginação renderiza os registros retornados | ||
$rs = $pager->paginate(); | ||
|
||
// Conta quantos registros retronaram | ||
$num = $rs->rowCount(); | ||
if($num >= 0 ){ | ||
|
||
// Cria o cabeçalho da tabela | ||
print '<div class="container" align="center">'; | ||
echo '<table class="table table-hover">'; | ||
echo "<tr>"; | ||
$num_campos = num_campos(); | ||
|
||
for($x=0;$x<$num_campos;$x++){ | ||
$campo = nome_campo($x); | ||
?> | ||
<th><?=ucfirst($campo)?></th> | ||
<?php | ||
} | ||
// Mostrar os rótulos dos campos | ||
print '<th colspan="2">Ação</th>'; | ||
echo "</tr>"; | ||
|
||
// Loop através dos registros recebidos | ||
while ($row = $rs->fetch(PDO::FETCH_ASSOC)){ | ||
echo "<tr>"; | ||
for($x=0;$x<$num_campos;$x++){ | ||
$campo = nome_campo($x); | ||
?> | ||
<!-- Mostrar os valores dos campos--> | ||
<td><?=$row[$campo]?></td> | ||
<?php | ||
} | ||
?> | ||
<td><a href="atualizar.php?id=<?=$row['id']?>"><i class="glyphicon glyphicon-edit" title="Editar"></a></td> | ||
<td><a href="excluir.php?id=<?=$row['id']?>"><i class="glyphicon glyphicon-remove-circle" title="Excluir"></a></td></tr> | ||
<?php | ||
echo "</tr>"; | ||
} | ||
echo "</table>"; | ||
}else{ | ||
// Caso não encontre registros | ||
echo "Nenhum registro encontrado!"; | ||
} | ||
|
||
// 'page-nav' CSS class é usada para controlar a aparência dos números de páginas da navegação | ||
echo "<div class='page-nav' align='center'>"; | ||
// Mostra nossa navegação de números | ||
echo $pager->renderFullNav(); | ||
echo "</div> | ||
</div>"; | ||
|
||
require_once('./rodape.php'); | ||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta charset="utf-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | ||
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" sizes="16x16 24x24 32x32 64x64"/> | ||
<link href="./css/bootstrap.min.css" rel="stylesheet" media="screen"> | ||
<link href="./css/style.css" rel="stylesheet" media="screen"> | ||
</head> | ||
<body> | ||
<div class="container cabecalho"> | ||
<div align="center"> | ||
<h1>Criador Automático de CRUDs</h1> | ||
</div> | ||
</div> | ||
<br> |
Oops, something went wrong.