Autenticação de aplicações do Twitter utilizando OAuth

Resumidamente, este exemplo consiste em criar uma aplicação registrada em uma determinada conta no Twitter e utiliza-la através do protocolo OAuth.
Para isso, inicialmente precisaremos criar a aplicação desejada através do link:
http://dev.twitter.com/apps/new

Ao criar a aplicação, vale ressaltar que todos os campos deverão ser preenchidos, inclusive o campo Callback URL.
Em meu caso: http://www.phpblog.com.br/exemplos/oauth_twitter/callback.php

Após criar a aplicação, o twitter gerará uma série de códigos. Precisaremos dos seguntes:
Consumer key
Consumer secret

Vamos aos downloads:

Arquivos: Aqui
Exemplo: Aqui

Após realizar os downloads, vamos ao código:

Arquivo: config.php

define('CONSUMER_KEY', 'colocar_chave_gerada_pelo_twitter');
define('CONSUMER_SECRET', 'colocar_chave_gerada_pelo_twitter');
define('OAUTH_CALLBACK', 'http://localhost/oauth_twitter/callback.php');

Neste arquivo, iremos colocar as chaves geradas pelo Twitteer, inclusive o CALLBACK URL.
Após este passo, vamos ao nosso arquivo principal.

Arquivo: index.php

/* Carregando Classes. */
session_start();
require_once('twitteroauth/twitteroauth.php');
require_once('config.php');
/* Verificando token */
if (empty($_SESSION['access_token']) || empty($_SESSION['access_token']['oauth_token']) || empty($_SESSION['access_token']['oauth_token_secret'])) {
header('Location: ./clearsessions.php');
}
/* Capturando token da sessão. */
$access_token = $_SESSION['access_token'];
/* Criando o objeto passando os tokens como parâmentro. */
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);
/* Testando a chamada. */
$content = $connection->get('account/verify_credentials');
//Retorna o timeline completo
$timeline = $connection->get('statuses/user_timeline', array('screen_name' => 'blogphp'));
//Atualizar o status
//$connection->post('statuses/update', array('status' => 'Hello PHPBlog'));
print_r($timeline);

/*Outras Chamadas */
//$connection->get('users/show', array('screen_name' => 'abraham')));
//$connection->post('statuses/update', array('status' => date(DATE_RFC822)));
//$connection->post('statuses/destroy', array('id' => 5437877770));
//$connection->post('friendships/create', array('id' => 9436992)));
//$connection->post('friendships/destroy', array('id' => 9436992)));

Pronto.
Este arquivo contém as chamadas que podemos fazer utilizando a nossa classe.

Até Mais (:

Share Button

Empacotando código fonte javascript com PHP

Aos Arquivos:

Download: Aqui
Exemplo: Aqui

Feito isso, vamos ao código:

Arquivo: index.php

<?php

    $treat = false;
    //Verificando o post
    if (isset($_POST['src']))
    {
        //Capturando o fonte
        $script = $_POST['src'];
        //Vericicando magic quotes (aspas) do servidor
        if (get_magic_quotes_gpc())
        {
            $script = stripslashes($script);
        }

        //Capturando dados do post do fomulário
        $encoding = (int)$_POST['ascii_encoding'];
        $fast_decode = isset($_POST['fast_decode']) && $_POST['fast_decode'];
        $special_char = isset($_POST['special_char'])&& $_POST['special_char'];

        //Incluindo a classe JavascriptPacker
        require 'class.JavaScriptPacker.php';

        //Instanciando o objeto
        $packer = new JavaScriptPacker($script, $encoding, $fast_decode, $special_char);
        //Empacotando
        $packed = $packer->pack();        
        $treat = true;
    }
?>

No exemplo, temos um textarea onde colocamos nossas funções javascript.
Abaixo escolhemos algumas opções de criptografia:
Tipo de codificação (Cuidado ao utilizar High ASCII com utf-8)
Decodificação Rápida
Caracteres Especiais

Com isso, ao clicar no botão Codificar teremos abaixo o nosso javascript empacotado.

Exemplificando:

Uma função simples:

function mostraMensagem(msg){
   alert(msg);
}

Empacotando, resultaria em:

eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1 3(0){2(0)}',4,4,'msg|function|alert|mostraMensagem'.split('|'),0,{}))

Um pouco menos claro ao entendimento humano. ehehehe

Usem e abusem.

Até!

Share Button

Enviando e-mails autenticados utilizando PHP (phpmailer)

Vamos aos arquivos

Download: Aqui

Com os arquivos em mãos, vamos a explicação:

Arquivo: index.php

<?php
//Incluindo a classe pgpmailer
require_once('class.phpmailer.php');
//Instanciando o objeto
$mail = new PHPMailer(true);
//Chamando o método que informa que o e-mail será enviado via SMTP
$mail->IsSMTP();
try
{
    //Define que o e-mail será enviado utilizando autenticação
    $mail->SMTPAuth   = true; 
    //Setando o servidor SMTP
    $mail->Host       = "mail.seuservidor.com.br";
    //Porta de saída
    $mail->Port       = 25;
    //Usuário
    $mail->Username   = "user@seuservidor.com.br";
    //Senha
    $mail->Password   = "suasenha";
    //Adicionando endereco de destino
    $mail->AddAddress('paraquemvai@servidor.com.br', 'Nome do Destinatário');
    //Adicionando o endereço de origem
    $mail->SetFrom('email@dequemenviou.com.br', 'Nome de quem Envou');
    //Adicionando o assunto
    $mail->Subject = '[CONTATO] - PHP Blog';
    //Criando a mensagem
    $msg    =    "********** E-MAIL ENVIADO **********

";
    $msg    .=    "Este é um teste de e-mail...";
    //Setando a mensagem ao objeto
    $mail->MsgHTML($msg);
    //Enviando e-mail
    $mail->Send();
} 
catch (phpmailerException $e) 
{
    //Capturando exceções da classe phpmailer
    echo $e->errorMessage();
}
catch (Exception $e) 
{
    //Capturando qualquer exceção
    echo $e->getMessage();
}    
?>

É claro que trata-se de um exemplo simples. Normalmente utilizamos este exemplo e esta classe aliado a algum formulário para capturar os dados do usuário e enviar.

Dúvidas? não? ehehe
Caso afirmativo é só perguntar.

Até!

Share Button

Como criar QRCode em PHP

Antes de mais nada, vamos as referências e créditos…

Fonte: phpclasses.org
Autor: Arturs Sosins – Latvia
Download: Aqui
Demonstração: Aqui

Vamos então a explicação.

Arquivo: index.php

<?
include(“qrcode.php”);

//Instanciando Objeto
$qr = new QRCode();

//Criando QRCode apontando para um link
$qr->createLink(“http://www.phpblog.com.br”);
echo “<p>Gerando Link: http://www.phpblog.com.br</p>”;
echo “<p><img src='”.$qr->get_link().”‘ border=’0’/></p>”;

//Criando QRCode para enviar SMS
$qr->createSms(“07188888888”, “Estou ocupado !!!”);
echo “<p>Enviar SMS para 07188888888 com a mensagem: Estou Ocupado</p>”;
echo “<p><img src='”.$qr->get_link().”‘ border=’0’/></p>”;

//Criando QRCode para um telefone
$qr->createPhone(“07188888888”);
echo “<p>Número de telefone: 07188888888</p>”;
echo “<p><img src='”.$qr->get_link().”‘ border=’0’/></p>”;

?>

Com o exemplo acima, criamos 3 QRCodes. Um contendo um link para http://www.phpblog.com.br, outro para enviar um SMS (mensagem de texto) para o telefone informado com a mensagem informada e o terceiro para realizar uma ligação para un determinado telefone.
A classe qrcode.php dispõe de outros exemplos de QRCode.

Espero que tenham gostado.

Até!

Share Button

Codificando dados no PHP utilizando a função base64_encode

A função que iremos abordar neste post é a base64_encode que trata-se de uma função capaz de codificar os dados.

Mais Informações: Aqui

Então vamos a utilização:

<?php
    $data = 'Bem Vindo ao PHP Blog - Descomplicando Tecnologias';
    $dadosCodificados = base64_encode($data);

    echo 'Dado Limpo: '.$data;
    echo '
';
    echo 'Dado Codificado: '.$dadosCodificados;
?>

Neste trecho de código temos a variável $data que contem o dado aberto.
Utilizando nossa função, transformamos o dado desta variável em outro codificado não decifrável pelo ser humano.

O resultado deste trecho será:

Dado Limpo: “Bem Vindo ao PHP Blog – Descomplicando Tecnologias”
Dado Codificado: “QmVtIFZpbmRvIGFvIFBIUCBCbG9nIC0gRGVzY29tcGxpY2FuZG8gVGVjbm9sb2dpYXM=”

Como trata-se de uma função de codificação, existe como decodificar esse dado.
Para isto, utilizamos a função base64_decode().

    $dataDec = base64_decode($dadosCodificados);
    echo $dataDec;

Com o trecho acima, decodificamos nossa variável.

Como e para que utilizar ?
Algumas muitas vezes (eheheh) precisamos trafegar dados pela URL (capturando variáveis via GET). Muitas das vezes fica fácil manipular e simular erros de página alterando esses dados passados via GET.

Desta forma, com o dado codificado, dificulta esse tipo de ação.

Dúvidas? Perguntem.

Até !

Share Button

Previsão do Tempo utilizando PHP + Yahoo Weather

Primeiramente, devemos pesquisar informações no próprio site do Yahoo.

Exemplo: Aqui

Vamos então a codificação que é muito simples:

<?php

    function retrieveYahooWeather($zipCode="BRXX3272") {
        //URL do yahoo
        $yahooUrl = "http://weather.yahooapis.com/forecastrss";
        //Região d consulta. No caso, Salvador/BA
        $yahooZip = "?p=BRXX3272&u=c";
        //Montando a URL
        $yahooFullUrl = $yahooUrl . $yahooZip;
        //Gerando o objeto utilizando a função do PHP curl_init() e passando a url montada
        $curlObject = curl_init();
        curl_setopt($curlObject,CURLOPT_URL,$yahooFullUrl);
        curl_setopt($curlObject,CURLOPT_HEADER,false);
        curl_setopt($curlObject,CURLOPT_RETURNTRANSFER,true);
        //Executando a função
        $returnYahooWeather = curl_exec($curlObject);
        curl_close($curlObject);
        //Retornando o objeto contendo as informações do tempo
        return $returnYahooWeather;
    }

    try{
        //Aqui está a chamada da função
        $localZipCode = "BRXX3272";
        $weatherXmlString1 = retrieveYahooWeather($localZipCode);
        //Criando o elemento XML de retorno
        $weatherXmlObject1 = new SimpleXMLElement($weatherXmlString1);
        //Capturando condições do tempo
        $currentCondition = $weatherXmlObject1->xpath("//yweather:forecast");
        $currentCondition2 = $weatherXmlObject1->xpath("//yweather:condition");
        //Capturando a temperatura mínima
        $minima = $currentCondition[0]["low"];
        //Capturando a temperatura máxima
        $maxima = $currentCondition[0]["high"];
        //Capturando o código da imagem
        $codeImage = $currentCondition2[0]["code"];
    }
    catch(Exception $e){
        //Realizar alguma coisa... provavelmente o reload
    }
?>

Pronto, feito isso vamos mostrar nossos dados personalizados:

<html>
<?=$maxima ?>ºC
<?=$minima ?>ºC
<img src=”http://l.yimg.com/a/i/us/we/52/<?=$codeImage;?>.gif” border=”0″ />
</html>

Claro que a formatação fica a cargo de cada um.
Lembrando também que a região pode ser passada por parâmetro para a função.

Até

Share Button

Integração do Twitter com PHP

Antes de começar, créditos ao desenvolvedor:

Simon Wippich, www.wippich.org

Vamos lá!

Download: Aqui

Como já havia dito, utilizando a classe twitter.class contida no pacote do download poderemos administrar todas as funções disponíveis no Twitter.

Explicarei algumas.

Arquivo: index.php

<?php
//Incluindo nossa classe
require_once('twitter.class.php');

//Conectando a API do twitter
$Twitter = Twitter::getInstance();
//Setando usuario e senha
$Twitter->setUser('usuario','senha_do_usuario');
//Inserindo novo Tweet
$Twitter->post($mensagemTw);
//Retornando os 10 ultimos tweets
$arrayRetorno = $Twitter->getUserTimeline(10);

//Exibindo o array de retorno
echo '<pre>';
print_r($arrayRetorno);
echo '</pre>';
?>

Vamos lá… Destrinchando o código:

1. Incluímos nossa classe
2. Conectamos a uma determinada conta
3. Após conectato, podemos realizar todas as ações que o twitter disponibiliza.

Neste exemplo, inserimos um novo tweet e retornamos os 10 últimos tweets do usuário.

Em breve mais…

Até !

Share Button

Dicas de sites que facilitam a vida do desenvolvedor

O primeiro, e na minha opinião, o MELHOR de todos é o pForm.
Este é capaz de gerar formulários completos incluindo estilos (CSS) e validação e muito mais. Disponibiliza ainda uma grande combinação de cores e formatos. MUITO BOM !

Para quem não quer perder muito tempo com CSS (folha de estilos), existe o CSS3 Generator.
Capaz de gerar cógidos para classes para diversas funções.

Quem nunca perdeu alguns preciosos minutos ou horas ajustando o formato de retorno de data e hora em banco de dados MySQL?
Pois é! Para isso temos o MySQL Formate Date. Com este, construimos o formato de saída que queremos para retorno.

Muito bom…
Logo logo postarei mais.

Yo !

Share Button

File Browser – Gerenciador de arquivos com PHP e Ajax

Fonte: phpclasses.org
Autor: Ahmed Zamouche – Suiça
Download: Aqui

Vamos lá.

Não vou explicar a classe toda pois o post teria que virar um livro. ehehehe
Vamos então direto ao assunto… como funciona.

Arquivo: browser.php

<?php

    session_start();
    // Desativando erros.
    error_reporting(2048);
    ini_set('display_errors',0);
    ini_set('track_errors',1);

    //Incluindo a classe
    require_once('fileBrowser.class.php');

    //Instanciando o objeto
    $fb = new fileBrowser("uploads","uploadstemp","browser.php",true,"browser_1","Portugues");

    //Setando erros para verdadeiro
    $fb->Errors_reporting = true;

    //Exibindo grid    
    echo $fb->draw();            
?>

Vale lembrar que neste caso, estou colocando a pasta uploads para ser a pasta padrão dos arquivos. Esta pasta precisa está com permissão 777 (permissão total de escrita e leitura) para que funcione.

Em alguns casos precisaremos colocar o caminho absoluto inteiro para funcionar. Vai depender de como o apache esteja configurado.

Abusem !

Até

Share Button

Capturando informações de vídeos do Youtube utilizando PHP

Referência: phpclasses.org
Desenvolvido por: Tiago Kinust Biage – Brasil

Download dos aquivos: Aqui

Com as classes na mão… vamos a explicação:

Arquivo: index.php

<?php
     ini_set('display_errors',1);     
     //Incluindo a classe     
     include "youtube_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>Youtube Class</title>
</head>
<body>
<?
//Instanciando o objeto da classe
$obj = new youtube;
//Definindo a URL do vídeo do youtube
$obj->url = "http://www.youtube.com/watch?v=8B7s01DpBTg";
//Definindo altura e largura do vídeo
$obj->player("480","385");

//Capturando e imprimindo os dados referentes ao vídeo
print '<br>';
print $obj->url2id();
print '<br>';
print $obj->url2id_("http://www.youtube.com/watch?v=TNMpa5yBf5o&feature=channel");
print '<br>';
print $obj->thumb_url("maior");
print '<br>';
print $obj->thumb_url();
print '<br>';
print $obj->thumb();
print '<br>';
print $obj->thumb("maior");
print '<br>';
$info = $obj->info();
print $info["titulo"];
print '<br>';
print $info["descricao"];
print '<br>';
print $info["views"];
print '<br>';
print $info["tempo"];
print '<br>';
print $info["estrelas"];
print '<br>';

//Realizando busca nos vídeos do youtube
$busca = $obj->busca("alice wonders");
foreach($busca as $campo => $valor)
{
foreach($valor as $campo2 => $valor2)
{
print $campo2.' = '.$valor2.'<br>';
}
print '--------------<br>';
}

?>
</body>
</html>

Extremamente simples e útil para trabalhar em conjunto com um dos maiores portais de vídeos do mundo.

Espero que gostem !

Até

Share Button

Criando Thumbnails dinâmicamente utilizando PHP

Vamos ao que interessa.

Arquivos: Download

Utilizaremos a classe cCropImage conforme abaixo:

Arquivo: cCropImage.php

<?php
    class cCropImage{
        var $imgSrc,$myImage,$cropHeight,$cropWidth,$x,$y,$thumb;

        function setImage($image)
        {
            //Sua Imagem
            $this->imgSrc = $image; 

            //Capturando as dimensões da imagem
            list($width, $height) = getimagesize($this->imgSrc); 

            //Criando a imagem
            $this->myImage = imagecreatefromjpeg($this->imgSrc) or die("Erro: Não foi possível encontrar a imagem!"); 

            if($width > $height) 
            {
                $biggestSide = $width; //Procurando pelo maior (largura ou altura)
            }
            else
            {
                $biggestSide = $height; 
            }

            //Proporção do crop
            $cropPercent = .5; // Esta proporção gerará um zoom de 50% (crop)
            $this->cropWidth   = $biggestSide*$cropPercent; 
            $this->cropHeight  = $biggestSide*$cropPercent; 

            $this->x = ($width-$this->cropWidth)/2;
            $this->y = ($height-$this->cropHeight)/2;
        }

        function createThumb()
        {
            $thumbSize = 60; // Definição do tamanho do thumbnail
            $this->thumb = imagecreatetruecolor($thumbSize, $thumbSize); 
            imagecopyresampled($this->thumb, $this->myImage, 0, 0,$this->x, $this->y, $thumbSize, $thumbSize, $this->cropWidth, $this->cropHeight); 
        }  

        function renderImage()
        {
            header('Content-type: image/jpeg');
            imagejpeg($this->thumb);
            imagedestroy($this->thumb); 
        }  
    }  
?>

Para Instanciar a classe, utilizaremos outro script php:

Arquivo: inc_cropimagem.php

<?php
    //Incluindo a classe
    include('cCropImage.php');

    //Capturando a imagem passada via get
    $src = $_GET['src'];

    if($src)
    {
        //Criando e renderizando a imagem
        $image = new cCropImage;
        $image->setImage($src);
        $image->createThumb();
        $image->renderImage();
    }
?>

E por fim, nosso arquivo que chamará e exibirá nossa imagem com o thumbnail gerado.

Arquivo: index.php

<?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>PHP Blog - Criando Thumbnails</title>
</head>

<body>
<span>Imagem Original:</span><br />
<img src="ovos.jpg">
<br /><br />
<span>Imagem Thumbnail:</span><br />
<img src="inc_cropimagem.php?src=ovos.jpg">
</body>
</html>
?>

Note que no src da imagem, passamos o arquivo inc_cropimagem.php e o parâmetro src que é a imagem original.

Pronto! Chega de mandar mais de uma imagem para o servidor.

Até !

Share Button

Alarme de funcionamento para servidores de banco de dados utilizando PHP

Referência: phpclasses.org
Desenvolvido por: Alexander Selifonov – Russia
Traduzido por: Leandro Prudente – phpblog.com.br

Download dos arquivos: Aqui

Vamos então direto ao nosso php já que nosso querido Alexander Selifonov desenvolveu esta bela classe.

<?php

    // Importando a Classe
    require_once('as_dbserver_check.php');

    // Instanciando o objeto da classe CDbChecker
    $srv = new CDbChecker('Testando Servidores','./',"Servidor Fora do ar !!!");

    // Inserindo os e-mails do administrador e do suporte
    $srv->SetEmails('email@doadministrador.com.br','email@dosuporte.com.br');

    // Adicionando servidor MySQL
    $srv->AddServer(DBTYPE_MYSQL,'localhost','usuario_db','senha_db');

    //Verificando o servidor
    $srv->CheckDbState();

?>

Com isso, podemos saber exatamente a hora em que um servidor de banco de dados parar e não aguardar uma ligação desagradável.

Até !

Share Button

Como ler arquivos JSON com PHP

Neste exemplo faremos uma consulta nos “trends” (palavras mais ditas no twitter) com retorno no formato JSON.

Codificando:

Através do link http://api.twitter.com/1/trends.json obtemos o nosso arquivo .json

O arquivo json que retorna contém a seguinte estrutura:

{"trends":[
    {"name":"Hup Holland Hup","url":"http://search.twitter.com/search?q=Hup+Holland+Hup"},

    {"name":"Frida Kahlo","url":"http://search.twitter.com/search?q=Frida+Kahlo"},
    {"name":"Cedric Diggory","url":"http://search.twitter.com/search?q=Cedric+Diggory"},
    {"name":"Mick Jagger","url":"http://search.twitter.com/search?q=Mick+Jagger"},
    {"name":"Diego Forlan","url":"http://search.twitter.com/search?q=Diego+Forlan"},
    {"name":"Pulpo Paul","url":"http://search.twitter.com/search?q=Pulpo+Paul"},
    {"name":"Maybach Music","url":"http://search.twitter.com/search?q=Maybach+Music"},
    {"name":"Felipe Melo","url":"http://search.twitter.com/search?q=Felipe+Melo"},
    {"name":"#uru","url":"http://search.twitter.com/search?q=%23uru"},
    {"name":"Holanda","url":"http://search.twitter.com/search?q=Holanda"}
    ],
"as_of":"Tue, 06 Jul 2010 20:26:30 +0000"}

Destrinchando:

Retorna um array com nome trends.
Dentro desse array temos “duas variáveis”: name e url

Com esse arquivo em mãos, vamos ao php.

Arquivo: index.php

<?php
    //Criando a url para o aquivo json
    $jsonurl = "http://search.twitter.com/trends.json";

    //Retorna o conteudo do arquivo em formato de string
    $json = file_get_contents($jsonurl,0,null,null);

    //Decodificando a string e criando o json
    $json_output = json_decode($json);

    //Loop para percorrer o json capturando os dados
    foreach ( $json_output->trends as $trend )
    {
        echo ''.$trend->name.'
';
    }
?>

Com esta lógica podemos tratar facilmente dados dentro de um JSON utilizando a nossa querida e rica linguagem PHP.

Usem e abusem.

Até!

Share Button

Conexão do PHP com Banco de Dados PostgreSQL

Seguindo o padrão de OO (Orientação a Objetos) vamos criar uma classe para fazer a conexão com o banco de dados PostgreSQL.

Neste exemplo vou simplificar… creio que todos leram o post anterior e já possuem o banco de dados criado no PostgreSQL com os mesmos campos.

Relembrando:

Tabela: editoria
Campos:
ideditoria, nome, descricao

Para iniciar, criaremos o a classe:

Arquivo: cPostgreDB.php

<?php
    class cPostgreDB
    {
        var $host;
        var $username;
        var $password;
        var $port;
        var $dbname;
        var $error = null;
        var $dbconnect;
        var $query;
        var $result;
        var $oid = null;
        var $oid_res;
        var $persistent;

        function cPostgreDB($DB="banco_de_dados", $Host="localhost", $PgPort=5432, $User="usuario_do_banco", $pass="senha_do_banco", $persist=0)
        {
            $this->host=$Host;
            $this->dbname=$DB;
            $this->username=$User;
            $this->password=$pass;
            $this->port=$PgPort;
            $this->persistent=$persist;
            $this->Connect();
        }

        function Connect()
        {
            $connect="host=".$this->host." port=".$this->port." dbname=".$this->dbname." user=".$this->username;
            if (!empty($this->password))
                $connect.=" password=".$this->password;
            if ($this->persistent)
                $this->dbconnect=pg_pconnect ($connect);
            else
                $this->dbconnect=pg_connect ($connect);
            if (!$this->dbconnect)
                $this->error="cannot connect to database ".$this->dbname;
        }
        
        function fechaConn()
        {
            pg_close($this->dbconnect);
        }

        /// Realizando ações no banco
        
        function retornaEditorias()
        {
            $query         =     "select * from editoria;";
            $result         =     @pg_query($query);
            if (!$result)
                return false;
            else
                return $result;
        }

        function insereEditoria($nome, $descricao)
        {
            $query         =     "insert into editoria (nome, descricao) values ('$nome', '$descricao');";
            $result         =     @pg_query($query);
            if (!$result)
                return false;
            else
                return $result;
        }

?>

Em ambiente de desenvolvimento, aconselho utilizar a linha abaixo:
$result = @pg_query($query) or die (“ERRO DE BANCO:
“.pg_last_error());

Neste caso, ocorrendo algum erro, teremos como visualiza-lo.

Criada a nossa classe, vamos ver como fica o arquivo para acessar os dados:

Arquivo: teste.php

<?php
       //Incluindo minha classe
       include_once('cPostgreDB.php');
       
       //Instanciando o objeto da classe
       $dados = new cPostgreDB();

      $retDados = $dados->retornaEditorias();
      while ($retorno = pg_fetch_array($retDados))
      {
            $ideditoria= $retorno['ideditoria'];
            $nome= $retorno['nome'];
            $descricao= $retorno['descricao'];

            echo 'Id: '.$idcategoria.'
'; echo 'Nome: '.$nome.'
'; echo 'Descrição: '.$descricao.'
'; } //Inserindo dados $dados ->insereEditoria('Nome da Editoria', 'Descrição da editoria teste'); ?>

Com este outro exemplo, vimos outra alternativa para utilizar banco de dados PostgreSQL com conceito OO e, mais uma vez, podemos separar comandos SQL de páginas php.

Espero ter ajudado.

Até !

Share Button

Conexão do PHP com Banco de Dados MySQL

Existem diversas formas de criar conexões entre bancos de dados MySQL e PHP. Hoje mostrarei uma forma simples, segura que elimina códigos e scripts SQL no corpo das páginas php.

Para iniciar, precisaremos criar um banco de dados e suas tabelas.

Script Banco de Dados (MySQL):

CREATE DATABASE IF NOT EXISTS teste_php_my;
USE teste_php_my;

DROP TABLE IF EXISTS `editoria`;
CREATE TABLE `editoria` (
  `ideditoria` int(10) unsigned NOT NULL auto_increment,
  `nome` varchar(100) NOT NULL,
  `descricao` text NOT NULL,
  PRIMARY KEY  (`ideditoria`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Com o banco de dados criado, passamos a Classe PHP responsável por conectar no banco e realizar as ações de inserir, alterar, excluir e retornar.

Arquivo: conectaBanco.php

<?php 
    class conectaBanco
    {
        var $conect;
        function conectaBanco()
        {

        }

        function getCon()
        {
            return $this->conect;
        }

        function conectar($servidor, $usuario, $senha, $banco) 
        {
            if(!($con=@mysql_connect($servidor, $usuario, $senha)))
            {
                echo"Erro ao conectar a Base de Dados !!";
                echo mysql_error();
                exit();
            }
            if (!@mysql_select_db($banco, $con)) 
            {
                echo "Erro em selecionar a Base de dados !!";
                echo mysql_error(); 
                exit();
            }
            $this->conect=$con;
            return true;    
        }
    }
?>

Este arquivo será responsável realizar a conexão com o banco de dados.
Após esta etapa, criaremos o arquivo (classe) responsável por executar as ações (métodos).

Arquivo: cBancoDados.php

<?php
    include_once("conectaBanco.php");

    class cBancoDados{
        function cBancoDados(){
            $servidor = "localhost";
            $usuario = "nome_do_usuario_do_banco";
            $senha = "senha_do_banco";
            $banco = "teste_php_my";

            $con = new conectaBanco;
            $con->conectar($servidor, $usuario, $senha, $banco);
        }

        function retornaEditorias(){
            $query         =     "select * from editoria;" ;
            $result         =     @mysql_query($query) or die (mysql_error());
            if (!$result)
                return false;
            else
                return $result;
        }

        function retornaEditoria($id){
            $query         =     "select * from editoria where ideditoria = $id;" ;
            $result         =     @mysql_query($query) or die (mysql_error());
            if (!$result)
                return false;
            else
                return $result;
        }

        function insereEditoria($nome, $descricao){
            $query         =     "insert into editoria (nome, descricao) values ('$nome', '$descricao')" ;
            $result         =     @mysql_query($query) or die (mysql_error());
            if (!$result)
                return false;
            else
                return $result;
        }

        function excluiEditoria($id){
            $query         =     "delete from editoria where ideditoria = $id;" ;
            $result         =     @mysql_query($query) or die (mysql_error());
            if (!$result)
                return false;
            else
                return $result;
        }

        function alteraEditoria($id, $nome, $descricao){
            $query         =     "update editoria set nome = '$nome', descricao = '$descricao' where ideditoria = $id;" ;
            $result         =     @mysql_query($query) or die (mysql_error());
            if (!$result)
                return false;
            else
                return $result;
        }

    }
?>

Os métodos da classe cBancoDados que são responsáveis por realizar as ações e os scripts SQL.

Agora vamos ao arquivo onde criaremos o objeto e chamaremos os métodos para realizar as ações.

Arquivo: teste.php

<?php
    include_once('cBancoDados.php');

    // Instanciando o objeto de cBancoDados - obtemos a conexão com o banco.
    $dados = new cBancoDados;

   //Realizando uma chamada ao objeto - executamos o script sql do metodo retornaEditorias()
   //O array $dadosRetorno contém o resultset com o resultado da consulta sql
   $dadosRetorno= $dados->retornaEditorias();

   //Percorrendo o resultser e exibindo dados de retorno
   while ($retorno = mysql_fetch_array($dadosRetorno)){
            $ideditoria= $retorno['ideditoria'];
            $nome= $retorno['nome'];
            $descricao= $retorno['descricao'];

            echo 'Id: '.$idcategoria.'
';
            echo 'Nome: '.$nome.'
';
            echo 'Descrição: '.$descricao.'
';

   }

   //Inserindo dados
   $dados ->insereEditoria('Nome da Editoria', 'Descrição da editoria teste');
?>

Com este exemplo vimos que podemos separar completamente os scripts SQL das páginas html e php. Além de ficar mais simples a manutenção podemos reutilizar diversos métodos em diversos pontos diferentes da aplicação web.

Espero que tenha ajudado…

Até Mais (:

Share Button