michel pael Postado Outubro 7, 2009 Denunciar Share Postado Outubro 7, 2009 estou com problemas para usar a classe para mysql. o codigo abaixo não retorna os registros. acho que alguma coisa da classe esta errada.include_once("classes/classe_bancodados.inc"); $_bd = new mysql(); $_bd->SetServidor("localhost"); $_bd->SetBanco("mkpael"); $_bd->SetUsuario("mkpael"); $_bd->SetSenha("3vdpm12pkx"); $_bd->SetPorta(3306); $_bd->Conectar(); $_sql = "select * from tbcidades"; $_bd->executaSQL($_sql); $_html = new html(); $_tipos = new tipospadrao(); $_tag1 = new tag($_tipos->getTipo("HTML")); $_body = new tag($_tipos->getTipo("BODY")); $_body->addSubTag(new tag($_tipos->getTipo("P"),null,"Numero de registros retornados pelo SELECT: {$_bd->getNumRows()}")); $_tab = new tag($_tipos->getTipo("TABLE"),Array(new atributo("BORDER",1),new atributo("CELLPADDING",5),new atributo("WIDTH",400))); $_tr = new tag($_tipos->getTipo("TR")); $_tr->addSubTag(new tag($_tipos->getTipo("TD"),null,"Codigo")); $_tr->addSubTag(new tag($_tipos->getTipo("TD"),null,"Nome")); $_tr->addSubTag(new tag($_tipos->getTipo("TD"),null,"Uf")); $_tab->addSubTag($_tr); $_tag1->addSubTag($_body); $_html->addTag($_tag1); $_c=0; while($_d=$_bd->proximo()){ $_det[$_c] = new tag($_tipos->getTipo("TR")); $_det[$_c]->addSubTag(new tag($_tipos->getTipo("TD"),null,$_d['codigo'])); $_det[$_c]->addSubTag(new tag($_tipos->getTipo("TD"),null,$_d['nome'])); $_det[$_c]->addSubTag(new tag($_tipos->getTipo("TD"),null,$_d['uf'])); $_tab->addSubTag($_det[$_c]); ++$_c; } $_body->addSubTag($_tab); echo $_html->toHTML(); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fabianoDeveloper Postado Outubro 7, 2009 Denunciar Share Postado Outubro 7, 2009 Bota a class ai então, e informa a linha de erro meu brotherabraço ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 michel pael Postado Outubro 8, 2009 Autor Denunciar Share Postado Outubro 8, 2009 classe_bancodados.inc<?php /** * Classe Básica para acesso a Banco de dados * @abstract */ abstract class BancoDados { protected $_Tipo = null; // Definido por cada banco de dados protected $_Servidor = 'localhost'; protected $_Porta = 0; protected $_Usuario; protected $_Senha; protected $_Banco; protected $_conn = false; protected $_dataset = false; protected $_numrows = -1; protected $_tupla = false; protected $_posatual = -1; protected $_ultimoerro = ""; protected $_ind_case = CASE_UPPER; abstract public function Conectar(); abstract public function executaSQL($_sql); abstract protected function SetNumRows(); abstract protected function navegainterno($_pos); abstract protected function proximointerno(); abstract public function escapeString($_str); abstract public function getLimit($_arr); abstract protected function SetAffectedRows(); abstract public function multiqueries($_sql); public function SetServidor($_servidor) { $this->_Servidor = $_servidor; } public function SetPorta($_porta) { $this->_Porta = $_porta; } public function SetUsuario($_usuario) { $this->_Usuario = $_usuario; } public function SetSenha($_senha) { $this->_Senha = $_senha; } public function SetBanco($_banco) { $this->_Banco = $_banco; } public function startTransaction() { $this->executaSQL('START TRANSACTION'); } public function commit() { $this->executaSQL('COMMIT'); } public function ROLLBACK() { $this->executaSQL('ROLLBACK'); } protected function isSELECT($_sql,$_res) { $this->_dataset = $_res; if(substr(trim(strtolower($_sql)),0,6)=='select') { $this->SetNumRows(); } elseif(substr(trim(strtolower($_sql)),0,6)!='commit') { $this->SetAffectedRows(); } } public function setCase($_case=CASE_UPPER) { $this->_ind_case = in_array($_case,Array(CASE_LOWER,CASE_NATURAL,CASE_UPPER)) ? $_case : CASE_UPPER; } public function getNumRows() { return $this->_numrows; } public function transforma() { $this->_tupla = $this->_tupla!==false&&$this->_tupla!==null ? array_change_key_case($this->_tupla,$this->_ind_case) : $this->_tupla; } public function navega($_pos=0) { $this->_tupla = false; $this->navegainterno($_pos); $this->_posatual = $_pos; $this->transforma(); return $this->_tupla; } public function primeiro() { return $this->navega(); } public function proximo() { $this->_tupla = false; $this->proximointerno(); $this->_posatual++; $this->transforma(); return $this->_tupla; } public function anterior() { return $this->navega($this->_posatual-1); } public function ultimo() { return $this->navega($this->_numrows-1); } public function getDadosAtual() { return $this->_tupla; } public function getUltimoErro() { return "[{$this->_Tipo}]: {$this->_ultimoerro}"; } public function converteDataToBD($_data) { // $_data Sempre no formato dd-mm-YYYY if(ereg("^([0-9]{1,2})-([0-9]{1,2})-([0-9]{4}).*$",$_data,$_arrdt)!==false) { return sprintf("'%04.4d-%02.2d-%02.2d'",$_arrdt[3],$_arrdt[2],$_arrdt[1]); } return false; } public function converteDataHoraToBD($_dtime) { // $_dtime Sempre no formato dd-mm-YYYY HH:MM:SS if(ereg("^([0-9]{1,2})-([0-9]{1,2})-([0-9]{4})[[:space:]]([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).*$",$_dtime,$_arrdt)!==false) { return sprintf("'%04.4d-%02.2d-%02.2d %02.2d:%02.2d:%02.2d'",$_arrdt[3],$_arrdt[2],$_arrdt[1],$_arrdt[4],$_arrdt[5],$_arrdt[6]); } return false; } public function converteDataToHTML($_data) { // $_data Sempre no formato YYYY-MM-DD if(ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}).*$",$_data,$_arrdt)!==false) { return sprintf("%02.2d-%02.2d-%04.4d",$_arrdt[3],$_arrdt[2],$_arrdt[1]); } return $_data; //false; } public function converteDataHoraToHTML($_dtime) { // $_dtime Sempre no formato YYYY-MM-DD HH:MM:SS if(ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})[[:space:]]([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).*$",$_dtime,$_arrdt)!==false) { return sprintf("%02.2d-%02.2d-%04.4d %02.2d:%02.2d:%02.2d",$_arrdt[3],$_arrdt[2],$_arrdt[1],$_arrdt[4],$_arrdt[5],$_arrdt[6]); } return $_dtime; //false; } } /** * ORACLE class oracle extends BancoDados { public function __construct() { $this->_Tipo = 'oracle'; } public function Conectar() { //oci_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] ) if(($this->_conn=@oci_connect($this->_Usuario,$this->_Senha,$this->_Banco,"american.we8iso8859p1"))===false) { $_e = oci_error(); $this->_ultimoerro = "Erro na Conexão com o Banco de Dados : {$_e['message']}"; } return $this->_conn; } } */ /** * Classe para gerenciamento do banco de dados PostgreSQL (pgsql) * */ class pgsql extends BancoDados { public function __construct() { $this->_Tipo = 'pgsql'; } protected function SetNumRows() { $this->_numrows = ($this->_dataset!==false ? pg_num_rows($this->_dataset) : 0); } public function Conectar() { $_strcon = "host={$this->_Servidor} "; $_strcon.= "dbname={$this->_Banco} "; $_strcon.= "user={$this->_Usuario} "; if($this->_Senha!=NULL&&$this->_Senha!="") { $_strcon.= "password={$this->_Senha} "; } if(is_int($this->_Porta)) { $_strcon.= "port={$this->_Porta}"; } if(($this->_conn = @pg_connect($_strcon))===false) { $_e = error_get_last(); $this->_ultimoerro = "Erro na Conexão com o Banco de Dados : {$_e['message']}"; } return $this->_conn; } public function executaSQL($_sql) { if($this->_conn!==false) { if(($_res=@pg_query($this->_conn,$_sql))===false) { $this->_ultimoerro = "Erro ao Executar o comando {$_sql} : " . pg_last_error(); } else { $this->isSELECT($_sql,$_res); } return $_res; } else { return false; } } protected function navegainterno($_pos) { if(pg_result_seek($this->_dataset,$_pos)!==false) { $this->_tupla = pg_fetch_assoc($this->_dataset); } } protected function proximointerno() { $this->_tupla = pg_fetch_assoc($this->_dataset); } public function escapeString($_str) { return pg_escape_string($this->_conn,$_str); } public function getLimit($_arr) { return " {$_arr['LIMIT']} OFFSET {$_arr['OFFSET']}"; } public function setAffectedRows() { $this->_numrows = ($this->_dataset!==false ? pg_affected_rows($this->_dataset) : 0); } public function multiqueries($_sql) { return $this->executaSQL($sql); } } /** * Classe para gerenciamento do banco de dados MySQL * */ class mysql extends BancoDados { public function __construct() { $this->_Tipo = 'mysql'; } protected function SetNumRows() { $this->_numrows = ($this->_dataset!==false ? $this->_dataset->num_rows : 0); } public function Conectar() { if(($this->_conn = new mysqli($this->_Servidor,$this->_Usuario,$this->_Senha,$this->_Banco,$this->_Porta))===false) { $this->_ultimoerro = "Erro na Conexão com o Banco de Dados : " . mysqli_connect_error(); } return $this->_conn; } public function executaSQL($_sql) { if($this->_conn!==false) { $_sql = str_replace('||','+',$_sql); if(($_res=@$this->_conn->query($_sql))===false) { $this->_ultimoerro = "Erro ao Executar o comando {$_sql} : " . $this->_conn->error; } $this->isSELECT($_sql,$_res); return $_res; } else { return false; } } protected function navegainterno($_pos) { if($this->_dataset!==false) { if($this->_dataset->data_seek($_pos)!==false) { $this->_tupla = $this->_dataset->fetch_assoc(); } } } protected function proximointerno() { if($this->_dataset!==false) { if(($_row=$this->_dataset->fetch_row())===null) { $this->_tupla = false; } else { foreach($this->_dataset->fetch_fields() as $_pos=>$_campo) { $this->_tupla[$_campo->name] = $_row[$_pos]; } } /* $this->_tupla = $this->_dataset->fetch_assoc(); if($this->_tupla===null) { $this->_tupla = false; } */ } } public function escapeString($_str) { return $this->_conn->real_escape_string($_str); } public function getLimit($_arr) { return " {$_arr['OFFSET']},{$_arr['LIMIT']}"; } public function setAffectedRows() { $this->_numrows = ($this->_dataset!==false ? $this->_conn->affected_rows : 0); } public function multiqueries($_sql) { return $this->_conn->multi_query($sql); } } ?>so que não esta aparecendo os registros Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
michel pael
estou com problemas para usar a classe para mysql. o codigo abaixo não retorna os registros. acho que alguma coisa da classe esta errada.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.