DAO + PDO [RESOLVIDO]

1. DAO + PDO [RESOLVIDO]

cleidson
cleidsondevelope

(usa Outra)

Enviado em 07/06/2011 - 20:11h

Boa noite,
Pessoal, estava estudando e me deparei com DAO e PDO e encontrei algumas dificuldades em encontrar um conteudo que ajude nos estudos, e também fiquei com duvida na parte de camadas
onde tem como GERAL > CONTROLE > DAO> PDO, se puderem me ajudar, agradeço desde já!


  


2. MELHOR RESPOSTA

Paulo
henbran

(usa Debian)

Enviado em 08/06/2011 - 11:34h

http://php.net/manual/en/book.pdo.php

3. exemplo básico

Paulo
henbran

(usa Debian)

Enviado em 08/06/2011 - 08:45h

ACESSO AO BD.
............................................
<?php

class Banco {

public $con;
public $msg;
private $dC;

private $tipo = "mysql";
private $host = "localhost";
private $bd = "nomeDoBanco";
private $user = "usuarioDoBanco";
private $pass = "senhaDoUsuarioDoBanco";

public function conectar() {

$this->tipoBd();
if ($this->con) {
try {
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
$this->msg = "Erro de conexão com o banco de dados: Código: " . $e->getCode() . "Mensagem " . $e->getMessage() . "hora: " . date('H:i:s');
}
} else {
echo "Erro na definição PDO do banco de dados!";
exit;
}
}

private function tipoBd() {

try {
switch ($this->tipo) {
case 'mysql':
try {
$this->con = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->bd, $this->user, $this->pass);
} catch (Exception $exc) {
$this->msg = "Erro de coneção com o banco de dados MySql. " . $exc->getTraceAsString();
}
break;
case 'pgsql':
$this->con = new PDO("pgsql:dbname={" . $this->bd . "};user={" . $this->user . "}; password={" . $this->pass . "};host=" . $this->host);
break;
case 'oci8':
$tns = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" . $this->host . ")(PORT=1521)))(CONNECT_DATA=(SID=" . $this->bd . ")))";
$this->con = new PDO("oci:dbname=" . $tns, $this->user, $this->pass, array(PDO::ATTR_PERSISTENT => true));
break;
case 'mssql':
$this->con = new PDO("mssql:host={" . $this->host . "},1433;dbname={" . $this->bd . "}", $this->user, $this->pass);
break;
}
} catch (Exception $exc) {
echo $exc->getTraceAsString();
exit;
}
}

}
?>
=============================================
EXEMPLO QUE RETORNA UM ARRAY DE CIDADES
...........................................
<?php
require_once ("Banco.php");
class CidadeDao {

public function lstCidade($v) {
$B = new Banco();
$campos = " c.idCidade id,c.nomeCidade descricao,c.idUf,uf.siglaUf";
$condicao = "";
if(($v[idCidade])&&($v[idCidade]!="")) $condicao .= $B->condicaoSql(" c.idCidade=".$v[idCidade], $condicao);
if(($v[idUf])&&($v[idUf]!="")) $condicao .= $B->condicaoSql(" c.idUf=".$v[idUf], $condicao);
if(($v[nomeCidade])&&($v[nomeCidade]!="")) $condicao .= $B->condicaoSql(" c.nomeCidade LIKE '%".$v[nomeCidade]."%'", $condicao);
$sql = "SELECT ".$campos." FROM cidade c ";
$sql .= " INNER JOIN uf ON c.idUf=uf.idUf ".$condicao." ORDER BY c.nomeCidade";
$B->conectar();
try {
$rs = $B->con->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); // ???????
} catch (Exception $exc) {
echo $exc->getMessage();
}

try {
$rs->execute();
} catch (Exception $exc) {
echo $exc->getMessage();
}

//echo $sql;
//echo "registros: ".$rs->rowCount();

$res = $rs->fetchAll(PDO::FETCH_ASSOC);

for ($i= 0; $res[$i]; $i++) {$res[$i][descricao] = utf8_encode($res[$i][descricao]);}
//print_r($res);

return $res;
}

public function lstUf($v) {
$B = new Banco();
$campos = " uf.idUf id,uf.siglaUf descricao,uf.descrUf ";
$condicao = "";
if(($v[idUf])&&($v[idUf]!="")) $condicao .= $B->condicaoSql(" uf.idUf=".$v[idUf], $condicao);
if(($v[siglaUf])&&($v[siglaUf]!="")) $condicao .= $B->condicaoSql(" uf.siglaUf LIKE '%".$v[siglaUf]."%'", $condicao);
if(($v[descrUf])&&($v[descrUf]!="")) $condicao .= $B->condicaoSql(" uf.descrUf LIKE '%".$v[descrUf]."%'", $condicao);
$sql = "SELECT ".$campos." FROM uf ".$condicao." ORDER BY uf.siglaUf";
$B->conectar();
try {
$rs = $B->con->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); // ???????
} catch (Exception $exc) {
echo $exc->getMessage();
}

try {
$rs->execute();
} catch (Exception $exc) {
echo $exc->getMessage();
}
//echo $sql;
//echo "registros: ".$rs->rowCount();

$res = $rs->fetchAll(PDO::FETCH_ASSOC);

//echo var_dump($res);

return $res;
}

public function lstBairro($v) {
$B = new Banco();
$campos = " b.idBairro id,b.nomeBairro descricao,b.idCidade,c.nomeCidade,c.idUf,uf.siglaUf";
$condicao = "";
if(($v[idCidade])&&($v[idCidade]!="")) $condicao .= $B->condicaoSql(" b.idCidade=".$v[idCidade], $condicao);
if(($v[idUf])&&($v[idUf]!="")) $condicao .= $B->condicaoSql(" c.idUf=".$v[idUf], $condicao);
if(($v[idBairro])&&($v[idBairro]!="")) $condicao .= $B->condicaoSql(" b.idBairro=".$v[idBairro], $condicao);
if(($v[nomeBairro])&&($v[nomeBairro]!="")) $condicao .= $B->condicaoSql(" b.nomeBairro LIKE '%".$v[nomeBairro]."%'", $condicao);
$sql = "SELECT ".$campos." FROM bairro b INNER JOIN cidade c ON b.idCidade = c.idCidade";
$sql .= " INNER JOIN uf ON c.idUf=uf.idUf ".$condicao." ORDER BY b.nomeBairro";
$B->conectar();
try {
$rs = $B->con->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); // ???????
} catch (Exception $exc) {
echo $exc->getMessage();
}

try {
$rs->execute();
} catch (Exception $exc) {
echo $exc->getMessage();
}
//echo $sql;
//echo "registros: ".$rs->rowCount();

$res = $rs->fetchAll(PDO::FETCH_ASSOC);
//print_r($res);
for ($i= 0; $res[$i]; $i++) {$res[$i][descricao] = utf8_encode($res[$i][descricao]);}

return $res;
}
}
?>
==========================================
ESTES EXEMPLOS ESTÃO EM PLENO FUNCIONAMENTO ...


4. Resposta

cleidson
cleidsondevelope

(usa Outra)

Enviado em 08/06/2011 - 09:34h

Agradeço desde ja a atenção, e gostaria de saber se vc tem uma apostila que possa disponibilizar falando sobre o assunto mas detalhadamente...
agradeço!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts