Arquivado em: PHP, PostgreSql | Tags: banco de dados, conexao, PHP, postgre, PostgreSql
Tenho visto muito o pessoal procurar artigos e tutoriais sobre PHP e percebi que a busca por banco de dados ainda é pouca. Pensei em mostrar aqui como se conectar à um banco de dados SQL, afinal de contas o PHP apenas para cálculos e comandos de servidor não é tãoooo divertido embora eu ache fascinante!
Veremos como se conectar ao PostgreSql que é o que eu utilizo como SGBD (sistema gerenciador de banco de dados), o pessoal tem utilizado muito o MySql que também é excelente, gosto mais do PostgreSql devido aos padrões mantidos estarem mais próximos do SQL. (Se ainda não tem instalado baixe em PostgreSql).
Bem, o postgre como muitos (ou todos) os SGBD’s devem receber como parâmetros os dados de conexão, tais como, usuário, senha, host, port, base.
No PHP o comando utilizado para conectar-se ao PostgreSql é o pg_connect(“parâmetros”), então nada melhor do que começarmos e iremos fazer isso com uma classe (Classes c/ PHP5) !
O arquivo conexao.class.php (o .class é apenas para identificarmos o arquivo como uma classe).
<?
Class Conexao
{
protected $host = “localhost”;
protected $user = “postgres”;
protected $pswd = “postgres”;
protected $dbname = “teste”;
protected $con = null;
function __construct(){} //método construtor
#método que inicia conexao
function open(){
$this->con = @pg_connect(“host=$this->host user=$this->user
password=$this->pswd dbname=$this->dbname“);
return $this->con;
}
#método que encerra a conexao
function close(){
@pg_close($this->con);
}
#método verifica status da conexao
function statusCon(){
if(!$this->con){
echo “<h3>O sistema não está conectado à [$this->dbname] em [$this->host].</h3>”;
exit;
}
else{
echo “<h3>O sistema está conectado à [$this->dbname] em [$this->host].</h3>”;
}
}
}
?>
Set os valores das variáveis host, user, pswd e dbname
host = geralmente localhost ou seu ip
user = usuário que criou ao instalar o postgre
pwsd = senha do usuário do postgre
dbname = a base que deseja se conectar no postgre
Como eu havia dito pg_connect() é o método PHP que conecta-se ao PostgreSql, o ‘@’ antes do método serve para inibir/ocultar as mensagens de erro do método caso ocorram durante a tentativa de conexao. Você pode retira-la e testa-la informando algum valor incorreto nas variáveis de conexão. Geralmente ocultamos essas mensagens para que um visitante ao acessar seu sistema não veja os parâmetros utilizados ou nomes de váriaveis que você utiliza na conexão, em outras palavras, ocultamos as mensagens por segurança. Existem outras formas de tratar os erros e as mensagens com segurança, mas isso não será abordado aqui. Ao menos nesse post, não!
Os valores contidos como parâmetros em pg_connect() são os valores das variáveis setadas no inicio da classe. Seria interessante criar métodos para setar os valores de variáveis de conexao apenas se você precisasse utilizar mais de um banco (não base, banco) na sua aplicação, para evitar criar 2 classes diferentes poderiamos fazer um método do tipo setUserBanco(), setHostBanco(“localhost 2″), entendeu ? ok!
Mas como trata-se apenas de 1 conexão, seria muitos métodos para pouca coisa!
O método open() retorna o estado da conexao (true ou false), com isso podemos através do método statusCon() saber se a conexao está ativa ou não.
O método close(), como você imaginou encerra a conexao chamando o método PHP pg_close();
Crie agora o arquivo index.php para testarmos a conexao
<?
#incluindo a classe conexao (supondo estar no mesmo diretorio)
include(‘conexao.class.php’);
#instanciando o objeto
$minhaConexao = new Conexao();
#chamada ao metodo open que abra a conexao
$minhaConexao->open();
#verificando o status da conexao
$minhaConexao->statusCon();
#encerrando a conexao
$minhaConexao->close();
#verificando a conexao apos close();
$minhaConexao->statusCon();
?>
É isso pessoal, bem simples e num post futuro veremos como gravar/editar/atualizar/excluir registros de uma tabela usando o PHP e PostgreSql.
Deixei um vídeo tosco mostrando/explicando melhor como funciona essa classe.
Dê uma olhada no vídeo aqui
Abraços,
Rafael Clares
19 Comentários até o momento
Deixe um comentário
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
bom obrigado o artigo me ajudou com algumas duvidas estagio como desenvolvedor de sistema do tribunal de justiça e estou começando desenvolvendo em php e ultilizando postgresql com banco dai algumas duvidas de conexão espero que você esteja sempre atualizando ok valeu…
Comentário por Gustavo stork Setembro 24, 2008 @ 3:29 pmBom dia… Grata pela informação… Muito útil pra mim…
Qualquer dúvida posso perguntar de você?
Tenha um bom dia…
Comentário por Cláudia Luísa W. E. Ribeiro Novembro 4, 2008 @ 3:25 pmCláudia fique à vontade para perguntar, no que for possível lhe ajudarei. Obrigado pelo comentário.
Comentário por Rafael Clares Novembro 4, 2008 @ 6:15 pmaté logo,
Muito bom!
Me clareou bem as coisas!
;D
parabens!
Comentário por salsotto Novembro 25, 2008 @ 2:47 pmrafaael,
Primeiramente muito bom seu artigo, parabens.
Estive lendo seu artigo ref. ao postgree + PHP e no meio da informatica com tantos BD e tanas linguagens de programação, gostaria se possível, uma opinião sua referente ao uso do PHP com o banco Mysql no quesitos:
– O banco suporta muitos registros? Quantos? Ou vc acha que existem bancos gratuitos que fazem melhor que o Mysql?
– A integração de ECF’s, impressoras matriciais e termicas, é descomplicada ou tem alguma linguagem melhor?
era somente isso…
Obrigado desde já!
Comentário por Alexandre Dezembro 19, 2008 @ 10:14 pmOlá Alexandre, obrigado pelo comentário. Cara o MySql eu acho muito bom sim usei por algum tempo até conhecer o PostgreSql, eu particularmente acho o Postgre melhor de trabalhar e o principal motivo por eu continuar utilizando-o é devido à proximidade do padrão SQL. Por exemplo a forma de trabalhar é mais parecida com o padrão e o mySql no meu ver tem bem mais particularidades e prefiro ficar mais proximo do padrão. Acredito que o MySql hoje esteja bem melhor do que quando eu utilizei e depois da Sun te-lo “comprado” … muito nome rola agora em torno do MySql. De toda forma essa é minha opnião de usuário, não tenho dados técnicos que possam dizer qual é melhor, eu simplesmente usei um e usei outro e tirei minhas conclusões… até
Comentário por Rafael Clares Dezembro 22, 2008 @ 10:13 amOlá Rafael, ótimo artigo, muito prático. Fiz exatamente o que você colocou neste artigo. Só que não está apresentando as mensagens, nem de êxito ou problema com a conexão. A página index.php fica em branco. Sabe o que pode ser?
Comentário por Vinicius Fevereiro 10, 2009 @ 11:26 pmVinicius, verifique primeiramente as tags PHP perceba que no código está apenas <? e não <?php … para funcionar com a tag menor é preciso que esteja descomentada a linha short_open_tag no seu PHP.INI.
Comentário por Rafael Clares Fevereiro 11, 2009 @ 10:38 amO arquivo conexao.class.php nesse caso, está no mesmo diretório que o index.php.
Verifique também se seu PHP.INI está habilitado para o PGSQL (Postgre), a linha extension=php_pgsql.dll deve estar descomentada.
Bem, com isso você já tem algumas coisas para verificar…caso não consiga é só perguntar …
abraços
bom estou començando no php e gostaria de saber se para chamar a classe conexão e do mesmo jeito das includes
Comentário por Axel Alexander Abril 3, 2009 @ 12:07 pmAxel, isso mesmo!
Comentário por Rafael Clares Abril 3, 2009 @ 8:19 pmde um include e instancie a classe.
ate mais
Primeriamente, parabéns pelo artigo… Mas comigo aconteceu um erro muito estranho:
Instalei o postgre, crie o usuario, consegui conectar normalmente pelo pg_Admin III, então fui para o php.ini e as extensões do pg estão devidamente descomentadas, também rodei o php_info() e ele retornou: PGLOCALEDIR C:\Program Files\PostgreSQL\8.3\share\locale
ou seja, devidamente instalado.
Mas ao testar a sua classe e script, simplesmente não da erro algum, a página fica em branco… O que poderia ser?
Comentário por Alexandre Abril 3, 2009 @ 3:21 pmAlexandre, retire o @ (arroba) da frente da chamada pg_connect(), o arroba inibe os erros. abraços
Comentário por Rafael Clares Abril 3, 2009 @ 8:11 pmBom Primeiramente Rafael Parabens percebo que vc atende as todas as duvidas coisa que e meio complicado hoje en dia,,, mas vamos la a include eu sei mas instanciar a classe NÂO ainda
Comentário por Axel Alexander Abril 4, 2009 @ 12:14 pmnão me leve a mal e que so Programava em Delphi
e to apanhando do PHPOO ainda até mais
Axel,
Comentário por Rafael Clares Abril 4, 2009 @ 1:00 pmde uma lida no post, as 20 últimas linhas estão justamente mostrando como instanciar o objeto conexao.
Abraços.
bom obrigado Rafael, agora to com outro problema não consigo comfigurar o PHPPGADMIN no xammp e Wim xp eche so pra linux
Comentário por Axel Alexander Abril 6, 2009 @ 1:00 pmAxel, infelizmente não uso o PhpPgAdmin localmente, logo, não tenho como ajuda-lo!
Comentário por Rafael Clares Abril 6, 2009 @ 1:12 pmDê uma olhada no google. Abraços
Mesmo Assim obrigado… ja consegui cara Veleu se alguem aew ta com Dificuldade posso postar a configuração Abraços ate outra divida
Comentário por Axel Alexander Abril 6, 2009 @ 2:34 pmOlá Rafael… blz
Cara quero te dar os parabéns, pelos artigos sobre o PHP OOP, tenho feito alguns projetos mas nenhum orientado a objetos, minha principal duvida era como criar uma conexão através de classes, graças ao seu artigo já posso iniciar os passos para desenvolver aplicações PHP OOP baseado em BD, me disseram que programar orientado a objetos é mais tranquilo, do que criar arquivos individuais por mais extruturados que estejam vc concorda?
eu particularmente quero morrer quando tenho problemas com o header e looping infinitos do php, com PHP OOP este problema seria minimizado?
bom por enquanto é isto, espero que me responda
abs
Comentário por Joelson Junho 18, 2009 @ 7:23 pmJoelson, obrigado pelo comentário, fico feliz que tenha lhe servido.
Quanto à sua pergunta, com certeza OOP é mais tranquilo, na verdade é mais fácil em todos os sentidos, manutenção, reuso, etc…. Eu diria até que é “gostoso” de escrever ha-ha….
Bem, nunca tive problemas com header e looping, eu comecei a utilizar o PHP ja na versão 5 à pouco tempo, talvez eu encontre essas dificuldades que você mencionou, mas até agora não hehe ainda bem!
Comecei a escrever um artigo simples sobre OOP + BD com PHP5 e PostgreSQL mas como não houve nenhum interesse eu meio que dei uma brecada no artigo, também não sou doido né … hahaha
Na próxima semana vou passar para uma segunda etada, dando continuidade no artigo, acho que será algo bem interessante para quem está querendo aprender.
O primeiro é esse:
http://clares.wordpress.com/2009/04/09/php-5-classes-banco-de-dados/
abraços,
Comentário por Rafael Clares Junho 19, 2009 @ 11:23 am