Cadastrando e Exibindo i..
-
Upload
silvano-pereira -
Category
Documents
-
view
10 -
download
0
Transcript of 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
<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>";
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>
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.
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.
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.
Resultado:
Para baixar os exemplos desse artigo, clique no
link abaixo: