Quando falamos em sistemas web nos dias de hoje é impossível não pensar em um cliente consumindo dados salvos em uma base, por tanto é imprescindível que um desenvolvedor tenha o conhecimento para tratar os dados utilizados pelo cliente através da programação.
Para entendermos como funciona o tratamento dos dados, vamos criar um cadastro de livros, onde o cliente poderá: ver os livros cadastrados, editar e inserir novos livros no banco. O famoso CRUD (create/read/update/delete).
Seguindo uma lógica de implementação, iremos primeiramente partir pela criação do banco de dados.
CREATE DATABASE biblioteca;
use biblioteca;
CREATE TABLE IF NOT EXISTS `livro` (
`id_livro` int(11) NOT NULL AUTO_INCREMENT,
`cod_livro` int(11) NOT NULL,
`nome_livro` varchar(150) NOT NULL,
`desc_livro` varchar(150) NOT NULL,
PRIMARY KEY (`id_livro`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Executando o código acima, criamos nosso banco denominado “biblioteca” e nossa tabela denominada “livro”, na qual vamos armazenar os dados dos livros.
Para que possamos iniciar a abstração dos dados, vamos criar uma classe denominada Conexao, onde definimos todas as transações que serão feitas e os dados para acesso ao servidor MySQL.
//Variáveis de acesso Db
define('DB_SERVER', 'localhost');
define('DB_NAME', 'biblioteca');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
//inicio da classe de conexao
class Conexao {
var $db, $conn;
public function __construct($server, $database, $username, $password){
$this->conn = mysql_connect($server, $username, $password);
$this->db = mysql_select_db($database,$this->conn);
}
...
No código acima, temos a definição dos parâmetros de acesso à base de dados, a criação da classe Conexao e seu respectivo construtor. No construtor, abrimos a conexão com a função do MySQL, mysql_connect, passando o servidor, nome do usuário e a senha como parâmetro. Em seguida, selecionamos a tabela que iremos trabalhar usando a função mysql_select_db, passando como parâmetro o nome da tabela e a conexão atual.
Dando início ao nosso CRUD, vamos criar nossa função insert no arquivo conexao.php:
/**
* Função para inserir dados na tabela
* @param array $dados Array contendo os dados a serem inseridos
* @param string $tabela tabela que será inserido os dados
*/
public function insert($tabela, $dados) {
foreach ($dados as $key => $value) {
$keys[] = $key;
$insertvalues[] = '\'' . $value . '\'';
}
$keys = implode(',', $keys);
$insertvalues = implode(',', $insertvalues);
$sql = "INSERT INTO $tabela ($keys) VALUES ($insertvalues)";
return $this->executar($sql);
}
A função de insert recebe como parâmetro o nome da tabela e os dados que serão inseridos na mesma na forma de array. O foreach separa o nome da coluna da tabela na variável “Keys” e os seus respectivos valores em insertValues, logo após usando o comando implode, inserimos as virgulas entre os dados.
Vamos testar se o que fizemos até agora está funcionando? Para isso vamos criar um arquivo index.php contendo o seguinte código:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
require_once 'conexao.php';
$conexao = new Conexao(DB_SERVER, DB_NAME, DB_USERNAME, DB_PASSWORD);
$dados = array('cod_livro' => 01, 'nome_livro' => 'livro exemplo 01',
'desc_livro' => 'Livro de exemplo');
$insert = $conexao->insert('livro', $dados);
if($insert == true){
echo 'inserido';
}
?>
</body>
</html>
Após criarmos o arquivo index.php, colocar na pasta do seu servidor e acessar através do browser, deverá aparecer a mensagem “inserido”. Acessando o banco de dados podemos conferir que as informações estão realmente lá!
Nosso próximo passo é alterar a informação que acabamos de inserir. Para tal, vamos criar a função update dentro do arquivo conexao.php
/**
* Função para alterar os dados da tabela
* @param string $tabela tabela onde será alterado os dados
* @param string $colunaPrimary nome da coluna chave primaria
* @param int $id id do dados a ser alterado
* @param array $dados dados que serão inserido
* @return boolean verdadeiro ou falso
*/
public function update($tabela, $colunaPrimay, $id, $dados) {
foreach ($dados as $key => $value) {
$sets[] = $key . '=\'' . $value . '\'';
}
$sets = implode(',', $sets);
$sql = "UPDATE $tabela SET $sets WHERE $colunaPrimay = '$id'";
return $this->executar($sql);
}
A função de update é muito parecida com a de insert, a diferença é que na formação da query passamos o id do registro a ser alterado, assim como a coluna da chave primária.
Agora vamos testar? O procedimento vai ser idêntico ao que fizemos para o insert. Agora vamos criar um arquivo chamado update.php e inserir o seguinte código:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
require_once 'conexao.php';
$conexao = new Conexao(DB_SERVER, DB_NAME, DB_USERNAME, DB_PASSWORD);
$dados = array('cod_livro' => 01, 'nome_livro' => 'livro exemplo 03',
'desc_livro' => 'Livro de exemplo');
$insert = $conexao->update('livro', 'id_livro', 1, $dados);
if($insert == true){
echo 'alterado';
}
?>
</body>
</html>
Para executar, o mesmo procedimento, no browser acesse o nome do arquivo e se ocorrer tudo bem deverá aparecer a mensagem “alterado”. Você pode modificar os dados dentro do array e verificar no banco as alterações sendo realizadas.
Avançando com nosso CRUD, vamos visualizar quais registros temos na nossa base através da função “select”, vamos abstrair os dados do banco e visualizá-los em tela.
/**
* Função de seleção dos registros da tabela
* @param string $tabela Description
* @param string $colunas string contendo as colunas separadas por
virgula para seleção, se null busca por todas *
*/
public function select($tabela, $colunas = "*") {
$sql = "SELECT $colunas FROM $tabela";
$result = $this->executar($sql);
return mysql_fetch_assoc($result);
}
Função bem simples para a seleção dos dados. São passados apenas dois parâmetros: o nome da tabela e as colunas a serem selecionadas.
Para testar, vamos criar um arquivo chamado select.php e alimentá-lo com o seguinte código
/**
* Função de seleção dos registros da tabela
* @param string $tabela nome da tabela
* @param string $colunas string contendo as colunas separadas por
virgula para seleção, se null busca por todas *
*/
public function select($tabela, $colunas = "*") {
$sql = "SELECT $colunas FROM $tabela";
$result = $this->executar($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$return[] = $row;
}
return $return;
}
Uma simples classe que varre os registros na nossa base de dados. O laço While vai em todas as linhas da tabela e salva seus registros em um array. Para visualizar os dados da sua tabela vamos criar um arquivo select.php e inserir o código abaixo:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
require_once 'conexao.php';
$conexao = new Conexao(DB_SERVER, DB_NAME, DB_USERNAME, DB_PASSWORD);
$select = $conexao->select('livro');
foreach ($select as $livro) {
echo '================'.'</br>';
echo 'Id = '.$livro['id_livro'].'</br>';
echo 'Codigo = '.$livro['cod_livro'].'</br>';
echo 'Nome = '.$livro['nome_livro'].'</br>';
echo 'Descrição = '.$livro['desc_livro'].'</br>';
echo '================'.'</br>';
}
?>
</body>
</html>
Para testar, acesse o arquivo através do browser e se ocorrer tudo bem você verá seus registros na tela.