Ir ao conteúdo
  • Cadastre-se
Orixinals

RESOLVIDO Exibir uma imagem de uma pasta em PHP

Recommended Posts

Olá pessoal , bom estou com uma duvida bem simples mas que está me dando nos nervos, eu quero exibir uma imagem de uma pasta, só que eu quero exibir uma unica imagem, no caso eu tenho no banco de dados o nome da imagem, e quero resgatar esse nome do banco ( eu já consigo fazer isso e mostrar na tela este nome) e buscar esse nome resgatado do banco na pasta e assim exibir a imagem

 

Linguagem --> PHP

Banco --> Mysql

 

 

As minhas pastas estão feitas da seguinte forma

 

Projeto (Onde fica os arquivos PHP e HTML)  -----> Img (Onde é salva as imagens cadastradas)

 

O que eu quero fazer é , pegar o nome da imagem cadastrada no banco, e buscar na pasta Img a imagem com o mesmo nome, e assim exibi-la na pagina PHP

 

 

OBS: Eu já pesquisei vários e vários tópicos a respeito disso e nenhum funcionou para o que eu preciso.

 

Minha tentativa

 

<?php while($dado = mysql_fetch_array($con)){?><?php echo $dado["nm_publicacao"]. '<br>'; ?><?php echo $dado["ds_publicacao"]. '<br>';  ?><?php echo $dado["dt_publicacao"]. '<br>';  ?><?php echo $dado["img_publicacao"]. '<br>';  ?><?php echo "<img src='C:/xampp/htdocs/Projeto/Img/".$dado["img_publicacao"]."' alt='Foto de exibição' /><br />"; ?> // a parte onde está dando erro (Não aparece a imagem)<?php echo '<br>'.'<hr>'; ?><?php } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@

 

Isso é relativamente simples de fazer. 

O primeiro passo você já fez..  mostrar em tela o nome da imagem do banco de dados.. já é meio caminho andado.

 

O próximo passo é mostrar na tela essa imagem em específico.. para isso.. faça do mesmo modo que vem fazendo.. puxando o nome, armazena o caminho da imagem numa variável e mostra em tela.. bem simples mesmo..

 

exemplo prático:

<?php   include 'conexao.php';   $buscaDados = mysqli_query($conexao, "SELECT nick, email, img FROM tbl_usuarios");         while($dados = mysqli_fetch_object($buscaDados)):       //armazena em uma variável o caminho concatenado com o nome vindo do banco de dados        $img = "Img/" . $dados->img;        echo"            <div class='perfil'>                <h1>$dados->nick</h1>                <p>$dados->email</p>                 <div class='avatar'>                     <img src='$img' alt='$dados->img' />                 </div>";   endwhile; 

O que mais lhe interessa no exemplo é as linhas 10 e 17...  veja que na linha 10 eu armazeno em uma variável o diretório da imagem concatenada com o nome da imagem vindo do banco de dados.

Na linha 17, eu coloco no atributo SRC do elemento img  a variável que contem a imagem concatenada... 

é simples assim.

 

Sem mistérios. 

 

Com isso poderias fazer uma galeria de imagens...   por exemplo... 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@

 

Isso é relativamente simples de fazer. 

O primeiro passo você já fez..  mostrar em tela o nome da imagem do banco de dados.. já é meio caminho andado.

 

O próximo passo é mostrar na tela essa imagem em específico.. para isso.. faça do mesmo modo que vem fazendo.. puxando o nome, armazena o caminho da imagem numa variável e mostra em tela.. bem simples mesmo..

 

exemplo prático:

<?php   include 'conexao.php';   $buscaDados = mysqli_query($conexao, "SELECT nick, email, img FROM tbl_usuarios");         while($dados = mysqli_fetch_object($buscaDados)):       //armazena em uma variável o caminho concatenado com o nome vindo do banco de dados        $img = "Img/" . $dados->img;        echo"            <div class='perfil'>                <h1>$dados->nick</h1>                <p>$dados->email</p>                 <div class='avatar'>                     <img src='$img' alt='$dados->img' />                 </div>";   endwhile; 

O que mais lhe interessa no exemplo é as linhas 10 e 17...  veja que na linha 10 eu armazeno em uma variável o diretório da imagem concatenada com o nome da imagem vindo do banco de dados.

Na linha 17, eu coloco no atributo SRC do elemento img  a variável que contem a imagem concatenada... 

é simples assim.

 

Sem mistérios. 

 

Com isso poderias fazer uma galeria de imagens...   por exemplo... 

 

 

Então Dif , eu fiz isso acho que de umas 300 maneiras, e não funcionou, ele não exibe a imagem. estava fazendo em php normal , sem PDO , mudei para PDO para fazer da forma que você mostrou, mas mesmo assim , não mostra

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então...  mostrar em tela não requer nenhuma função ou extensão específica...  basta colocar o nome da imagem concatenada no SRC...  

 

Mas não sei o que se passa.. qual é a mensagem de erro?

 

outra coisa você usa o xampp.. ele é ruim..  muita gente reclama que algumas coisas não funcionam... por isso sempre recomendo usar o EasyPHP 14.1 DEV SERVER .

 

Ele pode apresentar alguns erros de DLL.. mas isso é facilmente simples de arrumar, tanto que fiz um tópico ensinando como arrumar:  http://forum.clubedohardware.com.br/topic/1079461-easyphp-141-solucionando-o-problema-de-dll-no-windows-78/

 

Seria interessante você postar prints do problema.. se possível. Algo aí não está certo..  uma vez que mostrar em tela não requer nada de mais... 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php	date_default_timezone_set("America/Sao_Paulo");	require 'connect.php'; ?><!DOCTYPE html><html><head>	<meta charset="utf-8">	<meta http-equiv="X-UA-Compatible" content="IE=edge">	<title>Publicação</title></head><body bgcolor="#ffad06">			<?php			$consulta = "SELECT * FROM tb_publicacao";			$con = mysql_query($consulta, $connect) or die ("Deu erro");			        			?>	<?php while($dado = mysql_fetch_object($con)){?><?php echo $dado->nm_publicacao. '<br>'; ?><?php echo $dado->ds_publicacao. '<br>';  ?><?php echo $dado->dt_publicacao. '<br>';  ?><?php echo $dado->img_publicacao. '<br>'; ?><?php$caminho = '\Img'.$dado->img_publicacao;echo "<img src='$caminho'>";?>	<?php echo '<br>'.'<hr>'; ?>	<?php } ?>		</body></html>

Este é o código que estou utilizando

Compartilhar este post


Link para o post
Compartilhar em outros sites

@

 

Bom.. o código está mal feito, se me permite dizer isto sem levar para o lado pejorativo.

Além disso.. o caminho está errado... colocou uma barra antes do diretório..

Outra coisa que chamo a atenção é que não precisa ficar abrindo e fechando a tag php.. faça tudo dentro uma tag só se possível...  os echos também.. quanto menos linhas melhor e mais organizado..

 

Tente desta maneira:

<!DOCTYPE html><html><head>	<meta charset="utf-8">	<meta http-equiv="X-UA-Compatible" content="IE=edge">	<title>Publicação</title></head><body bgcolor="#ffad06">		<?php                        date_default_timezone_set("America/Sao_Paulo");	                include 'connect.php';			$consulta = "SELECT * FROM tb_publicacao";			$con = mysql_query($consulta, $connect) or die ("Deu erro");			$caminho = 'Img/';                        	          while($dado = mysql_fetch_object($con)){                       $imagem = $caminho . $dado->img_publicacao;		     echo" 	                          $dado->nm_publicacao <br/>			  $dado->ds_publicacao <br/>			  $dado->dt_publicacao <br/>			  <img src='$imagem' alt='$dado->img_publicacao'/><hr/>                        ";                 }?></body></html>

O caminho tem que ser:  $caminho = 'Img/';  veja que  a barra é depois da palavra. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Dif , realmente está tudo desorganizado, estou fazendo curso de programação e realmente sou novato nisso, estou realizando meu TCC.

 

Bom vamos lá , copiei e colei o código no meu programa, rodei e o resultado foi este--->

 

https://imageshack.com/i/p1qJFG6Fp

 

Não exibiu a imagem , estou ficando preocupado, preciso muito que isso funcione, o que eu faço ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

@

 

Pelo print vejo que a imagem ficou com ícone de quebrado.. isso é problema de localização do arquivo.. 

 

Tente desta forma:

<!DOCTYPE html><html lang="pt-br"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="description" content=""><meta name="keywords" content=""><meta name="author" content=""><meta name="reply-to" content=""><meta name="generator" content="Eclipse mars"><script src="http://code.jquery.com/jquery-2.1.4.min.js"></script><title>Insert title here</title><style type="text/css">    .perfil{        background: #ccc;        margin-bottom: 15px;    }</style></head><body>	<?php 	   include 'conexao.php';	   	   $caminho = "Img/";	   	   $busca = mysqli_query($conexao, "SELECT nome, email, img FROM perfil");	   while($perfil = mysqli_fetch_object($busca)):	   $img = $caminho . $perfil->img;	      echo"                <div class='perfil'>                    <h1> Dados do usuário </h1>                    <p> Nome: $perfil->nome </p>                    <p> E-mail: $perfil->email </p>                    <img src='$img' alt=''/>Nome da imagem: $perfil->img                </div>                 ";	   endwhile;		?></body></html>

Ia postar umas prints mostrando o resultado.. e as imagens.. mas o imgur ta meio lento...

 

Veja a linha 24, a linha 28  e a linha 34...   

O código.. eu testei e funciona.. assim que o imgur normalizar eu atualizo meu post com as imagens do teste... 

 

Eu insisto no lance de você trocar o xampp pelo EASYPHP.  Desde 2009 eu uso o easyphp e nunca tive problemas com nada... ao contrário de que muita gente tem problemas com certas coisas no xampp ou o wampsever.

Por isso o EasyPHP é o melhor.

 

 

EDIT: Como prometido os prints:

 

Primeiro como está no banco de dados:

51ECB5i.png

 

Agora o código, embora já tenha postado mais acima... nunca é demais postar uma imagem do código no meu IDE

7Ju73MU.png

 

 

Agora o resultado disso tudo funcionando:

BAOacF4.png

Esqueci de postar que a conexão entre mySQLi  é assim:

<?php   $conexao = mysqli_connect("localhost","usuario","senha","Nome do banco de dados"); 

apenas isso. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

EDITADO ::   

 

 

Olá dif !!! , muito obrigado !!!! deu certinho , eu tinha dito que tinha que usar PDO etc etc, falei bobagem, o EASYPHP aceita o myslqi, então não muda quase nada dos meus códigos anteriores, só adicionar o i no final hahahahaha

 

 

Agradeço sua ajuda e sua paciencia !!! Desculpa tantos problemas e duvidas , como eu disse sou novo no mundo da programação !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@

 

No código não tem erros. tá praticamente igual ao meu exemplo.

O problema é você tentando usar o PDO onde não precisa.

 

Apague todo o conteúdo do seu arquivo connect.php... e coloque apenas isso. e exatamente como coloquei:

<?php   $connect = mysqli_connect("localhost","root", "", "db_jobshere");

assim mesmo.. apenas duas linhas sem fechar a tag php. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou aqui !!

 

O que eu fiz foi que eu baixei o EASYPHP, mudei meus códigos que estavam em mysql  para mysqli , utilizei os códigos que o DIF passou, e como resultado o código deu certo.

 

O problema que estava tendo era referente ao XAMPP , o porque disso, eu realmente não sei.

 

Caso alguém esteja com este mesmo problema, utilize o EASYPHP e comandos em mysqli.

 

Att,

 

Pedro

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×