Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, olha eu aqui novamente rsrs.
Em outro post, pedi ajuda pois estava começando a criar uma classe com php para aprendizagem. Um colega me ajudou, e disse que seria melhor aprender logo com PDO.
Bom, li bastante a respeito, e realmente é muito bom, não era necessário eu criar classes e funções para conexão sendo que já existe uma.
Seguindo o raciocínio da primeira classe, eu quero o seguinte:
Fazer com que ao instanciar uma classe, seja passado os campos para serem selecionados, a tabela, a clausula, o operador, os casos, e outros parâmetros. Isso tudo para que eu possa fazer select em qualquer tabela. Após isso, seria salvo os dados em array, e depois ao instanciar o objeto, exibiria os dados.
Consegui fazer todo o processo, porém estou com dificuldade na listagem de dados. Peço para que me ajudem, desconsidere os erros ou as "cacas" contidas, estou aprendendo PHPOO, então qualquer crítica construtiva será bem vinda.
Estarei postando a classe conexao, a página de teste para exibição da listagem e a classe do select(Somente colocarei os campos importantes, a parte de validação não estará inclusa).
Conexão.php(Não estarei postando o arquivo .ini, acredito não ser necessário)
abstract class ConexaoBanco
{
private function __construct(){}
public static function open($nomeArquivo){
if(file_exists("{$nomeArquivo}.ini"))
{
$arrayConexao = parse_ini_file("{$nomeArquivo}.ini");
}
else
{
throw new Exception("Arquivo '$nomeArquivo' não encontrado.<br>");
}
$Host = $arrayConexao['Hospedagem'];
$Banco = $arrayConexao['Banco'];
$Usuario = $arrayConexao['Usuario'];
$Senha = $arrayConexao['Senha'];
$Tipo = $arrayConexao['Tipo'];
switch($Tipo){
case 'pgsql':
$conn = new PDO("pgsql:dbname=".$Banco.";user=".$Usuario.";password=".$Senha.";host=".$Host); break;
case 'mysql':
$conn = new PDO("mysql:host=".$Host.";dbname=".$Banco,$Usuario,$Senha); break;
case 'sqlite':
$conn = new PDO("sqlite:".$Banco);
}
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $conn;
}
}
SSQL.class.php(onde recebo os dados, faço a validação e armazenaria os dados para serem mostrados)
class SSQL extends ConexaoBanco{
protected $campoSelecionar;
protected $tabelaSelecionar;
protected $clausulaSelecionar;
protected $operadorSelecionar;
protected $parametroSelecionar;
protected $caseSelecionar;
public function __construct($campoSelecionar,$tabelaSelecionar,$clausulaSelecionar,$operadorSelecionar,$parametroSelecionar,$caseSelecionar){
$this->campoSelecionar = $campoSelecionar;
$this->tabelaSelecionar = $tabelaSelecionar;
$this->clausulaSelecionar = $clausulaSelecionar;
$this->operadorSelecionar = $operadorSelecionar;
$this->parametroSelecionar = $parametroSelecionar;
$this->caseSelecionar = $caseSelecionar;
}
public function BuscarDados(){
// FAÇO VARIAS VALIDAÇÕES DOS CAMPOS INFORMADOS
## ABAIXO Só foi um teste, futuramente vou incluir os dados informados para fazer o selec somente com eles usando BindParam.
$conecta = ConexaoBanco::open('config');
$selectSQL = $conecta->prepare("SELECT * from agenda");
$selectSQL->execute();
if($selectSQL->rowCount() > 0)
{
return $selectSQL->fetchAll(PDO::FETCH_OBJ);
}
else
echo "Não existem cadastros.";
} // function
} // class
Teste.php(onde seria pra exibir os dados)
<?php include_once 'conexao.php'; ?>
<?php include_once 'SSQL.class.php'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$buscar = new SSQL('age_cod, AGe_local','agenda','WHERE','AND','','age_cod:1##.age_local:Teste##.age_data:10/01/1993');
$buscar->BuscarDados();
?>
<p> </p>
</body>
</html>
Bom, não está fazendo efeito nenhum os dados que estou instanciando, pois só quero fazer com que seja impresso o return $selectSQL['age_cod'], $selectSQL['age_local'], etc.
Entenderam o que estou tentando fazer?
Se não, posso tentar explicar melhor. por favor me ajudem, e caso esteja fazendo alguma coias errado, ou totalmente errado rs, me falem.
Muito obrigado novamente.
Carregando comentários...