Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite, estou desenvolvendo uma classe em PHP para ser utilizado no MySQL.
De modo que os resultados nao possuam nada de HTML dentro de suas classes.
Modo de utilizar:
1- Crio o Objeto para a classe Mysql.
2- Modifico utilizando os SetLogin,SetSenha,SetBanco e etc, ou faço a alteraçao diretamente no __construct do objeto.
Resultado:
Com o codigo abaixo eu retorno o numero de linhas e colunas da query, ou seja um array de 1x1, apenas utilizando um simples return().
Duvida:
Como eu faria para que fosse retornado, uma lista N linhas X n colunas?
Exemplo:
GetResultadoTotal(i,j);
GetResultadoTotal(i,j);
i = numero de linhas obtido com mysql_num_rows($consulta);
j = numero de colunas obtido com mysql_num_fields($consulta);
Eu teria uma consulta unica armazenada em um array, e poderia manipular livremente sem misturar HTML e Dados dentro da classe.
Código:
>
<?php
class Consulta
{
private $banco;
private $endereco;
//private $tabela;
private $query;
private $login;
private $senha;
public function __construct()
{
$this->endereco = "localhost";
$this->login = "root";
$this->senha = "021dou";
$this->banco = "test";
}
public function SetQuery($Vquery)
{
$this->query = $Vquery;
}
public function SetBanco($Vbanco)
{
$this->banco = $Vbanco;
}
public function SetLogin($Vlogin)
{
$this->login = $Vlogin;
}
public function SetSenha($Vsenha)
{
$this->senha = $Vsenha;
}
//public function SetTabela($Vtabela)
//{
// $this->tabela = $Vtabela;
//}
public function SetEndereco($Vendereco)
{
$this->endereco = $Vendereco;
}
public function GetEndereco()
{
return $this->endereco;
}
public function GetQuery()
{
return $this->query;
}
//public function GetTabela()
//{
// return $this->tabela;
//}
public function GetLogin()
{
return $this->login;
}
public function GetSenha()
{
return $this->senha;
}
public function GetBanco()
{
return $this->banco;
}
public function GetResultado()
{
//resultado da tabela em forma de array
//$conexao = mysql_connect("localhost","root","021dou");
$conexao = mysql_connect($this->endereco,$this->login,$this->senha);
mysql_select_db($this->banco);
$sql = $this->query;
$consulta = mysql_query($sql);
$linhas = mysql_num_rows($consulta);
//inicio do while com resultados
//aqui esta minha duvida sobre como retornar um ubjeto como array
$resultado_array = array();
//fim do while com resultados
mysql_close($conexao);
mysql_free_result($consulta);
return $linhas;
}
}
$tempMenu = new Consulta();
//$tempMenu->SetEndereco("localhost");
//$tempMenu->SetBanco("test");
//$tempMenu->SetLogin("root");
//$tempMenu->SetSenha("021dou");
$tempMenu->SetQuery("select * from tb_menu");
echo $tempMenu->GetResultado();
//echo $endereco;
echo "<br/>";
$tempMenu2 = new Consulta();
//$tempMenu->SetEndereco("localhost");
//$tempMenu->SetBanco("test");
//$tempMenu->SetLogin("root");
//$tempMenu->SetSenha("021dou");
$tempMenu2->SetQuery("select * from tb_menu");
echo $tempMenu2->GetResultado() * 3;
//As duas instancias do Objeto funcionam :)
?>
Então eu estou desenvolvendo minha classe própria.
Tem algum jeito de retornar um Array?
>
$Resutaldo = array()
Looping while da consulta Mysql
Resultado[J] = linha J
.
.
.
Fim Looping While da consulta Mysql
return $Resultado
E fora eu trataria como um objeto simples
loping de escrita
>
<bla bla bla html>
<bla bla html>escreva Objeto->GetResutlado[ J ] <bla bla bla html>
$J = $J++;
fim looping de escrita
<bla bla bla html>
Desse jeito.
Separando Dados da consulta apenas na classe.
E 0% de html dentro da classe.
Cara, eu até entendo que seja legal o desafio, mas as vezes simplesmente não vale a pena reinventar a roda.
Neste caso em específico pode-se utilizar um padrão de desenvolvimento chamado Query Object, um conjunto de classes que definem expressões, filtros, critérios de seleção e a especialização em cada instrução sql -> INSERT, UPDATE, DELETE e SELECT.
Caso queira ir mais a fundo, existem outros padrões que podem aproveitar o padrão Query Object, como o Active Record, muito interessante e que com certeza dará um toque mais profissional ao seu código.
Estas informações podem ser garimpadas na internet, recomendo muito o livro "PHP - Programando com Orientação a Objetos", da editora novatec. Creio que não devo fazer propaganda, mas como referencia seja você iniciante ou avançado, creio que este livro seja ótimo!
Você pode encontrá-lo ou achar "trechos" dele pela internet, lembrando que o livro físico, na mão, é sempre melhor para estudar. Sem contar que a venda incentiva o autor a prouzir mais, mas esta história não cabe a mim te contar ^^
Boa sorte com seu problema e espero ter lhe ajudado.
Mais simples e enxuto possível:
:seta: http://henriquebarcelos.in/blog/2012/08/20/php-oo-classe-simples-para-acesso-a-banco-de-dados/
Agora pra esse seu problema aí: QUAL A UTILIDADE? O que muda pra você se souber o número de colunas?
O que muda eu saber o numero de colunas vai ser que que eu farei um for para escrever numero de linhas X colunas. isolando.
Classe retorna apenas dados e html eu iria escrever com os dois for uma para linha e outra coluna, ja que a minha classe vai retornar o numero dois dois.
acho q vc deve quebrar sua classe em 2 duas: uma q faça somente a conexão e outra q faça apenas consultas, essa ultima recebe a instancia do banco no construtor. Troque as funções mysql_* pelo pdoé mais efeciente.