MySQL – Registo E Exibição De Imagens

Tutorial Anterior > MySQL – Exclusão De Dados

Nas edições anteriores mostramos como criar uma tabela, efetuar inclusões, alterações e exclusão de seus dados.

Como encontrei vários artigos na Internet com este mesmo tema, porém, apresentando erros diversos, foquei a Matéria de hoje a lhe passar a correção deste tema que é bastante discutido e pouco compreendido por programadores novatos e até mesmo experientes.

Caso esta seja sua primeira visita a este Blog, se não tiver um conhecimento sobre inserção, alteração e exclusão, sugerimos visitar nossas matérias anteriores, antes de dar andamento a esta matéria!

Visando lhe facilitar, disponibilizamos em anexo os scripts desta matéria, para você analisar e testar, ok?

O processo de criação é simples, conforme descrito abaixo:


----- CRIANDO A TABELA -----

CREATE TABLE `fotos` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`foto` BLOB NOT NULL DEFAULT "",
`tipo` VARCHAR(20) NOT NULL DEFAULT "",
PRIMARY KEY(`id`)
);
-----

OBS.: Copie tudo o que está dentro de SCRIPT DE EXCLUSÃO e cole no SQL Editor (conforme imagem abaixo).

Feito isso, clique em F9 (RUN) e o Programa carregará suas informações na base de dados, efetuando a exclusão de seu conteúdo.

Criar Tabela MySQL

Agora que você criou a tabela Fotos, vamos dar início ao formulário para a inserção da imagem!

Como padrão (desde a matéria anterior), estamos focando a linguagem de Programação em PHP.

OBS.: Poderíamos fazer tudo em uma só página, mas para facilitar seu entendimento, vamos dividir em vários documentos. Ok?


----- formulario.htm -----
<html><head><title>.:: WebMaster.PT :: Gravando uma imagem no BD MySQL</title>
</head>
<body>
<h2> Gravando uma imagem no BD MySQL</h2>

<form action='formulario_envia.php' method="post" enctype="multipart/form-data">
<table>
<tr><td>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>
</body>
</html>
----------

OBS.: Este é o formulário onde você poderá inserir a imagem (conforme o script acima e imagem).

Observe que como estamos passando um arquivo (imagem) pelo formulário, é obrigatório a inclusão no form da instrução enctype=”mutipart/form-data”.

Registar Imagem Tabela MySQL


----- conexao.php -----
<?
  
$database = "localhost:3306"; // SERVIDOR E PORTA UTILIZADA  
$dbname  = "basededados"; // BASE DE DADOS
$usuario   = "usuario"; // USUÁRIO DO MYSQL
$dbsenha  = "senha"; // SENHA DO MYSQL

$conexao=mysql_connect ($database, $usuario, $dbsenha);
if($conexao){
      if (mysql_select_db($dbname, $conexao)){ print "";
      }else{ print "Não foi possível selecionar o Banco de Dados"; }
}else{ print "Erro ao conectar o MySQL"; }

?>
-----

Através do script acima você poderá acessar a base de dados MySQL.

OBS.: Lembre-se de alterar os dados de acesso (estão comentados).


----- formulario_envia.php -----
<?
include('conexao.php');

//RECEBE DADOS DO FORMULÁRIO
$Foto = $_FILES["txtFoto"]["tmp_name"];
$Tipo = $_FILES["txtFoto"]["type"];
https://www.webmaster.pt/mysql-parte-4-exclusao-dados-702.html
// Trata a Imagem
$pont = fopen($Foto, "rb");
$dados = fread($pont,filesize($Foto));
fclose($pont);
$dados = addslashes($dados);

//INSERE NA BASE DE DADOS
$query = "INSERT INTO fotos (foto, tipo) VALUES('$dados', '$Tipo')";
$resultado = mysql_query($query);

if ($resultado){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
alert ("cadastro efetuado com sucesso")</SCRIPT>

<SCRIPT language="JavaScript">
window.location.href="formulario.htm";</SCRIPT>
<?
}// Fecha if ($resultado){
?>
----------

OBS.: Através do script acima você poderá inserir na base de dados a imagem enviada anteriormente pelo formulário.

Veja que após efetuar o cadastro o Sistema gera um alerta confirmando o cadastro e direciona a página para formulario.htm.

Vamos agora visualizar a imagem que você acabou de cadastrar na base de dados?

Veja na imagem a seguir que ela foi devidamente cadastrada!

Imagem Registada Tabela MySQL


----- visualiza_imagem.php  -----
<html><head>
<title>.:: WebMaster.PT :: Visualizando as imagens cadastradas no BD MySQL</title>
</head><body>
<h2>Visualizando As Imagens Cadastradas No BD MySQL</h2>

<?
// Inclui o arquivo de conexão
include('conexao.php');

//EXECUTA A QUERY
$query = "SELECT * FROM fotos";
$resultado = mysql_query($query);

if($resultado){

while ($campo = mysql_fetch_array($resultado)){
  $id   = $campo['0'];
  $foto   = $campo['1'];
  $tipo   = $campo['2'];

echo "<img src='visualiza_imagem_foto.php?id=$id' border='1'><br><br>";
}  // Fecha if($resultado){
} // Fecha while ($campo = mysql_fetch_array($resultado)){
?>
----------

OBS.: Através do script acima você visualiza a imagem (poderá através do SELECT efetuar alterações, isto é: fazer o que for necessário, incluindo até mesmo tabelas (dependendo de sua necessidade).


----- visualiza_imagem_foto.php  -----

<?
include('conexao.php');

$id = $_GET['id'];

// Executa a query, trazendo os dados do banco
$query = "SELECT * FROM fotos where id = $id";
$resultado = mysql_query($query);

$tipo = mysql_result($resultado, 0, "tipo");
$foto = mysql_result($resultado, 0, "foto");
header("Content-type: $tipo");
print $foto;
?>

----------

Através do script acima, o Sistema resgatará a imagem a ser apresentada em tela!

Após cadastrarmos a imagem, podemos visualizar no script visualiza_imagem.php (conforme exemplo descrito na imagem abaixo).

Visualizar Imagem

Espero ter lhe ajudado em algo com esta matéria.

DOWNLOAD: Descarregue o código utilizado neste tutorial de Registo De Imagens Em Tabela MySQL, em formato .zip.

Tutorial Seguinte > MySQL – Realização De Backups

Be Sociable, Share!

9 Comentários

  1. Danilo

    Olá, Como eu faria se quisesse cadastrar mais de uma foto de uma só vez?

  2. Acompanho o blog faz tempo, parabéns, mas tenho algumas dúvidas… e questão de tamanho? Fica muito pesado o banco de dados incluindo imagens nos campos do tipo BLOB? 

    Obrigado!

  3. Sandra

    Olá, de facto, a questão que o Danilo colocou é a minha dúvida. Como se faz para inserir mais do que uma imagem de uma só vez? Eu estou habituada a inserir uma a uma, mas não há maneira de fazer de uma vez só? Obrigada.

  4. Thiago

    Como Cadastrar várias imagens ao mesmo tempo? tenho essa dúvida.

  5. Marcio Aoyagui

    Como colocar a imagem cadastrada como background?

  6. Pessoal, tenho o seguinte script e quanto tento exiPessoal, tenho o seguinte script e quanto tento exibi as imagens, aparece apenas um.

    $result=mysql_query("SELECT img FROM mensagem WHERE '$hoje' BETWEEN data_inicio and data_termino") or die("Impossível executar a query "); 
     
    while($linha = mysql_fetch_object($result)) { 
    Header( "Content-type: image/gif"); 
    $inseto = $linha->img;
    echo $inseto;
    $exibir = "<img src='".$inseto."' alt='Foto de Exibição' />";
    }
     
    Alguém sabe porque aparece apenas uma.
     
    Abs
    bi as imagens, aparece apenas um.

Participa! Comenta...