Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alessandrof

retorno de objetos em array / exibição em tabela

Recommended Posts

amigos, estou querendo obter uma listagem de clientes do banco de dados mysql, fiz este código em um arquivo classes.php. Entao em uma outra pagina eu quero apenas chamar a função de buscar clientes e retornar uma lista com os mesmo. gostaria de saber se este código abaixo está correto. uma segunda dúvida é, na pagina a qual eu chamo a funcção eu quero mostrar os dados em uma tabela, porém nao faço idéia de como devo fazer isso. alguem pode me dar alguma idéia para que eu possa pesquisar?

 

...

	public function buscaCliente($nome){
		include_once "conecta.inc"; //aqui está sendo feita a conexão com o banco de dados
		$resultado = mysql_query("select * from clientes WHERE nome LIKE '%$nome%' ORDER BY nome");

		$listaCliente = array();
		$i=0;

		while ($registro = mysql_fetch_array($resultado, MYSQL_ASSOC)){
			$cliente = new pessoa();
			$cliente->setNome($registro["nome"]);
			$cliente->setContato($registro["contato"]);
			$cliente->setTipo($registro["tipo"]);
			$cliente->setEndereco($registro["endereco"]);
			$cliente->setBairro($registro["bairro"]);
			$cliente->setComplemento($registro["complemento"]);
			$cliente->setCidade($registro["cidade"]);
			$cliente->setEstado($registro["estado"]);
			$cliente->setTelefone($registro["telefone"]);
			$cliente->setCelular($registro["celular"]);
			$cliente->setObs($registro["obs"]);

			$listaCliente[$i] = $cliente;
			$i++;
		}

		return $listaCliente;
		mysql_free_result($resultado);
		mysql_free_result($registro);
	}


...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você que fez este codigo ou pegou em algum lugar? Se pegou, cola a fonte ai pra eu dar uma olhada.

 

Se tu quiser manter orientado a objetos precisa declarar a classe pessoa, se não fizer questão de OO, dá pra simplificar essa função e utilizá-la em outras paginas.

 

Posta ai que continuo a ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Alessandrof,

 

Primeiramente dou-lhe as boas-vindas!

 

Em segundo lugar lhe digo que o seu método não está genérico, você deve fazer as coisas mais abstratas para poder reaproveitar o máximo dos seus métodos.

 

Poste suas dúvidas.

 

Sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você não saca legal de PHP é melhor nem se meter com orientação a objeto...

 

eu não sei quais os valores que você tem no DB e nem como você quer que monte a tabela,caso não saiba como montar a estrutura da tabela avisa que eu te ajudo ;)

 

um exemplo simples de fazer consulta SQL e exibição dos dados,é da seguinte forma:

 

include_once "conecta.inc"; //aqui está sendo feita a conexão com o banco de dados
echo"<table>";
$resultado = mysql_query("select * from clientes WHERE nome LIKE '%$nome%' ORDER BY nome");
while($s = mysql_fetch_array($seg)) {
	$nome  =  $s['Nome']; // frizando que dentro do [''] é o nome do campo no banco de dados
	$telefone   = $s['Telefone'];

echo"<tr><td>$nome</td><td>$telefone</td></tr>";
}
echo"</table>";

quando você realiza uma consulta SQL e utiliza o WHILE, você gera um LOOP pelos resultados.tudo que estiver entre o WHILE o o } será repetido até que todos os dados contidos no DB sejam processados.

por esse motivo quando você vai exibir os dados SQL dentro de uma tabela,a menos que seja necessário você fazer repetição de uma tabela por linha,deixe a tag que abre a tabela antes da consulta e a tag que fecha a tabela fora do },evitando que eles sejam repetidos junto com os resultados,deixando o resultado bem mais apresentavel.

as tags <tr> e <td> serão repetidas com o resultado formando o "resultado final" dentro da tabela que você abriu e fechou fora do LOOP

 

espero ter ajudado e qualquer problema é só gritar :)

 

ah,caso queria que esse código fique em uma página extrena,você pode usar um include pra exibir esses resultados dentro de outra página ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom como diria Jack, vamos por partes.

 

1. Nelio, não copiei eu mesmo o fiz, baseado e um .jsp que eu tinha feito;

2. Kimura, obrigado pelas boas vindas, vou postar o código inteiro;

3. Anderson, eu tinha feito um código já sem ser orientado a objetos e está funcionando, acho que eu nao me expressei corretamente quando disse de como aprensentar em forma de tabela. Postarei o código que eu estava usando antes e funcionando. É que eu queria trabalhar orientado a objetos, igual eu fazia no jsp.

4. Skyo, eu nao entendi sua referência quando você citou "cuidado com esse contecta.inc" pelo nome você diz, que o ideal seria utilizar outro nome?

 

Primeiramente vou postar o código estruturado que eu tinha antes e funcionava:

 

busca_cliente.php

...
$nome_param = $_POST["nome_busca"]; //pega parametro para validação
	if ($nome_param != null)
		if ($nome_param != ""){ // valida se o parametro esta vazio ou nao ?>
<p>Lista de Clientes</p>
	  <table>
		 <thead>
			<tr>
			   <th style = "width: 100px;">Código</th>
			   <th style = "width: 100px;">Nome</th>
			   <th style = "width: 200px;">Contato</th>
			   <th style = "width: 200px;">Telefone</th>
			   <th style = "width: 200px;">Celular</th>
			   <th style = "width: 200px;">Observações</th>
			</tr>
		 </thead>
		 <tbody>
		 <? 
			include "conecta.inc";
			$resultado = mysql_query("select * from clientes WHERE nome LIKE '%$nome_param%' ORDER BY nome");
			$linhas = mysql_num_rows($resultado);

			for ($i=0; $i<$linhas;$i++)
				$registro = mysql_fetch_array($resultado, MYSQL_ASSOC);
			?>
			   <tr>
				  <td><? echo ($registro["codigo"]);?></td>
				  <td><? echo ($registro["nome"]);?></td>
				  <td><? echo ($registro["contato"]);?></td>
				  <td><? echo ($registro["telefone"]);?></td>
				  <td><? echo ($registro["celular"]);?></td>
				  <td><? echo ($registro["obs"]);?></td>
				  <td><a href="cliente_edita.php?cod_busca=<?echo($registro["codigo"]);?>">Editar</a></td>
				  <td><a href="cliente_excluir.php?cod_excluir=<?echo($registro["codigo"]);?>" onclick="return confirm('Confirma exclusão do registro?')">Excluir</a></td>
			   </tr>
		 <? 
			} // fim do for
			?>
		 </tbody>
	  </table>
	  <?
		mysql_close($conexao);
		} // fim do if	  ?>
...

Então, agora tudo isso aí eu queria fazer orientado a objetos, entao eu criei um arquivo classes.php e coloquei o seguinte:

 

<?php
class pessoa{
	protected $nome;
	protected $contato;
	protected $tipo;
	protected $endereco;
	protected $bairro;
	protected $complemento;
	protected $cidade;
	protected $estado;
	protected $telefone;
	protected $celular;
	protected $obs;

	public function setNome($nome){
		$this->nome = $nome;
	}
	public function setContato($contato){
		$this->contato = $contato;
	}
	public function setTipo($tipo){
		$this->tipo = $tipo;
	}
	public function setEndereco($endereco){
		$this->endereco = $endereco;
	}
	public function setBairro($bairro){
		$this->bairro = $bairro;
	}
	public function setComplemento($complemento){
		$this->complemento = $complemento;
	}
	public function setCidade($cidade){
		$this->cidade = $cidade;
	}
	public function setEstado($estado){
		$this->estado = $estado;
	}
	public function setTelefone($telefone){
		$this->telefone = $telefone;
	}
	public function setCelular($celular){
		$this->celular = $celular;
	}
	public function setObs($obs){
		$this->obs = $obs;
	}

	public function getNome(){
		return $this->nome;
	}
	public function getContato(){
		return $this->contato;
	}
	public function getTipo(){
		return $this->tipo;
	}
	public function getEndereco(){
		return $this->endereco;
	}
	public function getBairro(){
		return $this->bairro;
	}
	public function getComplemento(){
		return $this->complemento;
	}
	public function getCidade(){
		return $this->cidade;
	}
	public function getEstado(){
		return $this->estado;
	}
	public function getTelefone(){
		return $this->telefone;
	}
	public function getCelular(){
		return $this->celular;
	}
	public function getObs(){
		return $this->obs;
	}

	function  __destruct() {
		echo "destruído";
	}

	public function buscaCliente($nome){
		include_once "conecta.inc";
		$resultado = mysql_query("select * from clientes WHERE nome LIKE '%$nome%' ORDER BY nome");
		//$linhas = mysql_num_rows($resultado);
		$listaCliente = array();
		$i=0;
		//for ($i=0; $i<$linhas;$i++){
		while ($registro = mysql_fetch_array($resultado, MYSQL_ASSOC)){
			$cliente = new pessoa();
			$cliente->setNome($registro["nome"]);
			$cliente->setContato($registro["contato"]);
			$cliente->setTipo($registro["tipo"]);
			$cliente->setEndereco($registro["endereco"]);
			$cliente->setBairro($registro["bairro"]);
			$cliente->setComplemento($registro["complemento"]);
			$cliente->setCidade($registro["cidade"]);
			$cliente->setEstado($registro["estado"]);
			$cliente->setTelefone($registro["telefone"]);
			$cliente->setCelular($registro["celular"]);
			$cliente->setObs($registro["obs"]);

			$listaCliente[$i] = $cliente;
			$i++;
		}

		return $listaCliente;
		mysql_free_result($resultado);
		mysql_free_result($registro);
	}

}

?>

Qual seria a idéia minha, que pode nao ser a correta :), no arquivo lá em cima, o busca_cliente.php eu colocar um include "classes.php" e fazer o negócio acontecer, criar uma lista de objetos e depois acessar a mesma para escrever na tabela, só que é neste ponto que estou meio perdido, sem direção do que fazer exatamente. Se tá tudo errado ainda só falar que eu apago tudo, hehehe, e dou mais uma pesquisada pra saber o caminho certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que ele quis dizer é que a extensao inc pode ser baixada pelo navegador enquanto que se usar php mesmo nao corre este risco do pessoal ver o codigo fonte do arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi. entao minha duvida agora está sendo se o retrn que estou fazendo na função busca cliente está certo, e como devo fazer para uma lista receber este retorno e apresentar em uma tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.