Ir para conteúdo

POWERED BY:

Arquivado

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

Perfect Lion

Class para facilitar Inserção, Delete, Update e Retorno

Recommended Posts

Fala galera tudo certo?

 

Bem agora que eu estou mais ainda envolvido com o PHP e estudando normas de padronização e tals.. eu baseado no arquivo do link abaixo eu criei essa classe para ajudar no esquema de inserir, update, deleta e retorno de dados do banco... achei muito util e flexivel.. podendo ser mechido da maneira que melhor agradar ;)

 

http://www.tonymarston.net/php-mysql/databaseobjects.html

 

<?php/* * @author	Erick Leão * @date	22/02/2007 * @access	public * @libs	adodb  * @desc	Class default tabela. Aqui ele já Insere, Deleta, Atualiza e Apaga um registro de uma  * 			classe filha * 			Modo de usar: * 		Crie uma nova classe do perfil que deseja e em seu construtor faça: * 	class user extends default_table{ * 		function __construct(){ *			# opcional pois no arquivo config já puxa o padrão do 0 *			global $ARR_CONFIG; *			$this->str_database =& $ARR_CONFIG["DB"][0]; *			 *			# defina o nome da tabela *			$this->str_tabelaname = "usuarios"; *			 *			# opcional valor padrão 10 caso queria aumentar só adicionar a linha com o valor *			# desejado *			$this->int_rows_por_page = 10; *			 *			# todos os campos que a tabela possui *			$this->arr_fieldlist = array( *						"id_user", *						"nome", *						"usuario", *						"senha", *						... *						); *			# informa o campo chave não mecher no valor "array("key" => "y")" *			$this->arr_fieldlist["meuid"] = array("key" => "y"); *		} *	} * *		Depois só executar. *		$user = new user; *		$user->setPgNum($_GET["pg"]); *		$where = "nome like 'An%'" # opcional *		$user->getData() */class default_table{	/*	 * @desc	recebe o objeto da biblioteca ADODB	 * @access	protected	 * @name	$obj_adodb	 */	protected $obj_adodb;		/*	 * @desc	recebe o resultado da consulta no banco	 * @access	protected	 * @name	$result	 */	protected $result;		/*	 * @desc	recebe o nome do banco referente a classe erdada	 * @access	protected	 * @name	$str_database	 */	protected $str_database;		/*	 * @desc	recebe o nome da tabela referente a classe erdada	 * @access	protected	 * @name	$str_tabelaname	 */	protected $str_tabelaname;		/*	 * @desc	Lista dos campos da tabela referente a classe	 * @access	protected	 * @name	$arr_fieldlist	 */	protected $arr_fieldlist;		/*	 * @desc	responsavel por definir quantidade por pagina	 * @access	public	 * @name	$int_rows_por_page	 */	public $int_rows_por_page;		/*	 * @desc	responsavel por informa a pagina atual	 * @access	protected	 * @name	$int_pagenum	 */	protected $int_pagenum;		/*	 * @desc	responsavel por pegar o resultado GET ou POST definido pelo usuario	 * @access	protected	 * @name	$int_pgnum	 */	protected $int_pgnum;		/*	 * @desc	responsavel por informa a ultima pagina	 * @access	protected	 * @name	$int_lastpage	 */	protected $int_lastpage;		/*	 * @desc	retorna os resultados encontrados na consulta	 * @access	protected	 * @name	$arr_data_array	 */	protected $arr_data_array;		/*	 * @desc	recebe erros	 * @access	protected	 * @name	$arr_error 	 */ 	protected $arr_error;		/*	 * @author	Erick Leão	 * @date	22/02/2007	 * @return 	void	 * @desc	função responsavel por atribuir um valor a variavel int_pgnum 	 */	public function setPgNum($element){		$this->int_pgnum = $element;	}# function		/*	 * @author	Erick Leão	 * @date	22/02/2007	 * @return 	void	 * @desc	função construtora define padrões da classe		 */	public function __construct () {				global $ARR_CONFIG;		$this->str_database =& $ARR_CONFIG["DB"][0]; 		$this->str_tabelaname = "tablela";				$this->int_rows_por_page = 10;				$this->arr_fieldlist = array(					"campo1",					"campo2",					"campo3",					);		$this->arr_fieldlist["campo1"] = array("key" => "y"); 				if(is_array($this->arr_config)){			if(function_exists("ADONewConnection")){				$this->obj_adodb = &ADONewConnection($this->str_database["type"])or trigger_error("SQL", E_USER_ERROR);			}# if		}# if			}# function		/*	 * @author	Erick Leão	 * @date	22/02/2007	 * @return	array	 * @param	string $where informa condições após a seleção da tabela	 * 			ex: nome='fulano' and (ativo='S' or atua='S')	 * @desc	faz a consulta no banco de dados buscando informações referente a classe filha.	 */	public function getData($where=""){				# Abre uma conexão com o Banco de dados		$this->obj_adodb->Connect(			$this->str_database["host"],			$this->str_database["user"],			$this->str_database["pass"],			$this->str_database["name"]			);				# Verifica se foi dado algum comando Where no paramento			if(empty($where)){			$str_where = NULL;		}else{			$str_where = "WHERE $where";		}# if				# Cria a string da query		$str_query = "SELECT count(*) FROM $this->str_tabelaname $str_where";		$result = $this->obj_adodb->Execute($str_query)or trigger_error("SQL", E_USER_ERROR);		$str_query_data = $this->result->rows;		$int_numrows = $str_query_data[0];				# Verifica se foi encontrado algo no banco		if ($int_numrows <= 0) {			$this->pageno = 0;			return;		}# if				# Calcula o numero de paginas		if ($this->int_rows_por_page > 0) {			$this->int_lastpage = ceil($int_numrows/$this->int_rows_por_page);		}else {			$this->int_lastpage = 1;		}# if				# Prepara a Sequencias		if ($this->int_pgnum == '' OR $this->int_pgnum <= '1') {			$this->int_pgnum = 1;		}elseif($this->int_pgnum > $this->int_lastpage) {			$this->int_pgnum = $this->int_lastpage;		}# if		$this->int_pagenum = $this->int_pgnum;				# Constroi a cláusula das fontes possiveis ambos são opcionais mais se ambos forem presentes eles deve ser combinada		if ($ths->int_rows_por_page > 0) {			$str_limit = 'LIMIT ' .($this->int_pgnum - 1) * $this->int_rows_por_page .',' .$this->int_rows_por_page;		}else{			$str_limit = NULL;		}# if				# Faz a busca no banco de dados.		$str_query = "SELECT * FROM $this->tablename $where_str $limit_str";		$this->result = $this->obj_adodb->Execute($str_query)or trigger_error("SQL", E_USER_ERROR);				# cria um loop para retorna os resultados encontrados		while ($row = $this->result->fields) {			# Armazena conteudo no data_array			$this->arr_data_array[] = $row;						$this->result->MoveNext();		}# while				# Retorna o Array		return $this->arr_data_array;		}# function			/*	 * @author	Erick Leão	 * @date	22/02/2007	 * @param	array	$fieldarray pega as informações de um POST ou Array	 * @return	bool	 * @desc	faz a inserção de dados na tabela	 */	public function insertRecord($fieldarray){		$this->arr_error = array();				# Abre uma conexão com o Banco de dados		$this->obj_adodb->Connect(			$this->str_database["host"],			$this->str_database["user"],			$this->str_database["pass"],			$this->str_database["name"]			);				# Verifica a comparação entre as arrays		$fieldlist = $this->arr_fieldlist;		foreach ($fieldarray as $field => $fieldvalue) {			if (!in_array($field, $fieldlist)) {				unset ($fieldarray[$field]);			}# if		}# foreach				# Gera a query insert		$str_query = "INSERT INTO $this->tablename SET ";		foreach ($fieldarray as $item => $value) {			$str_query .= "$item='$value', ";		}# foreach				# retira do final do elemento a ','		$str_query = rtrim($str_query, ', ');				# Executa a query		$this->result = $this->obj_adodb->Execute($str_query)or trigger_error("SQL", E_USER_ERROR);		if($this->obj_adodb->ErrorNo() <> 0){			if($this->obj_adodb->ErrorNo() == 1062){				$this->errors[] = "ID já existente";			}else{				trigger_error("SQL", E_USER_ERROR);			}# if		}# if				return $this->result;			}# function		/*	 * @author	Erick Leão	 * @date	22/02/2007	 * @param	array	$fieldarray pega as informações de um POST ou Array	 * @return	bool	 * @desc	faz a atualização dos dados na tabela	 */	public function updateRecord($fieldarray){		$this->arr_error = array();				# Abre uma conexão com o Banco de dados		$this->obj_adodb->Connect(			$this->str_database["host"],			$this->str_database["user"],			$this->str_database["pass"],			$this->str_database["name"]			);				# Compara as Arrays		$fieldlist = $this->arr_fieldlist;		foreach ($fieldarray as $field => $fieldvalue) {			if (!in_array($field, $fieldlist)) {				unset ($fieldarray[$field]);			}# if		}# foreach				# Gera a query		$str_where  = NULL;		$str_update = NULL;		foreach ($fieldarray as $item => $value) {			if(isset($fieldlist[$item]['key'])){				$str_where .= "$item='$value' AND ";			}else{				$str_update .= "$item='$value', ";			}# if		}# foreach				# Remove ultimos elementos		$str_where  = rtrim($str_where, ' AND ');		$str_update = rtrim($str_update, ', ');				# Executa a query		$str_query = "UPDATE $this->tablename SET $update WHERE $where";		$result = $this->obj_adodb->Execute($str_query)or trigger_error("SQL", E_USER_ERROR);				return $result;			}# function		/*	 * @author	Erick Leão	 * @date	22/02/2007	 * @param	array	$fieldarray pega as informações de um POST ou Array	 * @return	bool	 * @desc	deleta dados de uma tabela	 */	public function deleteRecord($fieldarray){		$this->arr_error = array();				# Abre uma conexão com o Banco de dados		$this->obj_adodb->Connect(			$this->str_database["host"],			$this->str_database["user"],			$this->str_database["pass"],			$this->str_database["name"]			);					$fieldlist = $this->arr_fieldlist;		$str_where = NULL;		foreach ($fieldarray as $item => $value) {			if(isset($fieldlist[$item]['key'])){				$str_where .= "$item='$value' AND ";			}# if		}# foreach				$str_where  = rtrim($str_where, ' AND ');				$str_query = "DELETE FROM $this->tablename WHERE $where";		$result = $result = $this->obj_adodb->Execute($str_query)or trigger_error("SQL", E_USER_ERROR);				return $result;			}# function	}# class?>

No proprio script eu já expliquei tudo pois eu tive que criar isso aqui para o trampo e então já criei ele com um exemplinho embutido e comentado até não querer mais =D

 

Bem espero que gostem.

 

Ainda falta muita coisa esse ai é só um teco do que se pode fazer ... agora eu vou estudar a segunda parte e assim que tiver pronto posto aqui ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa Perfect Lion, @.o, de muito grande ultilidade, show de bola http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.