Você está na página 1de 8

CRUD com Bootstrap, PHP & MySQL – Parte IV

Nesta sessão irá aprender a criar os ficheiros de funções para implementar os


formulários de inserção e a edição no registo de clientes.
Além disso, serão criadas as funções de inserção destas informações na base de
dados.
Ver imagem exemplo do resultado:

1º Passo: Criar a Função de Registo

Na pasta “customers“, adicione a função de registo no ficheiro functions.php:

<?php
/**
* Registo de Clientes
*/
function add() {

if (!empty($_POST['customer'])) {

$today =
date_create('now', new
DateTimeZone('Europe/Lisbon'));

$customer = $_POST['customer'];
$customer['modified'] = $customer['created'] = $today-
>format("Y-m-d H:i:s");

save('customers', $customer);
header('location: index.php');
}
}

Página 1 de 8
2º Passo: Criar o Formulário de Registo

Crie um ficheiro chamado add.php na pasta customers.


Este ficheiro será o formulário de registo do cliente:

<?php
require_once('functions.php');
add();
?>

<?php include(HEADER_TEMPLATE); ?>

<h2>Novo Cliente</h2>

<form action="add.php" method="post">


<!-- area dos campos do formulario -->
<hr />
<div class="row">
<div class="form-group col-md-7">
<label for="nome">Nome</label>
<input type="text" class="form-control"
name="customer['nome']">
</div>

<div class="form-group col-md-3">


<label for="nif">NIF</label>
<input type="text" class="form-control"
name="customer['contribuinte']">
</div>

<div class="form-group col-md-2">


<label for="datanasc">Data de Nascimento</label>
<input type="text" class="form-control"
name="customer['dataNasc']">
</div>
</div>

<div class="row">
<div class="form-group col-md-5">
<label for="morada">Morada</label>
<input type="text" class="form-control"
name="customer['morada']">
</div>

<div class="form-group col-md-3">


<label for="local">Localidade</label>
<input type="text" class="form-control"
name="customer['localidade']">
</div>

<div class="form-group col-md-2">


<label for="cp">Cód. Postal</label>

Página 2 de 8
<input type="text" class="form-control"
name="customer['codPostal']">
</div>

<div class="form-group col-md-2">


<label for="dataReg">Data de Registo</label>
<input type="text" class="form-control"
name="customer['dataRegisto']" disabled>
</div>
</div>

<div class="row">
<div class="form-group col-md-3">
<label for="cidade">Cidade</label>
<input type="text" class="form-control"
name="customer['cidade']">
</div>

<div class="form-group col-md-2">


<label for="telf">Telefone</label>
<input type="text" class="form-control"
name="customer['telefone']">
</div>

<div class="form-group col-md-2">


<label for="telm">Telemóvel</label>
<input type="text" class="form-control"
name="customer['mobile']">
</div>

<div class="form-group col-md-1">


<label for="conc">Concelho</label>
<input type="text" class="form-control"
name="customer['concelho']">
</div>

<div class="form-group col-md-2">


<label for="ssocial">Seg. Social</label>
<input type="text" class="form-control"
name="customer['segSocial']">
</div>
</div>

<div id="actions" class="row">


<div class="col-md-12">
<button type="submit" class="btn btn-
primary">Gravar</button>
<a href="index.php" class="btn btn-default">Cancelar</a>
</div>
</div>
</form>

<?php include(FOOTER_TEMPLATE); ?>

Página 3 de 8
3º Passo: Criar a Função de Inserção dos Registos

No ficheiro database.php, implemente a função que insere um registo na base de


dados:

<?php

/**
* Insere um registo na BD
*/
function save($table = null, $data = null) {

$database = open_database();

$columns = null;
$values = null;

//print_r($data);

foreach ($data as $key => $value) {


$columns .= trim($key, "'") . ",";
$values .= "'$value',";
}

// remove a ultima virgula


$columns = rtrim($columns, ',');
$values = rtrim($values, ',');

$sql = "INSERT INTO " . $table . "($columns)" . " VALUES


" . "($values);";

try {
$database->query($sql);

$_SESSION['message'] = 'Registo inserido com sucesso.';


$_SESSION['type'] = 'success';

} catch (Exception $e) {

$_SESSION['message'] = 'Nao foi possivel realizar a


operacao.';
$_SESSION['type'] = 'danger';
}

close_database($database);
}

Página 4 de 8
4º Passo: Criar a Função de Edição/Atualização
Agora neste passo será a parte de edição, ou atualização dos clientes.

Será implementada a função edit() no módulo de clientes, ou seja, no ficheiro


functions.php:

<?php

/**
* Atualizacao/Edicao do Cliente
*/
function edit() {

$now = date_create('now', new


DateTimeZone('Europe/Lisbon'));

if (isset($_GET['id'])) {

$id = $_GET['id'];

if (isset($_POST['customer'])) {

$customer = $_POST['customer'];
$customer['dataAtualizacao'] = $now->format("Y-m-d H:i:s");

update('customers', $id, $customer);


header('location: index.php');
} else {

global $customer;
$customer = find('customers', $id);
}
} else {
header('location: index.php');
}
}

Página 5 de 8
5º Passo: Implementar o Formulário de Edição
Agora, crie um ficheiro chamado edit.php na pasta customers. Este ficheiro criar o
formulário de edição do cliente, que é quase igual à do registo:
<?php
require_once('functions.php');
edit();
?>
<?php include(HEADER_TEMPLATE); ?>

<h2>Atualizar Cliente</h2>

<form action="edit.php?id=<?php echo $customer['id']; ?>"


method="post">
<hr />
<div class="row">
<div class="form-group col-md-7">
<label for="name">Nome</label>
<input type="text" class="form-control"
name="customer['nome']" value="<?php echo $customer['nome'];
?>">
</div>
<div class="form-group col-md-3">
<label for="campo2">NIF</label>
<input type="text" class="form-control"
name="customer['nif']" value="<?php echo $customer['nif']; ?>">
</div>
<div class="form-group col-md-2">
<label for="campo3">Data de Nascimento</label>
<input type="text" class="form-control"
name="customer['dataNasc']" value="<?php echo $customer['
dataNasc']; ?>">
</div>
</div>
<div class="row">
<div class="form-group col-md-5">
<label for="campo1">Morada</label>
<input type="text" class="form-control"
name="customer['morada']" value="<?php echo $customer['morada'];
?>">
</div>
<div class="form-group col-md-3">
<label for="campo2">Localidade</label>
<input type="text" class="form-control"
name="customer['localidade']" value="<?php echo
$customer['localidade']; ?>">
</div>
<div class="form-group col-md-2">
<label for="campo3">Código Postal</label>
<input type="text" class="form-control"
name="customer['codPostal']" value="<?php echo
$customer['codPostal']; ?>">
</div>
<div class="form-group col-md-2">

Página 6 de 8
<label for="campo3">Data de Registo</label>
<input type="text" class="form-control"
name="customer['dataRegisto']" disabled value="<?php echo
$customer['dataRegisto']; ?>">
</div>
</div>
<div class="row">
<div class="form-group col-md-3">
<label for="campo1">Cidade</label>
<input type="text" class="form-control"
name="customer['cidade']" value="<?php echo $customer['cidade'];
?>">
</div>
<div class="form-group col-md-2">
<label for="campo2">Telefone</label>
<input type="text" class="form-control"
name="customer['telefone']" value="<?php echo
$customer['telefone']; ?>">
</div>

<div class="form-group col-md-2">


<label for="campo3">Telemóvel</label>
<input type="text" class="form-control"
name="customer['mobile']" value="<?php echo $customer['mobile'];
?>">
</div>
<div class="form-group col-md-1">
<label for="campo3">Concelho</label>
<input type="text" class="form-control"
name="customer['concelho']" value="<?php echo
$customer['concelho']; ?>">
</div>
<div class="form-group col-md-2">
<label for="campo3">Seg. Social</label>
<input type="text" class="form-control"
name="customer['segSocial']" value="<?php echo
$customer['segSocial']; ?>">
</div>
</div>
<div id="actions" class="row">
<div class="col-md-12">
<button type="submit" class="btn btn-
primary">Gravar</button>
<a href="index.php" class="btn btn-default">Cancelar</a>
</div>
</div>
</form>

<?php include(FOOTER_TEMPLATE); ?>

Página 7 de 8
6º Passo: Criar a Função de Atualização na BD

No ficheiro database.php, implemente a função que efetua a atualização de um


registo na base de dados:
<?php
/**
* Atualiza um registo numa tabela, por ID
*/
function update($table = null, $id = 0, $data = null) {
$database = open_database();
$items = null;
foreach ($data as $key => $value) {
$items .= trim($key, "'") . "='$value',";
}
// remove a ultima virgula
$items = rtrim($items, ',');
$sql = "UPDATE " . $table;
$sql .= " SET $items";
$sql .= " WHERE id=" . $id . ";";
try {
$database->query($sql);
$_SESSION['message'] = 'Registo atualizado com
sucesso.';
$_SESSION['type'] = 'success';
} catch (Exception $e) {
$_SESSION['message'] = 'Nao foi possivel realizar a
operacao.';
$_SESSION['type'] = 'danger';
}
close_database($database);
}

E a estrutura do projeto deve estar assim:

• crud-bootstrap-php
o css
o customers
▪ add.php
▪ edit.php
▪ functions.php
▪ index.php
o inc
▪ database.php
▪ footer.php
▪ header.php
o js
o config.php
o index.php

Página 8 de 8

Você também pode gostar