Hoje vou mostrar como fazer conexão no oracle usando o PHP.

Atualizado em:09/01/2018

Caso não tenha configurado o PHP para suporte com a conexão veja o link abaixo antes de continuar;

Linux:

Configurando o PHP para suporte com Oracle usando CentOS 6.3 / Red Hat 6.3

Windows:

Para permitir a biblioteca PHP conectar com o Oracle no windows, é necessário instalar o client do Oracle no computador e configurar o arquivo TNSNAMES.ora.

 

1° passo – O primeiro passo é configurar o PHP. As bibliotecas para conexão com o Oracle.

Localize o arquivo php.ini dentro do diretório de instalação do apache, e em seguida abra usando um editor de texto.

Encontre a linha ;extension=php_oci8.dll e remova o ponto e vírgula no inicio.
Encontre a linha ;extension=php_oracle.dll e remova o ponto e vírgula no inicio.

Caso não encontre as linhas insira no final do arquivo.

2° passo – Agora vamos criar a conexão com o Oracle.

Para conectar no oracle usava-se OCILogon que foi substituido por oci_connect a partir da versão 5.1.2 do PHP.
Vou mostrar como usar as 2 maneiras.

//metodo para se conectar usando versão 4 ou anterior do PHP
//depende da instalação do client do oracle e configuração do arquivo TNS
$conexao_antiga = OCILogon("usuario", "senha", "servico");

//metodo usado a partir do PHP 5.1.2
$conexao = oci_connect('usuario', 'senha', '127.0.0.1/nome_servico');

if (!$conexao) {
    $erro = oci_error();
    trigger_error(htmlentities($erro['message'], ENT_QUOTES), E_USER_ERROR);
exit;
}

Modelo de configuração do arquivo TNS.ORA
O arquivo TNSNAMES.ORA armazena as configurações do servidor e nome da instancia do oracle. Abaixo postei um arquivo com duas configurações base produção e base teste.
Lembrando que ao instalar o oracle client em seu computador é criado um arquivo vazio caso seu arquivo TNS esteja em algum endereço da rede é necessário alterar o caminho no registro do windows.
Diretório padrão do arquivo: C:oracleproduct10.2.0client_1networkADMINtnsnames.ora

# TNSNAMES.ORA Network Configuration File: c:oracleora92networkadmintnsnames.ora
# Generated by Oracle configuration tools.

producao =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = prod)
    )
  )

teste =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = teste)
    )
  )

Modelo de configuração do arquivo de registro “REGEDIT” indicando o diretorio onde esta o arquivo TNS.
Caso seu arquivo de TNS seja armazenado em outro local é necessário atualizar o registro, alterando o TNS_ADMIN para o novo caminho.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_OraClient10g_home1]
"TNS_ADMIN"="C:\oracle\product\10.2.0\client_1\network\ADMIN"

[HKEY_LOCAL_MACHINESOFTWAREORACLE]
"TNS_ADMIN"="C:\oracle\product\10.2.0\client_1\network\ADMIN"

Bem pessoal, basicamente é isto espero que ajude. No próximo artigo vou mostrar como fazer uma consulta no DB Oracle.
Um abraço a todos.

O uso de session ajuda bastante, permite setarmos váriaveis globais para usar em todo o site sem a necessidade de ficar carregando ou obtendo o valor da váriavel atraves do $_GET (usuário.php?ID=123).

Para começar a usar sessão no PHP siga o exemplo abaixo.

crie um arquivo chamado teste1.php

session_start('nome_sessao'); //esse comando deve estar na primeira linha

//você também poderá ativar o buffer usando o comando ob_start que evita alguns erros
ob_start(); //ob_start — Ativa o buffer de saída

//atribuimos a palavra valor para variavel global nome_var_session
$_SESSION['nome_var_session'] = "valor";

Agora para testar crie um segundo arquivo chamado teste2.php

//inicie com o comando session e lembre-se de manter o mesmo nome que atribuiu para  a sessão anterior.
session_start('nome_sessao');

//imprimi a variavel global
echo $_SESSION['nome_var_session'];

Funções para Sessão

* session_cache_expire — Retorna o prazo do cache atual
* session_cache_limiter — Obtém e/ou define o limitador do cache atual
* session_commit — Sinônimo de session_write_close
* session_decode — Decifra dado de sessão de uma string
* session_destroy — Destrói todos os dados registrados em uma sessão
* session_encode — Codifica os dados da sessão atual como uma string
* session_get_cookie_params — Obtém os parâmetros do cookie da sessão
* session_id — Obtém e/ou define o id de sessão atual
* session_is_registered — Descobre se uma variável global está registrada numa sessão
* session_module_name — Obtém e/ou define o módulo da sessão atual
* session_name — Obtém e/ou define o nome da sessão atual
* session_regenerate_id — Atualiza o id da sessão atual com um novo gerado
* session_register — Registrar uma ou mais variáveis globais na sessão atual
* session_save_path — Obtém e/ou define o save path da sessão atual
* session_set_cookie_params — Define os parâmetros do cookie de sessão
* session_set_save_handler — Define a sequência de funções de armazenamento
* session_start — Inicia dados de sessão
* session_unregister — Desregistra uma variável global da sessão atual
* session_unset — Libera todas as variáveis de sessão
* session_write_close — Escreve dados de sessão e termina a sessão

acesse: http://www.php.net/manual/pt_BR/ref.session.php

Olá pessoal,

O PHP tem uma função que verifica se um arquivo ou diretorio existe.

file_exists — Checa se um arquivo ou diretório existe

pode ser usado em vários casos, como exemplo um upload de imagens e arquivos que há necessidade de checar se a pasta onde serão salvos os uploads existe ou verificar se determinada imagem existe.


$arquivo = '/diretorio/arquivo.txt';

if (file_exists($arquivo)) {
    echo "O arquivo $arquivo existe";
} else {
    echo "O arquivo $arquivo não existe";
}

Em um cadastro de pessoas onde poderá ter ou não uma foto cadastrada.


$foto_funcionario = '/fotos/foto.jpg';

if (file_exists($foto_funcionario)) {
    $imagem = $foto_funcionario;
} else {
    $imagem ='/fotos/sem-imagem.jpg';
}

è so você implementar no seu codigo.

Ate a proxima.

Hoje vamos aprender a fazer um Filtro de palavras inapropriadas com substiuição de palavras. Poderá ser implementado no seu sistema de mural de recados, comentários de artigos ou fotos, enfim vamos ao que interessa.

Nessa parte vamos criar uma tabela no banco de dados para armazenar as palavras que queremos filtrar.


CREATE TABLE IF NOT EXISTS `filtro_palavras` (
  `Codigo` int(4) NOT NULL AUTO_INCREMENT,
  `MsgErrada` varchar(200) DEFAULT NULL,
  `MsgCorreta` varchar(200) DEFAULT '--',
  PRIMARY KEY (`Codigo`),
  UNIQUE KEY `MsgErrada` (`MsgErrada`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='armazena filtros de palavras' AUTO_INCREMENT=1 ;

Agora vamos criar a função que vai fazer todo o trabalho.
Crie um arquivo chamado filtro.php e coloque o codigo abaixo.


//conexão com o banco de dados
$conexao = mysql_connect('servidor', 'usuario', 'senha') or die(mysql_error());
//seleciona banco de dados
$db = mysql_select_db('banco', $conexao) or die(mysql_error());

// função para Filtrar palavras inapropriadas
function filtro($mensagem)
{
    if ($mensagem) {
        $resultado = mysql_query("SELECT * FROM filtro_palavras");
        while ($mostra = mysql_fetch_array($resultado)) {
            $mensagem= str_replace($mostra['MsgErrada'], $mostra['MsgCorreta'],  $mensagem);
        }
    }
    return $mensagem;
}
?

Para chamar a função dentro do seu código siga o exemplo abaixo:

//inclue a função
include('filtro.php');

//chama a função
filtro("frase mural recado")

Se tiver alguma duvida, é so postar.

Continuando a primeira aula, vamos gerar a exibição da enquete.

Assista a video aula para entender cada arquivo, estou explicando detalhadamente.

Começando crie um arquivo chamado conexao.php

//este arquivo é responsavel pela conexao do banco de dados
$host = "localhost";
$database = "enquete";
$login_db = "root";
$senha_db = "pass123";

$conexao = mysql_connect ($host, $login_db, $senha_db) or die ("Erro: ".mysql_error());
$db = mysql_select_db($database);

Agora vamos criar o arquvo enquete.php para mostrar nossa enquete.
A imagem abaixo mostra como será o resultado no final.

Enquete

////////////////arquivo enquete_comentar.php


/*
desenvolvido por Fabiano Bento
http://www.fabianobento.com.br
*/
//arquivo CSS de estilos


//java script para validar formulário




//verifica se existe a variavel ACT no GET if(isset($_GET['act'])){ $act = $_GET['act']; switch ($act) { case "escrever": echo "Escreva seu comentário!"; //cria o formulário e envia para o mesmo arquivo e seta avariavel act
Nome:
E-mail:
Cidade:
Estado:
Comentário:

 
//termina o switct break; //verifica se o valor de ACT é igual a inc case "inc": //chama o arquivo de conexao com o banco require_once('inc/conexao.php'); $codigo_enquete = $_POST['codigo_enquete']; $ip = getenv('REMOTE_ADDR'); $provedor = gethostbyaddr($_SERVER['REMOTE_ADDR']); $datahora = date(" Y-m-d H:i:s"); $form_nome = $_POST['nome']; $form_email = $_POST['email']; $form_cidade = $_POST['cidade']; $form_uf = $_POST['uf']; $form_comentario = $_POST['comentario']; $form_btn_comentar = $_POST['btn_comentar']; $enqcStatus = "A"; //grava os dados dentro da tabela enquetes comentarios $sql = " INSERT INTO enquetes_comentarios (`enqcCodigo` ,`enqcCodEnquete` ,`enqcIpEnvio` ,`enqcProvedorEnvio` ,`enqcDtHrEnvio` ,`enqcNome` ,`enqcEmail` ,`enqcCidade` ,`enqcUF` ,`enqcComentario` ,`enqcStatus`)VALUES (' ', '$codigo_enquete', '$ip', '$provedor', '$datahora', '$form_nome', '$form_email', '$form_cidade', '$form_uf', '$form_comentario', '$enqcStatus')"; mysql_query("$sql"); echo ""; echo ""; break; } } ?>

Tela do formulário do arquivo enquete_comentar.php
Tela formulário comentário

Explicando o conteudo e funcionamento de cada arquivo.
*Lembrando que o texto antes da barra é o nome da pasta.

enquete/inc/conexao.php - função que conecta no banco de dados
enquete/enquete.php - este arquivo mostra a enquete com as opções para votar e links para comentar e resultado
enquete/enquete_resultado.php - aqui mostra o resultado da enquete e comentários
enquete/enquete_comentar.php - este é o formulário para envio dos comentarios
enquete/enquete_votar.php - este arquivo recebe os dados do arquivo enquete.php e grava a opções escolhida no banco de dados

Nesta aula, vou ensinar com desenvolver um sistema de enquetes para ilimitadas enquetes.
Primeiro nos vamos criar o banco de dados e as tabelas para armazenar as enquetes, os votos, comentarios, e log de registros os votos.

Assista ao video para entender sobre cada coluna das tabelas

O SQL das tabelas;

//tabela enquetes

CREATE TABLE IF NOT EXISTS `enquetes` (
  `enqCodigo` int(10) NOT NULL AUTO_INCREMENT COMMENT 'codigo da enquete',
  `enqDtCadastro` date NOT NULL COMMENT 'data do cadastro',
  `enqNmEnquete` varchar(200) NOT NULL COMMENT 'pergunta da enquete',
  `enqOpcao1` varchar(150) NOT NULL COMMENT 'resposta 1',
  `enqOpcao2` varchar(150) NOT NULL COMMENT 'resposta 2',
  `enqOpcao3` varchar(150) NOT NULL COMMENT 'resposta 3',
  `enqOpcao4` varchar(150) NOT NULL COMMENT 'resposta 4',
  `enqOpcao5` varchar(150) NOT NULL COMMENT 'resposta 5',
  `enqOpcao6` varchar(150) NOT NULL COMMENT 'resposta 6',
  `enqOpcao7` varchar(150) NOT NULL COMMENT 'resposta 7',
  `enqOpcao8` varchar(150) NOT NULL COMMENT 'resposta 8',
  `enqOpcao9` varchar(150) NOT NULL COMMENT 'resposta 9',
  `enqOpcao10` varchar(150) NOT NULL COMMENT 'resposta 10',
  `enqVotos1` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 1',
  `enqVotos2` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 2',
  `enqVotos3` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 3',
  `enqVotos4` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 4',
  `enqVotos5` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 5',
  `enqVotos6` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 6',
  `enqVotos7` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 7',
  `enqVotos8` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 8',
  `enqVotos9` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 9',
  `enqVotos10` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 10',
  `enqDtInicioExibicao` date NOT NULL COMMENT 'data inicio da exiicao',
  `enqDtFinalExibicao` date NOT NULL COMMENT 'data final da exibicao',
  `enqStatus` enum('A','I') NOT NULL DEFAULT 'A' COMMENT 'ativo ou inativo',
  PRIMARY KEY (`enqCodigo`,`enqNmEnquete`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Entidade para os dados das enquetes' AUTO_INCREMENT=1 ;


//tabela enquetes_comentarios

CREATE TABLE IF NOT EXISTS `enquetes_comentarios` (
  `enqcCodigo` int(20) NOT NULL AUTO_INCREMENT COMMENT 'codigo do comentario',
  `enqcCodEnquete` int(10) NOT NULL,
  `enqcIpEnvio` varchar(30) NOT NULL COMMENT 'ip do usuario',
  `enqcProvedorEnvio` varchar(150) NOT NULL COMMENT 'provedor do ip',
  `enqcDtHrEnvio` datetime NOT NULL COMMENT 'data e hora do envio',
  `enqcNome` varchar(40) NOT NULL COMMENT 'nome que quem enviou',
  `enqcEmail` varchar(60) NOT NULL COMMENT 'email de quem envu',
  `enqcCidade` varchar(150) NOT NULL,
  `enqcUF` char(2) NOT NULL,
  `enqcComentario` mediumtext NOT NULL COMMENT 'comentáro',
  `enqcStatus` enum('A','I') NOT NULL,
  PRIMARY KEY (`enqcCodigo`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Entidade para os comentários das enquetes' AUTO_INCREMENT=1 ;


//tabela enquete_log

CREATE TABLE IF NOT EXISTS `enquetes_log` (
  `enqlCodigo` int(30) NOT NULL AUTO_INCREMENT COMMENT 'codigo do envio',
  `enqlCodEnquete` int(10) NOT NULL COMMENT 'codigo da enquete',
  `enqlIpEnvio` varchar(30) NOT NULL COMMENT 'ip que enviou',
  `enqlDtHrEnvio` datetime NOT NULL COMMENT 'data e hora do envio',
  `enqlOpcao` varchar(5) NOT NULL,
  PRIMARY KEY (`enqlCodigo`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Entidade para os dados de log dos votos' AUTO_INCREMENT=2 ;

O método GET

form method=”get”
Faz com que os dados do formulário sejam enviados na URL do endereço que constar no action da tag
ou quando queremos passar dados para outra página usando a URL.

Veja um exemplo:
http://www.fabianobento.com.br/home/busca.php?codigo=4321

Se precisar passar mais um um valor pela URL é necessário colocar o simbolo “&” para separar.

Veja um exemplo:
http://www.fabianobento.com.br/home/busca.php?codigo=4321&nome=fabiano bento

O método POST
Faz com que os dados do formulário sejam enviados ao endereço do que constar no action da tag

Veja um exemplo:

/forma página cadastrar.php receberá as informações pelo nome do campo “nomecompleto” e o valor informado pelo usuário.
Para recuperar essas informações use o comando $_POST[‘nomecompleto’];

Para começar a escrever sua primeira página em PHP, crie um arquivo chamado teste1.php no diretório root do servidor web.
Coloque dentro do arquivo teste1.php o seguinte codigo

1
2
3
<?php
echo "Minha primeira página em PHP";
?>

Abra o navegador e acesse o endereço do servidor web http://localhost/teste1.php
Se ocorrer tudo certo vai apacer na pagina “Minha primeira página em PHP”.

Em breve estarei mostrando como instalar um servidor web em seu computador para começar a desenvolver paginas em php.