Webly: Classe De Conexão Com Mysql - Webly

Ir para

Regras para postagem

É permitido postar livremente respostas com comentários, testes e avaliações dos scripts. Postagens contendo dúvidas sobre o script, deverão ser postadas no fórum principal de PHP

IMPORTANTE: Todos os tutoriais postados neste fórum irão automaticamente para o portal Webly. Contribua você também e faça parte da equipe de colaboradores que fazem a evolução da web. Obrigado.
Página 1 de 1

Classe De Conexão Com Mysql Avaliar tópico: -----

#1 Membro offline   Carutcho Ícone

  • Ícone
Grupo:
Membros
Posts:
113
Cadastrado:
17-janeiro 08
Localização:
Rio de Janeiro - RJ

Ícone  Postou 21 agosto 2008 - 09:38

Pô esses dias passei aqui no forum de php pra dar uma olhadinha e vi que estam postando classe de BD, então lembrei que eu tinha uma que montei a um tempo atás q eu achei bem legal então resolvi postar.

Bem, como eu enrolo mt e falo muito antes de postar alguma coisa, dessa vez resolvi ser mais direto e vou postar logo o código rss ;).. ele ja está com a documentação nos comentários.



absss

<?php
##################### DOCUMENTAÇÃO ##########################
/*

@ Desenvolvida por: Reinaldo Torres : Carutcho
@ carutchows@gmail.com

---> VARIÁVEIS <---


   bd	-> variavel de conexão com o banco de dados
   banco -> variável que informa o banco a ser utilizado 
   

---> MÉTODOS <---


 - conecta -> metodo que cria uma conexão com o banco de dados 
  sintaxe: conecta()

 - query -> metodo que executa uma query e retorna o resultado da Query caso contrário, retorna FALSE
  sintaxe: query(sql)
			 *sql - > Query que queira utilizar, Parâmetro Obrigatório.

 - linhas -> Retorna o numero de linhas de uma determinada query caso contrário, retorna FALSE
  sintaxe: linhas(sql)
			 *sql - > Query que queira utilizar, Parâmetro Obrigatório.

 - resultFetch -> Faz o retorno de uma query através de um array, Caso não aja retorno ou aja erro, retorna FALSE
	 sintaxe: resultFetch($sql)
		  *sql -> Query que queira utilizar, Parâmetro Obrigatório.
		  
 - select -> Retorna um array com os resultados de um Select , Caso não aja retorno ou aja erro, retorna FALSE
	 sintaxe: select(camp,tab,[cond])
		  *camp -> Campos da tabela que deseja selecionar, separados por virgula. Parâmetro Obrigatório.
		  *tab  -> Tabela no qual deseja fazer a consulta. Parâmetro Obrigatório.
		  *cond -> Condição para retorno do select. Parâmetro Opcional					

 - insert -> Executa uma Insersão no banco de dados, Retorna TRUE ou FALSE
	 sintaxe: insert(camp,tab,vals,[cond])
		  *camp -> Campos da tabela que devem ser inseridos valores, separados por virgula.  Parâmetro Obrigatório.
		  *tab  -> Tabela que deve ocorrer a insersão.  Parâmetro Obrigatório.
		  *vals -> Valores que devem ser inseridos no banco,separados por virgula.  Parâmetro Obrigatório.
					 Obs.: Os dados devem ser setados na mesma ordem dos campos.
		  *cond -> Condição para que seja inserido. Parâmetro Opcional		  

 - update -> Executa uma atualização em de um ou mais registros no banco. Caso não aja retorno ou aja erro, retorna FALSE
	 sintaxe: update(camp,tab,vals,[cond])
		  *camp -> Campos que devem ser atualizados. Parâmetro Obrigatório.
		  *tab  -> Tabela que deve ocorrer a alteração.  Parâmetro Obrigatório.
		  *vals -> Valores que devem ser atualizados no banco,separados por virgula.  Parâmetro Obrigatório.
					 Obs.: Os dados devem ser setados na mesma ordem dos campos.
		  *cond -> Condição para que seja alterado. Parâmetro Opcional		  

 - delete -> Remoção de um ou mais registros no banco , Caso não aja retorno ou aja erro, retorna FALSE
	 sintaxe: delete(tab,[cond])
		  *tab  -> tabela no qual quer remover registros . Parâmetro Obrigatório.
		  *cond -> Condição para remoção de registros.


--> padrão para documentar.

 - insert -> 
	 sintaxe: 
		  *sql -> 
		  
		  
*/
#############################################################

//** metodos da classe database



class database
{
	protected $bd;
	protected $banco;


	//metodo de conexão com o banco

	function database ($banco)
	{
		$this->banco=$banco;	
		$this->conecta ();	
	}
	  
	
	function conecta ()
	{
		if ($this->banco=='test')
		{	
			$this->bd = @mysql_connect('localhost','carutcho','bancoTeste') OR die("Falha de Conexão com  MySQL server!");	
//			echo @mysql_error($this->bd);
			$BD = @mysql_select_db($this->banco, $this->bd) OR die("Falha na Escolha do Banco de Dados.!");;
//			echo @mysql_error($this->bd);
		}
	}
	//metodo de execução de uma query
	function desconecta ()
	{				 
		return @mysql_close($this->bd);	
	}

	//metodo de execução de uma query
   function query($sql)
   {
		   $this->conecta();	
		$var = @mysql_query($sql);
		return $var ?  $var : false;
		   $this->desconecta();		
   }

   // metodo para retornar a quantidade de linhas de uma query
   function linhas($sql)
   {
	 $this->conecta();   
		return @mysql_num_rows(@mysql_query($sql));
	   $this->desconecta();	 
   }


   function resultFetch ($sql)
   {  
		   $this->conecta();   
		$res = self::query($sql);
		return $res ? @mysql_fetch_array($res) : false;			
		   $this->desconecta();		
   } 


	function select($camp,$tab,$cond)
	{
		   $this->conecta();	
		if ( (isset($camp))&&(isset($tab))&&(isset($cond)) )
		{
			$sql = "select ".$camp." FROM ".$tab." WHERE ".$cond;
			return $this->resultFetch($sql);
		}
		elseif ( (isset($camp))&&(isset($tab))&&(!isset($cond)) )
		{
			$sql = "select ".$camp." FROM ".$tab;				
			return $this->resultFetch($sql);							
		}
		else
		{
			return false;
		}
		   $this->desconecta();		
	}

	function insert($camp,$tab,$vals,$cond)
	{
		   $this->conecta();

		if ($cond!='')
		{		
			$sql = "INSERT INTO ".$tab." (".$camps.") VALUES ('".str_replace(',','\',\'',$vals)."') WHERE ".$cond;
			$res = @mysql_query($sql);		
			return ( @mysql_affected_rows() )!=0 ? true : false;
		}
		elseif  ($cond=='') 
		{				
			$sql = "INSERT INTO ".$tab." (".$camp.") VALUES ('".str_replace(',','\',\'',$vals)."')";
			$res = @mysql_query($sql);
			return ( @mysql_affected_rows() )!=0 ? true : false;
		}
		else
		{
			return false;
		}

		   $this->desconecta();		
	}

	function update($camp,$tab,$vals,$cond)
	{
		   $this->conecta();		

		$campos = explode(',',$camp);
		$valores = explode(',',$vals);
		$i=0;
		foreach( $campos as $key => $valor)
		{
			if ($i==0)
			{
				$atual .= $valor." = '".$valores[$i]."'";
			}
			else
			{
				$atual .= ",".$valor." = '".$valores[$i]."'";					
			}
			$i++;
		}		
		if ( $cond!='' )
		{		
			$sql = "UPDATE ".$tab." SET ".$atual." WHERE ".$cond;
			$res = $this->query($sql);
			return ( @mysql_affected_rows() )!=0 ? true : false;
		}
		elseif ( $cond=='' )
		{
			$sql = "UPDATE ".$tab." SET ".$atual;
			$res = $this->query($sql);
			return ( @mysql_affected_rows() )!=0 ? true : false;
		}
		else
		{
			return false;		
		}

		   $this->desconecta();		
	}
	function delete($tab,$cond)
	{
		   $this->conecta();
		if ( (isset($tab))&&(isset($cond)) )
		{		
			$sql = "DELETE FROM ".$tab." WHERE ".$cond;
			$res = $this->query($sql);
			return ( @mysql_affected_rows() )!=0 ? true : false;
		}
		elseif ( (isset($tab))&&(!isset($cond)) )
		{
			$sql = "DELETE FROM ".$tab;
			$res = $this->query($sql);
			return ( @mysql_affected_rows() )!=0 ? true : false;
		}
		else
		{
			return false;
		}
		
		   $this->desconecta();		
	} 

}

?>

0

#2 Membro offline   Carutcho Ícone

  • Ícone
Grupo:
Membros
Posts:
113
Cadastrado:
17-janeiro 08
Localização:
Rio de Janeiro - RJ

Ícone  Postou 23 agosto 2008 - 05:48

Fala aee galera blzzzzzzzzz ?? :D

Eu postei essa classe em outro forum tb, la me pediram para q eu escrevesse alguns exemplos de como utilizar a classe, então escrevi alguns exemplos aqui para ficar melhor o entendimento de vo6.

Mas antes tem uma correção no método de insert aqui está o novo código, o insert não tem necessidade de por condição então eu re-escrevi o metodo.

 
	 function insert($camp,$tab,$vals)
	 {
			$this->conecta();
	 
		 $sql = "INSERT INTO ".$tab." (".$camp.") VALUES ('".str_replace(',','\',\'',$vals)."')";
		 $res = @mysql_query($sql);
		 return ( @mysql_affected_rows() )!=0 ? true : false;
 
			$this->desconecta();		
	 }



Aqui em baixo to usando os métodos em várias situações diferentes para mostrar como funcionaria.


Instanciando a classe para usar os métodos dela passando como parâmetro o banco
obs: usuário, senha, porta e tudo passado na classe, coloquei dessa maneira para que se possa usar a mesma classe para bancos diferentes sem ter q criar varias classes.
Eu escrevi assim o código, pq eu tinha necessidade de fazer conexão em bancos diferentes e trabalhar com as 2 conexões ao mesmo tempo.
	 $bd = new database('test');


Executando uma query livre que retorna o nomes de uma tabela usando métodos "query" para execuar a query e o método "linhas" para pegar a quantidade de linhas

	 $sql = "select nome from tabela"
	 $resultado = $bd->query($sql);
	 if ($resultado!=false)
	 {
		 for ($i=0; $i<$bd->linhas($sql); ++$i)
		 {
			 echo "nome: ".mysql_result($resultado,$i)."/n";
		 }
	 }


Fazendo o mesmo processo de cima só q com outros métodos da classe, o método select retorna um mysql_fetch_array(result), caso não tenha resultado retorno é false.

	 $resultado = $bd->select('nome','tabela');
	 if ($resultado!=false)
	 {
		 while($rows = $resultado)
		 {
			 echo "nome : ".$resuldado['nome']."\n";
		 }
	 }



mesmo exemplo só q usando condição no select e usando mais de 1 tabela
	 $resultado = $bd->select('nome','tabela a, tabela b','a.nome=b.nome and a.nome=carutcho');
	 if ($resultado!=false)
	 {
		 while($rows = $resultado)
		 {
			 echo "nome: ".$resuldado['nome']."/n";
		 }
	 }



Inserindo um registo numa tabela
		 $resultado = $bd->insert('nome,idade','tabela','carutcho,24');
		 if ($resultado==true) echo "registro inserido com sucesso.";
		 else echo "registro não inserido.";


Deletando todos os registros de uma tabela.
		 $resultado = $bd->delete('tabela','');
		 if ($resultado==true) echo "registros removido com sucesso.";
		 else echo "registros não removidos.";


Deletando alguns os registros de uma tabela.
		 $resultado = $bd->delete('tabela','nome=carutcho');
		 if ($resultado==true) echo "registros removidos com sucesso.";
		 else echo "registros não removidos.";


Os métodos do update não se serviriam mt ou teriam utilidades, pq eu usei ele para um caso especítico meu, meu cadastro eu postava todos os campos do formulário com os mesmos nomes que eu colocava na tabela, com algumas modificações para meu uso, então quando eu postava o formulário, eu separava todos os nomes com "," e todos os valores tb com a mesma ordem e depois utilizava esses métodos para fazer tudo direto pra mim, então eu achava isso mais prático, não sei se será útil pra todos.

Atualizando todos os registros de uma tabela.
		 $resultado = $bd->update('nome,idade','tabela','carutcho,24','')
		 if ($resultado==true) echo "registros alterados com sucesso.";
		 else echo "registros não alterados.";


Atualizando alguns os registros de uma tabela.
		 $resultado = $bd->update('nome,idade','tabela','carutcho,24','id=1 and idade<>24')
		 if ($resultado==true) echo "registros alterados com sucesso.";
		 else echo "registros não alterados.";



Outra observação, eu não trabalho com php tem 1 ano, essa classe ja foi escrita a um tempo e eu não testei todos os códigos, usei baseado pela que postei aqui, só tenho php + mysql no meu comp do trabalho só para estudo e como estou em casa não testei nada :(, mas creio que funfe assim mesmo.

Qualquer dúvida ou problema, poste aee q eu tento ajudar com o que precisar.


Absss e espero tenham gostado da classe.
0

#3 Membro offline   GustavoGAGU Ícone

  • Ícone
Grupo:
Membros
Posts:
1
Cadastrado:
30-agosto 08

Postou 30 agosto 2008 - 08:01

Reinaldo,

tô aprendendo usar sua classe, mas o select não teve eito, não consegui fazer funcionar

quando vai pra o while ele entra num loop infinito, pelo que eu olhei na classe tá tudo certinho, tá executando a query certinho.
mas esse while ai tá errado ou não?

me ajuda ai, tô sem terminar um trabalho aqui por isso.

tirando esse probelminha ai, tá tudo ok. valeu pela ajuda.

abraço, João Gustavo
pode me mandar a resposta por e-mail: gagu2030@hotmail.com
0

#4 Membro offline   LeandroDaronch Ícone

  • Ícone
Grupo:
Membros
Posts:
1
Cadastrado:
30-setembro 08

Postou 30 setembro 2008 - 10:30

Bons Dias

:excl: Estou com o mesmo problema relacionado ao LOOP gerado pelo WHILE de mysql_fetch_array(); na verdade, percebi que não existe retorno de condições multiplas, a classe está retornando apenas um único registro da tabela.

:ohok: Achei Show demais essa classe, mas tem esse detalhe, se alguém puder me dar uma LUZ agradeço muito :clapping:

e-mail ldaronch@yahoo.com.br

Obrigado :thumbsup:
0

#5 Membro offline   Carutcho Ícone

  • Ícone
Grupo:
Membros
Posts:
113
Cadastrado:
17-janeiro 08
Localização:
Rio de Janeiro - RJ

Postou 29 outubro 2008 - 01:49

Gente ,

Desculpe o atraso nas respostas, eu literalmente esqueci de acompanhar essa parte do forum,
eu fiz algumas alterações na classe a pouco tempo, vou postar aqui caso ainda haja dúvidas vou acompanhar para responder ok ;)

Abssss e desculpem mais uma vez


<?

//** metodos da classe database


	class database
	{
 		protected $bd;
		protected $banco;

		//metodo de conexo com o banco
		function database ($banco)
		{
			$this->banco=$banco;	
			$this->conecta ();	
		}
	  
	
		function conecta ()
		{
			if ($this->banco=='SGM')
			{	
				$this->bd = @mysql_connect('localhost','root','carutcho') OR die("Falha de Conexo com  MySQL server!"); 
				$BD = @mysql_select_db($this->banco, $this->bd) OR die("Falha na Escolha do Banco de Dados.!");
			}
		}
		
		function desconecta ()
		{			 	
			return @mysql_close($this->bd);	
		}

	
		//metodo de executo de uma query
	   function query($sql)
	   {
	   		$this->conecta();
			$var = @mysql_query($sql);
			return $var ?  $var : false;
	   		$this->desconecta();		
	   }
	   
	   function queryCSV($sql)
	   {
	   		$this->conecta();	
			$result = array();
			$res = @mysql_query($sql);
			
			if($res){
			while ($row = mysql_fetch_assoc($res)){
					$result[] = $row;
				}
			}else {
				return false;
			}
			return $result;	
	   		$this->desconecta();			
	   }

	   // metodo para retornar a quantidade de linhas de uma query
	   function linhas($sql)
	   {
		 $this->conecta();   
	   	 return @mysql_num_rows(@mysql_query($sql));
		   $this->desconecta();	 
	   }


	   function resultFetch ($sql)
	   {  
	   		$this->conecta();   
			$res = self::query($sql);
			return $res ? @mysql_fetch_array($res) : false;			
	   		$this->desconecta();		
	   } 


		function select($camp,$tab,$cond=null)
		{

	   		$this->conecta();	
			
			if ( (isset($camp))&&(isset($tab))&&(isset($cond)) )
			{			
				$sql = "select ".$camp." FROM ".$tab." WHERE ".$cond;
				return $this->resultFetch($sql);
			}
			elseif ( (isset($camp))&&(isset($tab))&&(!isset($cond)) )
			{						
				$sql = "select ".$camp." FROM ".$tab;				
				return $this->resultFetch($sql);							
			}
			else
			{
				return false;
			}
	   		$this->desconecta();		
		}
	
		function insert($camp,$tab,$vals)
		{
	   		$this->conecta();
	
			if ((isset($tab))&&(isset($camp))&&(isset($vals)))
			{				
				$sql = "INSERT INTO ".$tab." (".$camp.") VALUES ('".str_replace(',','\',\'',$vals)."')";
				$res = @mysql_query($sql);
				return (@mysql_affected_rows())!=0 ? true : false;
			}
			else
			{
				return false;
			}
	
	   		$this->desconecta();		
		}
	
		function update($camp,$tab,$vals,$cond=null)
		{
	   		$this->conecta();		
	
			$campos = explode(',',$camp);
			$valores = explode(',',$vals);
			$i=0;
			foreach( $campos as $key => $valor)
			{
				if ($i==0)
				{
					$atual .= $valor." = '".$valores[$i]."'";
				}
				else
				{
					$atual .= ",".$valor." = '".$valores[$i]."'";					
				}
				$i++;
			}		
			if ( $cond!='' )
			{		
				$sql = "UPDATE ".$tab." SET ".$atual." WHERE ".$cond;
				$res = $this->query($sql);
				return ( @mysql_affected_rows() )!=0 ? true : false;
			}
			elseif ( $cond=='' )
			{
				$sql = "UPDATE ".$tab." SET ".$atual;
				$res = $this->query($sql);
				return ( @mysql_affected_rows() )!=0 ? true : false;
			}
			else
			{
				return false;		
			}
	
	   		$this->desconecta();		
		}
		
		function delete($tab,$cond=null)
		{
	   		$this->conecta();
			if ( (isset($tab))&&(isset($cond)) )
			{		
				$sql = "DELETE FROM ".$tab." WHERE ".$cond;
				$res = $this->query($sql);
				return ( @mysql_affected_rows() )!=0 ? true : false;
				
			}
			elseif ( (isset($tab))&&(!isset($cond)) )
			{
				$sql = "DELETE FROM ".$tab;
				$res = $this->query($sql);
				return ( @mysql_affected_rows() )!=0 ? true : false;
			}
			else
			{
				return false;
			}
			
	   		$this->desconecta();		
		} 

	}
	
?>

0

#6 Membro offline   josefreitas Ícone

  • Ícone
Grupo:
Membros
Posts:
48
Cadastrado:
10-julho 08

Postou 21 dezembro 2008 - 03:52

Carutcho, muito boa essa sua classe, mas tenho algumas sugestões:

- O que você acha de fazer uma semelhante, mas com MySQLi:
http://br.php.net/ma...book.mysqli.php

- Esse modelo de uso para inserir registros é muito confuso:
$bd->insert('nome,idade','tabela','carutcho,24');

Acho que você podia deixar assim:
$dados = array('nome' => 'carutcho', 'idade' => '24', 'texto' => $text);
$bd->inserir('tabela', $dados); (ou)
$bd->atualizar('tabela', $dados);

;)
0

Página 1 de 1


Resposta rápida

  • Diminuir tamanho
  • Aumentar tamanho
  

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)