Orientação a Objetos com PHP - Criar Classes e Inserir dados no banco de dados MYSQL
Galera encontrei uma tremenda dificuldade em encontrar um material bom e de fácil entendimento na internet sobre orientação a objetos no php, mostrando não só como criar um objeto e dar valores a ele, mas também como inserir e resgatar os dados no banco MYSQL. Então resolvi criar este tutorial para facilitar a sua vida :) ( e com as dicas de alguns amigos esta é a V2.0 do tutorial sobre object orientation in php Tabajara kkkkkkkk)
A ideia é criar um formulário onde possam ser incluidos produtos e um formulário para listar estes produtos por categoria.
Vamos criar dois arquivos o Produto.class.php que vai ser a nossa classe, onde vamos escrever nossas functions e tudo mais, e o arquivo objeto.php que vai ser onde vamos colocar o form e chamar a classe para executar as functions.
Mas primeiramente vamos criar nosso banco de dados, para criarmos precisamos executar uma query(um código na linguagem sql).
>Você pode acessar o painel de controle do seu site e entrar diretamente no phpmyadmin, mas eu prefiro utilizar o MySQL GUI Tools que é um pacote com uma série de ferramentas da própria Mysql. Neste pacote tem o Mysql Query Browser que é onde podemos nos conectar ao banco de dados e executar a nossa Query.
Obs.: Se você estiver em alguma hospedagem que não deixa você criar uma tabela pelo código, você terá que entrar no seu painel de controle e criar la, e geralmente ela fica assim: login_tabela.
Vamos ao Código ( execute bloco a bloco de código para evitar erros)
Banco de dados
create database oo;
use oo;
Agora vamos criar a tabela categorias:
CREATE TABLE categorias (
'cat_id' int(10) unsigned NOT NULL auto_increment,
'cat_nome' varchar(45) NOT NULL,
PRIMARY KEY ('cat_id')
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
No código acima estamos criando a tabela categorias, os campos cat_id e cat_nome e dizendo que cat_id é a chave primária e ela possui auto-incremento.
Agora vamos inserir dados nela:
INSERT INTO categorias (cat_nome) VALUES
('Telefonia'),
('Livros'),
('Cds, Dvds e Games'),
('Esporte e Lazer'),
('Informática');
Tabela produtos:
CREATE TABLE produtos (
'id' int(10) unsigned NOT NULL auto_increment,
'nome' varchar(60) NOT NULL,
'valor' double NOT NULL,
'quantidade' int(10) unsigned NOT NULL,
'categoria' varchar(45) NOT NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
A mesma coisa que a categoria, só que agora é produtos e possúi mais campos.
Agora vou postar os codigos em php e na propria página irei colocar comentarios explicando as linhas necessárias
Produto.class.php
<?php
class Produto{
//declaracao de variaveis publicas e privadas
public $conexao;
public $banco;
public $db;
public $var;
public $val;
public $id;
private $nome;
private $valor;
private $quantidade;
public $cat_id;
public $cat_nome;
// Metodo construtor setamos aqui o que queremos que ele faça ao criar o objeto
function __construct(){
//criamos a nossa conexao com o banco de dados e selecionamos o banco
$conexao = mysql_pconnect("localhost","root","123456") or die (mysql_error());
$banco = mysql_select_db("oo");
}
/* O metodo __set e responsavel por receber o nome da propriedade e o valor a ser atribuido, podendo atribuir ou nao*/
function __set($var, $val){
$this->$var = $val;
}
function setProduto(){
//realiza o insert no banco de dados passando os valores do objeto criado
$insertProdutos = mysql_query("insert into produtos values(null,'$this->nome','$this->valor', '$this->quantidade','$this->categoria')");
if($insertProdutos){
$resposta="Inserido com sucesso";
}else{
$resposta ="Erro ao inserir";
}
return $resposta;
}
function getProduto(){
/* realiza o select no banco de dados e seleciona e guarda as informações na variavel $getProdutos,
note que foi usava a chave estrangeira(utilizamos quando precisamos fazer alguma relacao com as tabelas) categoria que esta na tabela produto.
*/
$getProdutos = mysql_query("select * from produtos, categorias where categoria = '$this->cat_id' and categoria = cat_id ");
//este while serve para ir pegando os dados do select e enquanto existirem serem atribuidos a sua variavel e logo apos mostra-los na tela
while($l = mysql_fetch_array($getProdutos)){
$this->nome = $l["nome"];
$this->valor = $l["valor"];
print '<br>Nome:'.$this->nome."<br>";
print 'Valor: R$ '.$this->valor."<br>";
}
}
/* funcao que criei para fazer um select na tabela categorias e retornar todas as catergorias cadastradas dentro de um combo box(select) */
function getSelect(){
$getSelect = mysql_query("select * from categorias");
print "<label for='Categoria'>Categoria:<br>";
print "<select name='Categoria'>";
while($l = mysql_fetch_array($getSelect)){
$this->cat_id = $l["cat_id"];
$this->cat_nome = $l["cat_nome"];
/*veja que o value do option e o cat_id e o cat_nome e apenas o que aparece para o usuario. E este cat_id que será salvo na tabela categorias no campo categoria, para podermos fazer a nossa associacao*/
print "<option value='{$this->cat_id}'>{$this->cat_nome}</option>";
}
print "</select>";
print "</label>";
}
}
?>
objeto.php
<?php
include_once('Produto.class.php');
// pega a variavel GET que passamos no action do form
if (isset($_GET['acao'])){
$acao = $_GET['acao'];
// Verifica qual formulario foi submetido
switch($acao) {
//se for setProduto
case "setProduto":{
//Criando e Instanciando o objeto
$produto1 = new Produto;
//Atribuindo valores ao objeto
$produto1->nome = $_POST['Nome'];
$produto1->valor = $_POST['Valor'];
$produto1->quantidade = $_POST['Quantidade'];
$produto1->categoria = $_POST['Categoria'];
//chamando a funcao que faz o insert
$produto1->setProduto();
}
break;
//se for setProduto
case "getProduto": {
$getProduto = new Produto;
$getProduto->cat_id = $_POST['Categoria'];
$getProduto->getProduto();
}
break;
}
}
?>
<html>
<body>
<p>Incluir Dados</p>
<form action="<?php $SELF_PHP;?>?acao=setProduto" method="post" >
<label for="Nome">
Nome:
<br />
<input type="text" name="Nome"/></label>
<br />
<label for="Valor">Valor:
<br />
<input type="text" name="Valor" /></label>
<br />
<label for="Quantidade">Quantidade:
<br />
<input type="text" name="Quantidade" /></label>
<br />
<?php $getSelect = new Produto;
$getSelect->getSelect(); ?>
<br />
<br />
<input type="submit" value="Enviar" />
</form>
<p>Resgatar Dados</p>
<form method="post" action="<?php $SELF_PHP;?>?acao=getProduto" >
<?php $getSelect->getSelect(); ?>
<input type="submit" value="Listar Produtos" />
</form>
</body>
</html>
Então é isso ai galera, espero que funcione.
Gostaria de agraceder ao pessoal que me ajudou com as criticas e sugestões nos comentários e também no orkut
Valeu!
Comentários
Cara, muito legal sua
Realmente está muito simples
Opa cara blz?
Realmente preciso dar um UP no tutorial, voudar uma melhorada nele nesta questão e também colocar o construtor e mostrar como pegaria os valores do banco também.
Valeu!
Observe que foi uma pergunta
mto legal msm
Opa, Vou atualizar ele... ja
Opa,
Vou atualizar ele... ja até preparei a construtora conectando ao banco e tudo mais...
realmente nao botei o $_GET['acao']; na verdade esqueci de botar a parte do if tambem mas vou editar tudo agora
muito bom
muito bom mesmo bom tutorial pra quem ta começando a apreender classes valeu cara
Opa.. valeubrother...
Opa.. valeubrother... melhorei este tutorial mas tem um mais fácil ainda para bemm iniciante em OO
Isso erick show de bola e
Opa, aprendi muito com vc la
Opa, aprendi muito com vc la na GEJ valeu mesmo por tudo que tem feito. :D
Comentar