Manipulando com PHP, de forma simples, dados do banco MySQL .
A ideia da classe é simplificar o acesso ao banco no que diz respeito as transações simples como:
- Create
- Read
- Update
- Delete
Não é nenhum conjunto de classes fantásticas, é uma única classe com métodos básicos que podem servir para criar pequenas rotinas de forma rápida e limpa (isso é importante também).
A classe chamada aqui de Influx possui cerca de 15% dos métodos e funcionalidades da classe original que utilizo em meus projetos (é podem dizer, fora framework caseiro… mas me serve muito bem).
Eu peguei alguns trechos da classe afim de compartilhar com vocês no intuito de criarem coisas simples que tanto procuram aqui, como galerias por exemplo.
No geral, posso dizer que a classe “trabalha” com arrays no PHP, para tudo.
Todos os parâmetro são passados ou retornados em arrays, à partir daí vai contar a criatividade do programador (iniciante), lembrando que não é destinada à programadores experientes que procuram algo belo, a ideia é fazer com que um iniciante consiga criar pequenas rotinas com poucas linhas.
Primeiramente vamos ver alguns exemplos e depois falamos da configuração do banco (1 única linha).
Para todos os exemplos vamos utilizar uma tabela de 2 campos (item_id e item_desc)
1º – Retornando dados da tabela (array)
<?php
$this->select()->from( 'item' )->execute();
//verifica se há registros
if ( $this->check() )
{
//printa o array retornado
$this->printr( $this->data );
}
?>
Os métodos estão encadeados nesse exemplo acima, poderia ser normalmente como abaixo:
<?php
$this->select();
$this->from( 'item' );
$this->execute();
//verifica se há registros
if ( $this->check() )
{
//printa o array retornado
$this->printr( $this->data );
}
?>
Antes que questionem o título do post (manipulando registros com uma linha):
<?php
//removendo um registro
$this->delete()->from( 'item' )->where('item_id = 1')->execute();
//atualizando um registro
$this->update('item')->set(array('item_desc'), array('foobaz'))->where('item_id = 1')->execute();
?>
O retorno seria:
<?php Array ( [1] => Array ( [item_id] => 1 [item_desc] => Bar ) [2] => Array ( [item_id] => 2 [item_desc] => Foo ) ) ?>
A ideia da classe é utilizar métodos que criem (concatenem) uma string que será nossa query.
No exemplo acima utilizamos:
$this->select()->from(‘item’)->execute();
Que gera a query string : SELECT * FROM item;
A classe possui métodos para formar uma query string básica mas funcional, alguns métodos:
<?php
//se não passar nenhum parâmetro no select é assumido o * (todos os campos da tabela)
$this->select('campo1, campo2, campoN');
$this->from('tabela');
$this->where('item_id = 1');
$this->select()->from('tabela')->where('item_id = 1')->execute();
$this->select()->from('tabela')->where( " item_desc like '%foo%' ")->execute();
$this->update('tabela');
$this->set(array('campo1','campo2'), array('valor1','valor2'));
$this->insert('tabela');
$this->fields(array('campo1','campo2'));
$this->values(array('valor1','valor2'));
//executa a query
$this->execute();
//verifica se houve resultados/registros (retorna true or false )
//utilizado após o select
$this->check();
//removendo um registro
$this->delete()->from('tabela')->where('id = 2')->execute();
//Utilizando join
$this->select()->from('categoria')->join('item','item_categoria = categoria_id','INNER')->execute();
?>
Esses foram alguns métodos simples, agora é preciso criar uma classe que herde tudo isso e escrever alguns métodos para utilizarmos.
Vejamos uma classe estendida onde iremos utilizar os recursos básicos (CRUD);
<?php
//incluindo a classe influx
require_once 'influx/influx.class.php';
//extendendo a classe
class Item extends Influx
{
//construtor
public function __construct()
{
parent:: __construct();
}
//retornando array
public function show()
{
$this->select()->from( 'item' )->execute();
//verifica se há registros
if ( $this->check() )
{
//printa o array retornado
$this->printr( $this->data );
}
else
{
//exibe mensagem caso nao haja registros
echo $this->response;
}
}
//utilizando limite e offset
public function showLimOff( $limit, $offset )
{
$this->select()->from( 'item' )->limit( $limit, $offset )->execute();
if ( $this->check() )
{
$this->printr( $this->data );
}
}
//inserindo novo registro
public function incluir( $fields, $values )
{
$this->insert( 'item' )->fields( $fields )->values( $values )->execute();
}
//atualizando registro
public function atualizar( $fields, $values, $item_id )
{
$this->update( 'item' )->set( $fields, $values )->where( "item_id = $item_id" )->execute();
}
//removendo registro
public function remover( $item_id )
{
$this->delete()->from( 'item' )->where( "item_id = $item_id" )->execute();
}
//gerando uma tabela html
public function lista()
{
$body = "0 results";
$this->select()->from( 'item' )->execute();
if ( $this->check() )
{
$body = "<table>";
foreach ( $this->data as $item )
{
//array to object
$obj = ( object ) $item;
$body .= "<tr>";
$body .= "<td>$obj->item_id</td>";
$body .= "<td>$obj->item_desc</td>";
$body .= "</tr>";
}
$body .= "<table>";
return $body;
}
}
//recebendo dados via post
public function incluirDoPost()
{
//verifica se há dados no post
if ( isset( $_POST ) && !empty( $_POST ) )
{
//populando $this->post_fields e $this->post_values com método post2Query
$this->post2Query( $_POST );
//insere registro
$this->insert( 'item' )->fields( $this->post_fields )->values( $this->post_values )->execute();
}
}
}
//novo objeto da classe Item
$b = new Item;
//incluindo um item
$b->incluir(array('item_desc'),array('PS2'));
//exibindo itens em array
$b->show();
//atualizando um registro
$b->atualizar( array( 'item_desc' ), array( 'XBOX' ), 4 );
//exibindo registro atualizado
$b->show();
//removendo item passando ID
$b->remover(1);
//exibindo a lista novamente
$b->show();
//gerando uma tabela HTML
echo $b->lista();
//exibindo registros utilizando limit e offset
$b->showLimOff(0,2);
?>
A configuração do acesso ao banco de dados é feita na própria classe, os dados são passados em um array, como abaixo:
//configuracao do banco public $config = array( 'host' => 'localhost', 'port' => 3306, 'dbname' => 'dbteste', 'user' => 'root', 'password' => '' );
Para configurar o banco, basta abrir o arquivo influx.class.php e alterar os dados do array config;
Os métodos estão comentados e com exemplos breves na classe influx;
Importante: No exemplo de inserção direto do post os nomes do campos do formulário devem ser iguais aos campos da tabela;
Exemplo: na tabela existe o campo item_desc, então, no form html o input deve ter o name=”item_desc”;
É isso, dá para escrever códigos simples, coisas pequenas, só usar a criatividade…
Download dos fontes (incluindo um exemplo utilizando post e tabela exemplo)
- Classe Influx








