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; 
Listagem 1. Arquivo para gerar a tabela livro – script.sql

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);
    }
...
Listagem 2. Criando o arquivo conexao.php

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);
    }
Listagem 3. Bloco de código da função insert

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>
Listagem 4. Arquivo index.php

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); 
    }
Listagem 5. Função update

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>
Listagem 6. Arquivo Update.php

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);
    }
Listagem 7. Função select dentro de Conexao.php

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;
    }
Listagem 8. Conteúdo do arquivo select.php

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>
Listagem 9. Arquivo Select.php

Para testar, acesse o arquivo através do browser e se ocorrer tudo bem você verá seus registros na tela.