Cadastrando e Exibindo i..

7
1 M Y S Q L + P H P C a d a s t r a n d o e E x i b i n d o i m a g e n s d i r e t a m e n t e d o M y S Q L 5 2 5 d e j a n e i r o d e 2 0 0 6 p o r J ú l i o C é s a r M a r t i n i F a l a p e s s o a l ! F e l i z A n o N o v o ! A p ó s u m a p e q u e n a p a u s a , e s t a m o s r e t o r n a n d o c o m f o r ç a t o t a l a c o l u n a d e P H P . E s s a s e m a n a t e n t a r e i m o s t r a r , d e u m a m a n e i r a s i m p l e s , c o m o p o d e m o s c a d a s t r a r e e x i b i r u m a i m a g e m d i r e t a m e n t e d o b a n c o d e d a d o s M y S Q L . E s s e a r t i g o f o i b a s e a d o n o M y S Q L e P H P 5 . V a m o s l á : P r i m e i r a m e n t e , d e v e m o s c r i a r o n o s s o d a t a b a s e . C R E A T E D A T A B A S E J U L I O ; C r i a r e m o s a t a b e l a F O T O S , c o n f o r m e d e s c r i ç ã o a b a i x o d e n t r o d o s c h e m a j u l i o : C R E A T E T A B L E ` j u l i o ` . ` f o t o s ` ( ` i d ` I N T E G E R N O T N U L L A U T O _ I N C R E M E N T , ` f o t o ` B L O B N O T N U L L D E F A U L T , ` t i p o ` V A R C H A R ( 2 0 ) N O T N U L L D E F A U L T , P R I M A R Y K E Y ( ` i d ` ) ) E N G I N E = I n n o D B ; D e p o i s q u e a t a b e l a f o r c r i a d a , p o d e m o s c o m e ç a r a e s c r e v e r o n o s s o f o r m u l á r i o ( f o r m . p h p ) , q u e s e r á o r e s p o n s á v e l p e l o e n v i o d a i m a g e m . < h t m l > < h e a d > 8 L i k e S h a r e

Transcript of Cadastrando e Exibindo i..

Page 1: Cadastrando e Exibindo i..

1

MYSQL + PHP

Cadastrando e Exibindo imagensdiretamente do MySQL 5

25 de janeiro de 2006 por Júlio César Martini

Fala pessoal! Feliz Ano Novo! Após uma pequena

pausa, estamos retornando com força total a coluna de PHP.

Essa semana tentarei mostrar, de uma maneira simples,

como podemos cadastrar e exibir uma imagem diretamente do banco

de dados MySQL. Esse artigo foi

baseado no MySQL e PHP 5.

Vamos lá:

Primeiramente, devemos criar o nosso database.

CREATE DATABASE JULIO;

Criaremos a tabela FOTOS, conforme descrição

abaixo dentro do schema julio:

CREATE TABLE `julio`.`fotos` (

`id` INTEGER NOT NULL AUTO_INCREMENT,

`foto` BLOB NOT NULL DEFAULT “”,

`tipo` VARCHAR(20) NOT NULL DEFAULT “”,

PRIMARY KEY(`id`)

)

ENGINE = InnoDB;

Depois que a tabela for criada, podemos começar

a escrever o nosso formulário (form.php),

que será o responsável pelo envio da imagem.

<html>

<head>

8Like Share

Page 2: Cadastrando e Exibindo i..

<title>Gravando e exibindo uma imagem diretamente

do MySQL 5</title>

</head>

<body bgcolor="#FFFFFF">

<h2> Gravando imagem no banco de dados MySQL 5</h2>

<?

//VERIFICA SE O FORM FOI

ENVIADO

if($_POST) {

//CONECTA AO MYSQL

$conn = mysqli_connect("localhost", "usuario",

"senha", "base de dados ")

or die("Erro na conexão com o BD");

//RECEBE DADOS DO FORMULÁRIO

$pFoto = $_FILES["txtFoto"]["tmp_name"];

$pTipo = $_FILES["txtFoto"]["type"];

//MOVE

move_uploaded_file($pFoto, "c:\\temp\\latest.img");

//ABRE ARQUIVO

$pont = fopen("c:\\temp\\latest.img", "rb");

//PERCORRE O ARQUIVO

$dados = addslashes(fread($pont, filesize("c:\\temp\\latest.img")));

//INSERE NA BASE DE DADOS

$sql = mysqli_query($conn, "INSERT INTO fotos (foto,

tipo) VALUES(“".$dados."”, “".$pTipo."”)

");

echo "<table border=”0″ cellpading=”0″ cellspacing=”0″

width=”95%”>";

//LINHAS AFETADAS

$row = mysqli_affected_rows($conn);

//TOTAL DE LINHAS AFETADAS

PELA INSERÇÃO

if($row) {

echo "<tr>";

Page 3: Cadastrando e Exibindo i..

echo "<td>Inclusão efetuada com Sucesso!";

echo "</tr>";

}//FECHA IF ( num_rows )

else {

echo "<tr>";

echo "<td>Erro na inclusão da foto!";

echo "</tr>";

}//FECHA ELSE

echo "</table>";

}//FECHA IF ( post )

//EXIBE O FORMULÁRIO

else { ?>

<form name="frmFoto" method="post"

enctype="multipart/form-data">

<table border="0" cellpading="0"

cellspacing="0" width="95%">

<tr>

<td height="50">Foto:</td>

<td><input type="file" name="txtFoto"

size="35"></td>

</tr>

<tr>

<td colspan="2">

<input type="submit" name="Enviar"></td>

</tr>

</table>

</form>

<?

}//FECHA ELSE

?>

</body>

</html>

Page 4: Cadastrando e Exibindo i..

Depurando:

Linha 11:

Verificamos se o formulário foi enviado.

Linha 18: Recebemos o nome temporário

do arquivo armazenado no servidor.

Linha 19: Recebemos o tipo do arquivo.

Linha 22: Movemos o conteúdo do

arquivo temporário para o arquivo latest.img

Linha 25: Abrimos o arquivo para leitura.

Linha 28: Lemos o seu conteúdo

e armazenamos o resultado na variável dados. Utilizamos

addslashes para colocar barras invertidas em caracteres que precisam

ser escapados.

Linha 31: Finalmente, inserimos a imagem

no banco de dados.

Page 5: Cadastrando e Exibindo i..

Feito isso, criaremos o arquivo (exibe.php)

que irá preparar as imagens para serem visualizadas.

<?

//CONECTA

AO MYSQL

$conn = mysqli_connect("localhost", "usuario",

"senha", "base de dados ");

//EXECUTA

A QUERY

$sql = mysqli_query($conn, "SELECT id, foto,tipo

FROM fotos");

echo "<h2>Exibe

imagens cadastradas no BD</h2>";

while ($row = mysqli_fetch_row($sql))

{

$id = $row[0];

$bytes = $row[1];

$tipo = $row[2];

echo "<img src=”gera.php?id=".$id."”

width=”100″ height=”100″ border=”1″>";

echo "<br><br>";

}

?>

Depurando:

Linha 24:

Essa é a linha mais importante desse arquivo.

Veja que chamo dentro da tag <img> o gera.php que será

o responsável por fazer a imagem aparecer. Fiz o script

dessa maneira pois queria que a página exibe.php trouxesse

todas as imagens cadastradas no banco de dados.

Page 6: Cadastrando e Exibindo i..

O arquivo gera.php exibirá

as imagens cadastradas:

<?

//RECEBE

PARÂMETRO

$id = $_GET["id"];

//CONECTA

AO MYSQL

$conn = mysqli_connect("localhost", "usuario",

"senha", "base de dados ");

//EXIBE

IMAGEM

$sql = mysqli_query($conn, "SELECT foto,tipo FROM

fotos WHERE id = ".$id."");

$row = mysqli_fetch_array($sql,

MYSQLI_ASSOC);

$tipo = $row["tipo"];

$bytes = $row["foto"];

//EXIBE

IMAGEM

header("Content-type: ".$tipo."");

echo $bytes;

?>

Depurando:

Linha 20: Percorremos

o array para exibir todas as imagens cadastradas no BD.

Linha 24: Informamos ao browser que o

arquivo a ser visualizado será uma imagem.

Linha 25: Exibimos a imagem.

Page 7: Cadastrando e Exibindo i..

Resultado:

Para baixar os exemplos desse artigo, clique no

link abaixo: