Olá pessoal, hoje vou escrever bem resumido para explicar O que é normalização ?

Normalização é um conjunto de regras que ajuda minimizar problemas de logica.
Ex.. não armazenar os dados de compra junto com os dados dos clientes, pois o mesmo cliente poderá fazer mais de uma compra certo!
A normalização ajuda a tornar o banco de dados mais facil de se entender, basicamente devemos passar por três passos de normalização.
1FN – primeira forma normal, 2NF – segunda forma normal, 3FN – terceira forma normal, e cada formato tem seu proprio conjunto de regras.

Se você tem interesse em banco de dados, é essencial estudar sobre normalização, um abraço a todos.

Olá pessoal, resolvi fazer uma pequena lista de alguns comandos que poderá ajudar quem não tem muito costume de usar prompt.

Apos ter instalado o MySQL em seu computador precisamos iniciar o servidor

No linux acesse a pasta do mysql

> cd mysql
> bin/safe_mysqld &

Vai aparecer uma mensagem pedindo o password

> Enter password:

Para entrar no shel do mysql

>mysql -u root -p senha

acima estamos abrindo conexão com o -usuário root e -password senha

//Lista dos comandos básicos
mysql> show databases; //mostra todos banco de dados

mysql > use nome_banco; //seleciona um banco de dados para trabalhar

mysql> show tables; //mostra todas as tabelas do banco selecionado

mysql> desc ou describe // mostra detalhes da tabela, colunas e tipo de dados

mysql> SELECT @ @datadir; //mostra o diretório de dados do mysql
cada banco de dados é separado por uma pasta com o nome do banco

mysql> select count(*) from tabela; //conta quantidade de registros(linhas) da tabela selecionada

mysql> CREATE DATABASE modelo; //cria um banco de dados chamado modelo

mysql > DROP DATABASE modelo; // Exclui o banco de dados chamado modelo e todos os dados dentro dele


Basicamente é isso pessoal, ate a proxima.

Bom dia a todos… hoje vou mostrar como conectar no banco de dados firebird usando PHP.
em alguns passos você podera conectar no firebird.

1° Passo – Instale o servidor do firebird
acesse o site http://www.firebirdsql.org/ e faça download do firebird, fiz testes usando o firebird 1.5, 2.0, e 2.5 e todos funcionaram normalmente.
Após instalar o firebird reinicie o computador.

2° Passo – O segundo passo é configurar o PHP. A biblioteca para conexão com o firebird

Localize o arquivo php.ini dentro do diretório de instalação do servidor web (apache), e em seguida abra usando um editor de texto(notepad, edit plus…).

Encontre a linha ;extension=php_interbase.dll e remova o ponto e vírgula no inicio, salve, feche e reinicie o serviço do servidor web.

Caso não encontre a linha, insira no final do arquivo.

3° Passo – Criar a conexão com o FireBird

//ibase_connect — Abre uma conexão com um banco de dados InterBase
//pode ser colocado o IP, ou nome do computador onde esta o banco de dados

$servidor = '127.0.0.1:C:/diretorio/banco.FDB';

//conexão com o banco, se der erro mostrara uma mensagem.
if (!($dbh=ibase_connect($servidor, 'SYSDBA', 'masterkey')))
		die('Erro ao conectar: ' .  ibase_errmsg());

Fazer uma consulta no banco.

//Instruções SQL
$sql = 'SELECT COLUNA1, COLUNA2 FROM TABELA';

//Executa a instrução SQL
$query= ibase_query ($dbh, $sql);

//gera um loop com as linhas encontradas
while ($row = ibase_fetch_object ($query)) {

    //imprimi as linhas na tela
    echo $row->COLUNA1 . "n";

}

//Libera a memoria usada
ibase_free_result($query);

//fecha conexão com o firebird
ibase_close($dbh);

Um erro muito comum ao tentar fazer a conexão com o firebird é a seguinte mensagem de erro;

“Warning: ibase_connect() [function.ibase-connect]: Unable to complete network request to host “127.0.0.1”. Failed to locate host machine. The specified name was not found in the hosts file or Domain Name Services.”

Para resolver é bem simples, basta inserir 2 linhas no arquivo de configuração de serviços.
Vá ate o diretorio C:WindowsSystem32driversetc e abra o arquivo services, insira no final do arquivo as seguintes linhas

gds_db    		3050/tcp    						#firebird Database
gds_db    		3050/udp    						#firebird Database

Pronto sua conexão podera ser feita com sucesso.

Para saber mais sobre os comandos que podem ser usados acesse:

http://www.php.net/manual/pt_BR/ref.ibase.php

Continuação do artigo sobre conexão com Oracle usando PHP. Vou mostrar como fazer consultas em tabelas, criar variaveis, e usar OCI_NO_AUTO_COMMIT.

//conexão com o Oracle
$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;
}

//bloco da consulta SQL
$consulta = "select * from cep_localidade";
$stid = oci_parse($conexao, $consulta) or die ("erro");

//Executa os comandos SQL
$exec= oci_execute($stid);

//defini váriaveis
oci_define_by_name($stid, 'COLUNA1', $VAR1);
oci_define_by_name($stid, 'COLUNA2', $VAR2);
oci_define_by_name($stid, 'COLUNA3', $VAR3);

//Abaixo conta a quantidade de linhas retornada da consulta.
echo $nrows = oci_fetch_all($stid, $results);

oci_free_statement($stid);
//fecha a conexão atual
oci_close($conexao);

Pessoal espero que ajude e tire as duvidas de quem vai começar a usar PHP+ORACLE, é um exemplo bem simples de como fazer uma consulta no banco de dados.

Para usar INSERT, UPDATE OU DELETE use a função OCI_NO_AUTO_COMMIT e valide em seguida.

$exec= oci_execute($stid, OCI_NO_AUTO_COMMIT);
//se encontrar algum erro da um rollback NÃO efetiva a query
if (!$exec) {
    $e = oci_error($stid);
    oci_rollback($conexao);  // rollback changes to both tables
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

// COMITA a query
$exec = oci_commit($conexao);
if (!r) {
    $e = oci_error($conexao);
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

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:

http://blog.fabianobento.com.br/2012/10/configurando-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.

Baixe e instale o driver de conexão do site do MySql.

http://www.mysql.com/downloads/connector/odbc/

Crie um arquivo chamado asp_conexao_mysql.asp

1
2
3
4
5
6
 
<%
strConnection = "driver={MySQL ODBC 5.1 Driver}; server=localhost; uid=USUARIO; pwd=SENHA; database=DATABASE;option=NUM"
set conn = Server.CreateObject("ADODB.Connection")
conn.Open strConnection
%>

Olá pessoal, hoje vou mostrar sobre os tipos de dados que podem ser definidos para as colunas do seu banco de dados e tornar suas consultas mais rápidas.

Tipos de data e Hora:

DATE – armazena data tipo AAAA-MM-DD
DATETIME – armazena data e hora no formato – AAAA-MM-DD HH:MM:SS
TIME – armazena hora no formato – hh:mm:ss
YEAR – armazena ano no formato – aaaa
TIMESTAMP – armazena data e hora podendo ser usando com TIME_STAMP

Tipos numéricos
Bytes Range
TINYINT 1 -128 até 127
SMALLINT 2 -32768 até 32767
MEDIUMINT 3 -8388608 até 8388607
INT 4 -2147483648 até 2147483647
BIGINT 8 -9223372036854775808 até 9223372036854775807

Tipos string

Os tipos strings são CHAR, VARCHAR, BLOB, TEXT, ENUM, e SET.

A seguinte tabela ilustra as diferenças entre os dois tipos de colunas, mostrando o resultado de se armazenar vários valores de strings em campos CHAR(4) e VARCHAR(4):
CHAR-VARCHAR

Então usar varchar é melhor para meu banco ficar mais leve certo ? Errado!
É obvio que para um colunas com valores fixos você deve usar CHAR, e colunas com valores variaveis deve-se usar o VARCHAR.
Mas isso vai depender muito do tipo de informação que será guardada pois em alguns casos é melhor usar CHAR pois a maneira que o Mysql trabalha internamente para essas colunas poderá fazer sua consulta ficar mais lenta.
E também depende de como esta seus indices entre outros fatores que influenciam.

Tipo ENUM
Enum – armazena um valor único de uma lista pré especificada.
Ex.: ENUM(‘S’,’N’) – somente será aceito os valos S,N
pode ser usado para campos como, sexo, recebe newsletter,

Tipos binários

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 ;