Dependendo da aplicação do banco pode-se trabalhar de duas formas:
- Gravando as imagens direto no banco de dados utilizando o tipo de dado binário BLOB;
- Ou gravar apenas o nome do caminho do arquivo deixando a imagem na pasta a ser referenciada.
O primeiro caso é um tanto complexo para explicarmos aqui e não será objeto desta publicação.
Deixar os arquivos em uma pasta e referenciá-los é mais simples e deixa o banco de dados mais leve poupando tempo e espaço.
Há vantagens entre um e outro e não se pode afirmar com certeza qual deles é o melhor. O segundo caso parece mais favorável por tornar mais simples a execução das rotinas no MySQL. No entanto, o primeiro parece mais seguro e não é facilmente acessível sem que haja uma identificação do usuário. Tudo vai depender da finalidade do negócio.
Para estudo nosso vamos utilizar o método de manter os arquivos de imagens em uma pasta e exibi-los no corpo do browser através de uma consulta ao banco de dados usando o PHP.
Primeiramente, crie seu esquema de banco de dados.
Uma das colunas da tabela que você irá utilizar para referenciar uma imagem à uma linha de dados deve ser do tipo VARCHAR. Isso porque nessa coluna será armazenada uma string com o nome do caminho do arquivo de imagem.
Crie uma pasta para armazenar as imagens daquela tabela. Se você quiser usar imagens em outras tabelas do seu banco, crie outra pasta. Não misture imagens que representam coisas diferentes. Isso facilita a organização.
A pasta de imagens deve ficar na raiz do localhost. Se você não sabe qual o diretório em seu Windows representa o localhost, leia esta publicação Windows + PHP + MySQL + IIS.
A referência para busca parte do localhost como diretório raiz.
Utilize o código abaixo para realizar a busca da imagem referente à consulta do banco de dados:
<?php
#Dados para conexão com o banco de dados.
#Imagino que no seu banco de dados seja o usuário root.
$servidor = 'localhost';
$user = 'root';
$senha = 'sua_senha';
$banco = 'nome_do_seu_banco';
#Executa conexão com o banco de dados
$link = mysqli_connect($servidor, $user, $senha, $banco)
or die(mysqli_connect_error());
#Cria a expressão SQL para consulta
$sql = "SELECT * FROM sua_tabela";
?>
<html>
<table>
<tr>
<td>Coluna#1</td>
<td>Coluna#2</td>
<td>Coluna#3</td>
<td>Coluna#4</td>
</tr>
<?PHP
#Exibe o resultado das consultas ao banco
$result = mysqli_query($link, $sql);
while ($tbl = mysqli_fetch_array($result))
{
$col1 = $tbl["col1"];
$col2 = $tbl["col2"];
$col3 = $tbl["col3"];
$col4 = $tbl["col4"];
echo "<tr>";
echo "<td>$col1</td>";
echo "<td>$col2</td>";
echo "<td>$col3</td>";
echo "<td><img src='$col4'</td>";
echo "</tr>";
}
?>
</table>
<br />
</html>
No exemplo, $col4 traz a string com o nome do caminho do arquivo desejado.
Seria algo assim: "Minha_Pasta/minha_imagem.png"
Quando o comando SQL for executado, "http://localhost" é adicionado ao caminho do arquivo ficando assim: "http://localhost/Minha_Pasta/minha_imagem.png".
Faça o teste no seu navegador.
Se você tiver várias linhas na sua tabela elas serão exibidas no resultado.
Até a próxima.
Eduardo Viana
Editor do site Conectado+
Nenhum comentário:
Postar um comentário