Apesar do cadastro recente gostaria de contribuir com esta comunidade, pois sempre que tenho dúvidas, percorro estes fóruns e, graças a vocês, até agora consegui solucionar todas elas.
Pesquisei aqui se existia algo parecido e o único tópico que se refere a CRUD não tem o código fonte e o link esta quebrado.
Este fim de semana tive que gerar várias páginas para inserção, edição, exclusão e consulta de dados de várias tabelas, então resolvi criar um gerador CRUD para facilitar minha vida e gostaria de compartilhar com vocês, não tenho muita experiência com identação e boas práticas de programação, qualquer critica para melhorar minha maneira de desenvolver e/ou sugestões para o script são bem vindas.
gerador_crud.php
<?php
/**
* Gerador CRUD (Create, Read, Update & Delete)
*
* Gera as 4 funções básicas de operações de dados em um único arquivo.
* Serve para aumentar a produtividade na geração de formulários.
*
* Possui verificação de campos tipo Auto_increment para prevenir erros.
* Tratamento para remover o prefixo das tabelas na exibição das labels
* dos formulários Ex. produtos_codigo fica Codigo.
* O CRUD gerado já utiliza a classe PDO
*
* Modo de usar:
* Preencha as variáveis no inicio do arquivo e execute-o.
* Serão exibidos dois scripts em formato de texto, copie e crie
* os arquivos de conexão com o DB e o CRUD respectivamente.
* Após gerados os scripts a parte estrutural estará pronta para você
* começar a estilizar sua página.
*
*
* @author SERGIO PEREIRA <sergiodesa@yahoo.com>
*/
//Dados para conexão com o seu servidor.
$server = "localhost";
$banco = "XYZ";
$user = "root";
$senha = "";
//Parametros para gerar o seu CRUD.
$tabela = ""; //Nome da tabela para gerar o CRUD.
$prefixo = "_"; //Opcional, mas se os campos de sua tabela tiverem "_" remova-o.
$ident = "clientes_id"; //Campo identificador para manipular dados do registro.
$caminho = "conexao.php"; //Url + nome do arquivo de conexao a ser criado para o CRUD.
$conn = mysqli_connect($server, $user, $senha, $banco);
//Usamos <pre> para que as variaveis não sejam interpretadas no output.
echo '<pre>';
echo htmlspecialchars($caminho . '
<?php
$con = new PDO("mysql:host=localhost;dbname=erp", "root", "",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES \'utf8\'"));
?>
' . $tabela . '.php
<?php
include "' . $caminho . '";
if(isset($_GET["id"])){
$id = (int) $_GET["id"];
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CRUD '.$tabela.'</title>
</head>
<?php
if((!isset($_GET["novo"]))&&(!isset($_GET["altera"]))&&(!isset($_GET["apaga"]))){
?>
<table border="1">
<tr>');
$campos = consulta($conn);
foreach ($campos as $item) {
echo htmlspecialchars('
<td><b>' . ucfirst(after('_', $item["COLUMN_NAME"])) . '</b></td>');
}
echo htmlspecialchars('
</tr>
<?php
$rs = $con->prepare("SELECT * FROM ' . $tabela . '");
if($rs->execute()){
if($rs->rowCount() > 0){
while($row = $rs->fetch(PDO::FETCH_ASSOC)){
?>
<tr>');
$campos = consulta($conn);
foreach ($campos as $item) {
echo htmlspecialchars('
<td valign="top"><?php echo $row["' . $item["COLUMN_NAME"] . '"];?></td>');
}
echo htmlspecialchars('
<td valign="top"><a href="' . $tabela . '.php?id=<?php echo $row["' . $ident . '"];?>&altera">Edita</a></td>
<td><a href="' . $tabela . '.php?id=<?php echo $row["' . $ident . '"];?>&apaga">Apaga</a></td>
</tr>
<?php
}
?>
<?php
}
}
?>
</table>
<a href="' . $tabela . '.php?novo">Novo</a>
<?php
}
if(isset($_GET["novo"])){
if (isset($_POST["submitted"])) {
foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); }
$rs = $con->prepare("INSERT INTO ' . $tabela . ' (');
$campos = consulta($conn);
$i = 0;
$len = count($campos);
foreach ($campos as $item) {
echo htmlspecialchars($item["COLUMN_NAME"]);
if ($i == $len - 1) {
echo htmlspecialchars('');
} else {
echo htmlspecialchars(', ');
}
$i++;
}
echo htmlspecialchars(') VALUES(');
$campos = consulta($conn);
$i = 0;
$len = count($campos);
foreach ($campos as $item) {
echo htmlspecialchars(':' . $item["COLUMN_NAME"]);
if ($i == $len - 1) {
echo htmlspecialchars('');
} else {
echo htmlspecialchars(', ');
}
$i++;
}
echo htmlspecialchars(')");');
$campos = consulta($conn);
foreach ($campos as $item) {
echo htmlspecialchars('
$rs->bindParam(":' . $item["COLUMN_NAME"] . '", $_POST["' . $item["COLUMN_NAME"] . '"], PDO::PARAM_STR);');
}
echo htmlspecialchars('
$rs->execute();
echo \'<script>location.href="' . $tabela . '.php";</script>\';
}
?>
<form action="" method="POST">');
$campos = consulta($conn);
foreach ($campos as $item) {
echo htmlspecialchars('
<p><b>' . ucfirst(after('_', $item["COLUMN_NAME"])) . ':</b><br /><input type="text" name="' . $item["COLUMN_NAME"] . '"/>');
}
echo htmlspecialchars('
<p><input type="submit" value="Incluir" /><input type="hidden" value="1" name="submitted" />
</form>
<?php
}
?>
<?php
if(isset($_GET["altera"])){
if (isset($_POST["submitted"])) {
foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); }
$rs = $con->prepare("UPDATE ' . $tabela . ' SET ');
$campos = consulta($conn);
$i = 0;
$len = count($campos);
foreach ($campos as $item) {
echo htmlspecialchars($item["COLUMN_NAME"] . '=:' . $item["COLUMN_NAME"]);
if ($i == $len - 1) {
echo htmlspecialchars('');
} else {
echo htmlspecialchars(', ');
}
$i++;
}
echo htmlspecialchars(' WHERE ' . $ident . ' = $id");');
$campos = consulta($conn);
foreach ($campos as $item) {
echo htmlspecialchars('
$rs->bindParam(":' . $item["COLUMN_NAME"] . '", $_POST["' . $item["COLUMN_NAME"] . '"], PDO::PARAM_STR);');
}
echo htmlspecialchars('
$rs->execute();
echo \'<script>location.href="' . $tabela . '.php";</script>\';
}
?>
<form action="" method="POST">
<?php
$rs = $con->prepare("SELECT * FROM ' . $tabela . ' WHERE ' . $ident . ' = $id");
if($rs->execute()){
if($rs->rowCount() > 0){
while($row = $rs->fetch(PDO::FETCH_ASSOC)){
?>');
$campos = consulta($conn);
foreach ($campos as $item) {
echo htmlspecialchars('
<p><b>' . ucfirst(after('_', $item["COLUMN_NAME"])) . ':</b><br /><input type="text" name="' . $item["COLUMN_NAME"] . '" value="<?= stripslashes($row["' . $item["COLUMN_NAME"] . '"]) ?>" />');
}
echo htmlspecialchars('
<p><input type="submit" value="Alterar" /><input type="hidden" value="1" name="submitted" />
<?php
}
}
}
?>
</form>
<?php
}
if(isset($_GET["apaga"])){
$id = (int) $_GET["id"];
$rs = $con->prepare("DELETE FROM ' . $tabela . ' WHERE ' . $ident . ' = :id");
$rs->bindParam(":id", $id, PDO::PARAM_INT);
$rs->execute();
echo \'<script>location.href="' . $tabela . '.php";</script>\';
}
?>
</body>
</html>
');
echo '</pre>';
function after($this, $inthat)
{
if (!is_bool(strpos($inthat, $this))) {
return substr($inthat, strpos($inthat, $this) + strlen($this));
} else {
return $inthat;
}
}
function consulta($conn)
{
global $banco;
global $tabela;
$cons = mysqli_query($conn, "SELECT COLUMN_NAME, EXTRA FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '$banco' AND TABLE_NAME = '$tabela';") or die(mysqli_error());
$result = array();
while ($row = mysqli_fetch_assoc($cons)) {
if ($row["EXTRA"] != "auto_increment") {
$campos[] = $row;
}
}
return $campos;
}
?>
Pergunta
sergiodesa
Olá a todos,
Apesar do cadastro recente gostaria de contribuir com esta comunidade, pois sempre que tenho dúvidas, percorro estes fóruns e, graças a vocês, até agora consegui solucionar todas elas.
Pesquisei aqui se existia algo parecido e o único tópico que se refere a CRUD não tem o código fonte e o link esta quebrado.
Este fim de semana tive que gerar várias páginas para inserção, edição, exclusão e consulta de dados de várias tabelas, então resolvi criar um gerador CRUD para facilitar minha vida e gostaria de compartilhar com vocês, não tenho muita experiência com identação e boas práticas de programação, qualquer critica para melhorar minha maneira de desenvolver e/ou sugestões para o script são bem vindas.
gerador_crud.php
Editado por sergiodesatrocar e-mail no código
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.