Class para facilitar Inserção, Delete, Update e Retorno
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 ;)
Discussão (2)
Carregando comentários...