Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

M@rc

Exibir imagem do banco

Recommended Posts

Boa noite,

 

Tenho uma tabela no mysql com as colunas nome, senha e foto. Ao exibir através do php, o nome e senha do usuário aparece corretamente mas a foto aparece como caracteres. O que faço para a imagem aparecer corretamente?

Segue código:

 

<?php
require 'conexao.php';
$resultado = mysql_query("select * from usuarios ");
header("Content type: image/.jpg");
while ($row = mysql_fetch_array($resultado)) {
$foto = $row['foto'];
$nome = $row['nome'];
$senha = $row['senha'];
echo "$foto </br >";
echo "$nome </br >";
echo "$senha </br >";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você precisa criar um arquivo PHP só para renderizar a imagem, exemplo:

 

imagem.php

 

<?php
 
require 'conexao.php';
 
$id_usuario = (int) $_GET['id_usuario'];
$sql = 'SELECT foto FROM usuarios WHERE id_usuario = ' . $id_usuario;
$query = mysql_query($sql) or die(mysql_error());
$foto = mysql_result($query, 0);
 
header('Content-Type: image/jpeg');
echo $foto;

 

Depois você chama o arquivo assim:

 

echo '<img src="imagem.php?id_usuario=' . $row['id_usuario'] . '" alt="" /><br />';

 

Qualquer dúvida é só postar. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo ID da tabela "usuarios" é id_usuario mesmo? Se não for altere o exemplo que eu passei com o campo correto.



Outra coisa, remova esta linha do código onde lista os dados do usuário:

 

header("Content type: image/.jpg");

 

Esta linha além de estar com as instruções erradas, o mime type da imagem deve estar no arquivo que vai renderizar a imagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é id_usuario mesmo. Em um dos arquivos coloquei:

 

<?php
require 'conexao.php';
$resultado = mysql_query("select * from usuarios ");
header("Content type: image/.jpg");
while ($row = mysql_fetch_array($resultado)) {
$nome = $row['nome'];
$senha = $row['senha'];
echo '<img src="imagem.php?id_usuario=' . $row['id_usuario'] . '" alt="" /><br />';
echo "$nome </br >";
echo "$senha </br >";
}
?>
e no outro:
<?php
require 'conexao.php';
$id_usuario = (int) $_GET['id_usuario'];
$sql = 'SELECT foto FROM usuarios WHERE id_usuario = ' . $id_usuario;
$query = mysql_query($sql) or die(mysql_error());
$foto = mysql_result($query, 0);
header('Content-Type: image/jpeg');
echo $foto;
?>
Ao chamar o primeiro aparece o nome, a senha do usuario e um pequeno quadrado como se não tivesse encontrado a imagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se continuar dando erro faça o seguinte, comente a linha com o header para podermos ver se está sendo exibido algum erro:

//header('Content-Type: image/jpeg');

 

Depois acesse o arquivo direto no browser para ver se aparece algum erro, por exemplo:

http://localhost/imagem.php?id_usuario=1

 

Onde vejo se está como binario ou base64? (Estou começando com php e mysql)

Copie um trecho do código da imagem e cole aqui que eu vejo se está em binário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aparece objeto não encontrado erro 404. Estou usando o phpmyadmin e no local onde escolho a foto aparece como "Binário - não edite (219.3 KB)" creio que então esta salvando como binário. O tipo coloquei como longblob

Para acessar o arquivo estou usando: http://localhost/mysql/exibe.php e aparece como disse, somente texto sem as imagens.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se está dando erro 404 é porque você está acessando o URL errado. Verifique onde você salvou o arquivo imagem.php, se estiver na mesma pasta do arquivo exibe.php o URL é:

 

http://localhost/mysql/imagem.php?id_usuario=1 

 

No lugar do número 1 coloque um ID que exista na tabela "usuarios" para testar.

 

Poste aqui o que retorna ao acessar este URL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O nome do arquivo 1 é exibe.php e o 2 é o exibe2.php e o id do primeiro usuario é 5

 

Coloquei:

http://localhost/mysql/exibe.php?id_usuario=5

 

Aparece primeiro o nome e senha e depois aparece os quadrados de como se não tivesse encontrado a imagem.

 

Arquivo exibe.php

<?php
require 'conexao.php';
$resultado = mysql_query("select * from usuarios ");
while ($row = mysql_fetch_array($resultado)) {
$nome = $row['nome'];
$senha = $row['senha'];
echo '<img src="exibe.php?id_usuario=' . $row['id_usuario'] . '" alt="" /><br />';
echo "$nome </br >";
echo "$senha </br >";
}
?>
exibe2:
<?php
require 'conexao.php';
$id_usuario = (int) $_GET['id_usuario'];
$sql = 'SELECT foto FROM usuarios WHERE id_usuario = ' . $id_usuario;
$query = mysql_query($sql) or die(mysql_error());
$foto = mysql_result($query, 0);
header('Content-Type: image/jpeg');
echo($foto);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei o segundo tb mas ai so aparece o quadradinho onde deveria aparecer a imagem mas não aparece e nem aparece mais o nome de usuario e senha. No exibe.php aparece o nome de usuario e senha mas a imagem não carrega.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você comentou a linha com o header como eu falei no post #10? Se você não comentar esta linha o navegador não exibe o erro, pois trata o arquivo como uma imagem.

 

Coloque duas barras na frente dela pra gente pode ver se está aparecendo algum erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comentei agora mas não dá nenhum erro. Continua exibindo o nome do usuario, a senha e não carrega a imagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, eu acho que você não entendeu o que eu to pedindo pra você fazer.

 

Eu entendi que a imagem está com erro, por isso pedi pra você comentar a linha com o "header" e acessar diretamente o arquivo que renderiza a imagem pra gente ver se aparece algum erro. Você está acessando o primeiro arquivo e não o arquivo da imagem.

 

Esquece um pouco o primeiro arquivo e vamos tentar descobrir qual erro está ocorrendo ao tentar renderizar a imagem. Acesse o URL do arquivo exibe2.php, pelo URL que eu postei no post #14 e veja o que é exibido. Se aparecer um quadrado de imagem com erro é porque você não comentou a linha com o "header".

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.