Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Gostaria que vcs avaliassem uma class que desenvolvi....
Preciso de opiniões de como melhorar... etc...
Segue:
PAGINA connectar_mysql.class.php
<?PHP#-------------------------------------##CONECTA no MYSQL##--------------------------------------#AUTOR: Richard Daros#CONTATO: richard@sistemasphp.com.br#DATA: 11/08/2006#FUNCIONALIDADES:[code]#Class Abre uma conexão com o Banco de Dados Mysql e Logo quando Instanciada...#ATRIBUTOS DA CLASS:# var $servidor_db ="localhost";//nome do Servidor ou IP, dns.. Geralmente é localhost# var $usuario_db ="";//nome do Usuario# var $senha_db ="";//nome do DB# var $banco_dados_db ="";//nome do DB# var $conecta;//variavel de conexão//-----------------------------METODOS-------------------------------------///#function DB(){ FAZ CONEXÃO COM BANCO DE DADOS#function executarSql($SQL) EXECUTA UM COMANDO SQL #function insertSql($TABELA,$arrCAMPOS,$consCampo,$condSelectWhere){ faz insert na tabela... se o atributo $consCampo tiver com um valor diferente de vazio faz a consulta na tabela para ver se ja existe o registro se existir não grava , se não existir grava... esse atributo pode ser omitido. colocando '' vazio... se tiver mais de um campo pode colocar no atributo $condSelectWhere AND ou OR caso contrario coloque '' vazio#function updateSql($TABELA,$arrCAMPOS,$camposWhere) faz update na tabela o atributo $camposWhere não pode ser omitido... se tiver mais de um campo no atributo $camposWhere é obrigatorio colocar no AND ou OR no atributo $condicaoWhere caso não tenha mais de um campo pode colocar na $condicaoWhere '' vazio#function excluirSql($TABELA,$arrCAMPOS,$campoWhere){ deleta um array de registros ou apenas um registro #//----------------------------FIM DOS METODOS-----------------------------///class DB{ var $servidor_db ="localhost";//nome do Servidor ou IP, dns.. Geralmente é localhost var $usuario_db ="root";//nome do Usuario var $senha_db ="";//nome do DB var $banco_dados_db ="teste_libs_richard";//nome do DB var $conecta;//variavel de conexão//--------------------------- METODO PARA CONECTAR NO BANCO DE DADOS ------------------------------ function DB(){ // tenta fazer conexão if(@$this->conecta = mysql_pconnect($this->servidor_db,$this->usuario_db,$this->senha_db)){// conexão persistente $resultado = mysql_select_db($this->banco_dados_db,$this->conecta);//seleciona o banco if(!$resultado){ $retorno = '0';//retorna 0 se der erro de conexão echo" Erro ao Conectar: ".mysql_error($this->conecta); }else{ $retorno = $this->conecta; } }else{//caso não consiga fazer conexão $retorno = "0";//retorna 0 se der erro de conexão echo" Verifique se os dados de conexão estão corretos..... "; } return($retorno); }//---------------------- FIM DO METODO QUE FAZ CONEXÃO COM BANCO DE DADOS ------------------------//----------------------- METODO PARA EXECUTAR SQL ----------------------------------------------- function executarSql($SQL){ //SQL é o camando sql para executar com mysql_query $retorno = mysql_query($SQL,$this->conecta); if(!$retorno){ echo" Erro ao tentar executar o Select = ".mysql_error($this->conecta); $retorno = '0'; } return($retorno); }//-----------------------FIM DO METODO PARA EXECUTAR SQL -------------------------------------//----------------------- METODO PARA INSERIR UMA LINHA NA TABELA--------------------------- function insertSql($TABELA,$arrCAMPOS,$consCampo,$condSelectWhere){ //$TABELA nome da tabela que vai fazer o insert // $arrCAMPOS array com campos para fazer insert //$consCampo nome do campo para pesquizar caso aja um registro igual ja cadastrado não cadastra outro.. pode conter mais de um campo ...caso queira colocar mais de um campo separe o campo por virgula exempl: insertSql('nome_tabela','arraydeCamposParaInsert','campo1,campo2,'); //$condSelectWhere condição para fazer a consulta.. pode ser AND ou OR if($retornos = $this->executarSql("SHOW COLUMNS FROM $TABELA")){//consulta as colunas existentes na tabela $contador01 = 0;//zera o contador while ($contador01 < mysql_num_rows($retornos)){ $nome_coluna = mysql_fetch_row($retornos);//pega os campos da tabela $campos[$nome_coluna[0]] = $nome_coluna[0];//grava os nomes dos campos em um array $contador01++;//soma 1 ao contador }//-------------------------------------começa a consulta ------------------------------------- @$cons_campos = explode(",",$consCampo);//divide os dados passados em array @$conta_campos = count($cons_campos);//conta quantos dados tem no array //print_r($cons_campos); if( $conta_campos > 1 ){// caso o contador seja maior que 1 começa a montar o select $select = "SELECT * FROM $TABELA WHERE ";//começa a montar o select for( $i = 0; $i < $conta_campos; $i++){//faz um for para continuar montando o select foreach($arrCAMPOS as $chave10 => $valor10){// compara o campo do array com o campo que foi passado pelo form if($chave10 == $cons_campos[$i]){//se o campo do array for igual ao campo da consulta adiciona no select $select .= $cons_campos[$i]."='".$valor10."' $condSelectWhere ";//gera o resto do select }//fim do if }//fim do foreach }// fim do for $select = substr($select, 0, (strlen($select)-4));// corta o ultimo AND ou OR //echo $select;//exibe o select na tela $resultc = $this->executarSql($select);// faz a consulta @$result_cons = mysql_num_rows($resultc);//pega o numero de linhas que tiver }elseif($consCampo!=""){ $select = "SELECT * FROM $TABELA WHERE ";//começa a montar o select //echo $cons_campos[0]; foreach($arrCAMPOS as $chave10 => $valor10){// compara o campo do array com o campo que foi passado pelo form if($chave10 == $cons_campos[0]){//se o campo do array for igual ao campo da consulta adiciona no select $select .= $cons_campos[0]."='".$valor10."'";//gera o resto do select }//fim do if } //echo $select;//exibe o select na tela $resultc = $this->executarSql($select);// faz a consulta $result_cons = mysql_num_rows($resultc);//pega o numero de linhas que tiver }else{ $result_cons = '0'; }//--------------------------------------fim da consulta -------------------------------------- if($result_cons!=0){//verifica se o registro ja existe echo '<script language="javascript" type="text/javascript"> <!-- alert("Este Registro Já Existe!!!"); //--> </script>'; }else{ $sql = "INSERT INTO $TABELA VALUES(";//começa o sql do insert foreach( $campos as $chave1 => $valor1){//pega os atributos de um campo de uma tabela.... exemplo nome.. etc //echo $chave1."<br>";// para visualizar oque tem em mysql_fetch_assoc foreach($arrCAMPOS as $chave2 => $valor2){ //echo $key2."<br>"; if($chave2==$chave1){// quando o nome de um campo da tabela for igual ao campo de um formulario grava no sql o valor do campo $sql .="\"$valor2\",";//adiciona os valores na para inserção } } } $sql{(strlen($sql)-1)} = ");";//apaga o ultimo caractere //echo $sql;// para visualizar oque tem no sql. $resultado = $this->executarSql($sql); if($resultado){//em caso de sucesso echo '<script language="javascript" type="text/javascript"> <!-- alert("Registro cadastrado com Sucesso!!!"); window.location="'.$_SERVER['PHP_SELF'].'?id='.mysql_insert_id().'"; //--> </script>'; }else{// em caso de erro echo '<script language="javascript" type="text/javascript"> <!-- alert("Não foi possível Inserir o Registro no Banco de Dados!!!"); //--> </script>'; } } return($resultado); } }//-----------------------FIM DO METODO NSERIR UMA LINHA NA TABELA---------------------------//----------------------- METODO PARA FAZER UPDATE EM UMA LINHA NA TABELA---------------------- function updateSql($TABELA,$arrCAMPOS,$camposWhere,$condicaoWhere){ // $TABELA nome da tabela que será feito o Update // $arrCAMPOS array de campos que vai fazer o update //$camposWhere campos que vai no WHERE do update .. obs: tem que estar separados por virgula(,) exemplo: "campo1,campo2" // $condicaoWhere condição para fazer o update... AND ou OR essa condição vai na parte WHERE if($retornos = $this->executarSql("SHOW COLUMNS FROM $TABELA")){ $contador01 = 0;//zera o contador while ($contador01 < mysql_num_rows($retornos)){ $nome_coluna = mysql_fetch_row($retornos);//pega os campos da tabela $campos[$nome_coluna[0]] = $nome_coluna[0];//grava os nomes dos campos em um array $contador01++;//soma 1 ao contador } //print_r($campos); $sql = "UPDATE $TABELA SET ";//começa o sql do insert foreach( $campos as $chave1 => $valor1){//pega os atributos de um campo de uma tabela.... exemplo nome.. etc //echo $chave1."<br>";// para visualizar oque tem em mysql_fetch_assoc foreach($arrCAMPOS as $chave2 => $valor2){ //echo $chave2."<br>"; if($chave2==$chave1){// quando o nome de um campo da tabela for igual ao campo de um formulario grava no sql o valor do campo $sql .=" $chave1='".$valor2."',";//adiciona os valores na para inserção } } }// $sql{(strlen($sql)-1)} = " ";//apaga o ultimo caractere //echo $sql;// para visualizar oque tem no sql.//-------------------------------------começa a Parte WHERE ------------------------------------- @$cons_campos = explode(",",$camposWhere);//divide os dados passados em array @$conta_campos = count($cons_campos);//conta quantos dados tem no array //print_r($cons_campos); if( $conta_campos > 0 ){// caso o contador seja maior que 1 começa a montar o select $sql .= " WHERE ";//começa a montar o select for( $i = 0; $i < $conta_campos; $i++){//faz um for para continuar montando o select foreach($arrCAMPOS as $chave10 => $valor10){// compara o campo do array com o campo que foi passado pelo form if($chave10 == $cons_campos[$i]){//comentario de cima //echo $chave10; $sql .= $cons_campos[$i]." = '".$valor10."' $condicaoWhere ";//gera o resto do select }//fim do if }//fim do foreach*/ }// fim do for $sql = substr($sql, 0, (strlen($sql)-4));// corta o ultimo AND ou OR que ta na variavel $condicaoWhere $sql .=" LIMIT 1"; //echo $sql;//exibe o select na tela }elseif($consCampos!=""){ foreach($arrCAMPOS as $chave10 => $valor10){// compara o campo do array com o campo que foi passado pelo form if($chave10 == $cons_campos[$i]){//comentario de cima //echo $chave10; $sql .= " WHERE ";//começa a montar o select $sql .= $cons_campos." = '".$valor10."' LIMIT 1 ";//gera o resto do select }//fim do if }//fim do foreach*/ } $resultc = $this->executarSql($sql);// faz a consulta//--------------------------------------fim da consulta -------------------------------------- if(mysql_affected_rows()>0){//em caso de sucesso echo '<script language="javascript" type="text/javascript"> <!-- alert("Registro Alterado com Sucesso!!!"); window.location="'.$_SERVER['PHP_SELF'].'?id='.$_POST['id'].'"; //--> </script>'; }else{// em caso de erro echo '<script language="javascript" type="text/javascript"> <!-- alert("Não foi possível Alterar o Registro!!!"); //--> </script>'; } return($resultado); }else{ echo '<script language="javascript" type="text/javascript"> <!-- alert("Erro no Where do Update!!!"); //--> </script>'; } }//-----------------------FIM DO METODO UPDATE UMA LINHA NA TABELA---------------------------//----------------------- METODO PARA DELETAR UMA LINHA NA TABELA--------------------------- function excluirSql($TABELA,$arrCAMPOS,$campoWhere){ #atributo $TABELA nome da tabela #$arrCAMPOS um array com os ids dos quegistros que vai excluir ou uma string com apenas um registro para excluir #$campoWhere campo que vem depois do where... este campo é que vai ser excluido.. if( $campoWhere == 1 && count($arrCAMPOS) > 1){// para funcionar o delete o campo $campoWhere tem que ter um valor foreach($arrCAMPOS as $chave11 => $valor11){//lista o array que vai ser excluido if($valor11!="" && $chave11 == $campoWhere){ $select = "DELETE FROM $TABELA WHERE ";//começa a montar o sql $select .= $campoWhere."='".$valor11."' LIMIT 1 ";//gera o resto do sql //echo $select;//exibe o select na tela $resultc = $this->executarSql($select);// executa o sql } } }else{ $select = "DELETE FROM $TABELA WHERE ";//começa a montar o sql $select .= $campoWhere."='".$arrCAMPOS."' LIMIT 1 ";//gera o resto do sql //echo $select;//exibe o select na tela $resultc = $this->executarSql($select);// executa o sql } if(mysql_affected_rows()>0){//em caso de sucesso echo '<script language="javascript" type="text/javascript"> <!-- alert("Registro Excluído com Sucesso!!!"); //--> </script>'; }else{// em caso de erro echo '<script language="javascript" type="text/javascript"> <!-- alert("Não foi possível Excluir o registro o Registro no Banco de Dados!!!"); //--> </script>'; } }//-----------------------FIM DO METODO DELETE UMA LINHA NA TABELA---------------------------}?>
Tabela mysql
CREATE TABLE cadastro ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(100) NULL, email VARCHAR(100) NULL, telefone VARCHAR(20) NULL, PRIMARY KEY(id));
PAGINA formulario.php
<?include("connectar_mysql.class.php");?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title></head><body><?$cDB = new DB();if($_POST['id']!="" && $_POST['nome']!=""){//faz o update $cDB->updateSql('cadastro',$_POST,'id','AND');}elseif($_POST['nome']!="" && $_POST['id']==""){//faz o insert $cDB->insertSql('cadastro',$_POST,'nome,email','AND');}if($_GET['id']!= ""){ $cons = $cDB->executarSql("SELECT * FROM cadastro WHERE id='".$_GET['id']."'"); $linha = mysql_fetch_array($cons);}?><form action="" method="post"> <p>Nome : <input name="nome" type="text" id="nome" value="<?=$linha['nome']?>"/> <br /> E-mail : <input name="email" type="text" id="email" value="<?=$linha['email']?>"/> <br /> Telefone: <input name="telefone" type="text" id="telefone" value="<?=$linha['telefone']?>" /> </p> <p> <input type="submit" value="Submit" /> <input type="hidden" name="id" value="<?=$linha['id']?>"/> <input type="reset" value="Reset" /> </p></form></body></html>
Aguardo a ajuda de vcs.... Abraços
Carregando comentários...