Ir para conteúdo

Arquivado

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

Camila de Paula

Erro ao visualizar imagem, puxando caminho salvo no Mysql

Recommended Posts

Olá, boa tarde!

 

Criei uma pasta no meu diretório para salvar imagens, e salvo o caminho no banco de dados. As imagens estão indo para o diretório corretamente mas não estou conseguindo puxar o caminho para mostrar a imagem, no lugar da imagem aparece a aquela imagem de erro em miniatura.

Já pesquisei algumas formas de fazer isso, mas nenhuma deu certo no meu código.

 

Alguém pode me ajudar?

 

Página "listar.php", onde pretendo mostrar a imagem (por favor desconsiderem os caracteres de ESPAÇO dentro da tabela, vou definir o tamanho da tabela posteriormente):

<?php error_reporting(E_ALL); ?>
<?php
session_start();
if (!isset($_SESSION['login_session']) && !isset($_SESSION['senha_session'])) {
	echo "<meta http-equiv='refresh' content='0, ..\..\sistema\index.php'>";
}else{
?>
<?php
if(file_exists("init.php")) {
	require "init.php";		
} else {
	echo "Arquivo init.php nao foi encontrado";
	exit;
}

if(!function_exists("Abre_Conexao")) {
	echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
	exit;
}

Abre_Conexao();
$re = mysql_query("SELECT * FROM motoristas ORDER BY motoristas.motorista;");
if(mysql_errno() != 0) {
	if(!isset($erros)) {
		echo "Erro o arquivo init.php foi auterado, nao existe $erros";
		exit;
	}
	echo $erros[mysql_errno()];
	exit;
}
?>
<html>
<head>
<title>Motoristas Cadastrados</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="../../sistema/style.css" rel="stylesheet" type="text/css" />
<link href="../../sistema/css/menu.css" rel="stylesheet" type="text/css" />
</head>

<body>

<div id='cssmenu'>
<ul>
   <li class='active has-sub'><a href='#'><span>Emitir</span></a>
      <ul>
         <li class='has-sub'><a href=""><span>Contrato Veículos</span></a>
            <ul>
               <li><a href="../../sistema/contrato_veiculo_auto.php"><span>Auto</span></a></li>
               <li><a href="../../sistema/contrato_veiculo_van.php"><span>Van</span></a></li>
                <li class='last'><a href="../../sistema/contrato_veiculo_suv.php"><span>SUV</span></a></li>
            </ul>
         </li>
         <li class='has-sub'><a href="../../sistema/contrato_motorista.php"><span>Contrato Motorista</span></a></li>
           <li class='has-sub'><a href="../../sistema/nflocadora.php"><span>NF/Fatura</span></a></li>
      </ul>
   </li>
   <li class='active has-sub'><a href='#'><span>Clientes</span></a>
    <ul>
         <li class='has-sub'><a href="../../sistema/cad_cliente.php"><span>Cadastrar</span></a></li>
         <li class='has-sub'><a href="../listar.php"><span>Consultar</span></a></li>
  </ul>
  </li>
   <li class='active has-sub'><a href='#'><span>Motoristas</span></a>
    <ul>
         <li class='has-sub'><a href="../../sistema/cad_motorista.php"><span>Cadastrar</span></a></li>
         <li class='has-sub'><a href="listar.php"><span>Consultar</span></a></li>
  </ul>
  </li>
  <li class='active has-sub'><a href='#'><span>Veículos</span></a>
    <ul>
         <li class='has-sub'><a href='../../sistema/cad_veiculo.php'><span>Cadastrar</span></a></li>
         <li class='has-sub'><a href="../veiculos/listar.php"><span>Consultar</span></a></li>
  </ul>
  </li>
  <li>                       
                         </li>
  <li><p><b>Bem Vindo(a) <?php echo $_SESSION['login_session'] ?></b> </p></li>
   <li><a href="?go=sair"><span>Sair</span></a></li>
</ul>
</div>



<br /><br><br>
<font size="3">Motoristas Cadastrados</font>
<table width="1020px" border="1">
	<tr>
    <td>Ver</td>
		<td>Editar</td>
        <td>Excluir</td>
		
        <td>Foto</td>
		<td>Motorista                                        </td>
        <td>Cor                </td>
        <td>Nextel                </td>
         <td>ID                </td>
         <td>Cel                </td>
         <td>Cel 2                </td>
         <td>E-mail                                </td>
        <td>RG                  </td>
        <td>CPF                     </td>
        <td>CNH                </td>
        <td>Categoria</td>
        <td>Vencimento</td>
		<td>Mãe                                              </td>
		<td>Pai                                              </td>
		
	</tr>
<?php
while($l = mysql_fetch_array($re)) {
	$id          = $l["id"];
	$imagem          = $l["imagem"];
	$motorista          = $l["motorista"];
	$cor          = $l["cor"];
	$nextel_mot        = $l["nextel_mot"];
	$id_mot    = $l["id_mot"];
	$cel_mot    = $l["cel_mot"];
	$cel2_mot    = $l["cel2_mot"];
	$email_mot    = $l["email_mot"];
	$rg_mot        = $l["rg_mot"];
	$cpf_mot    = $l["cpf_mot"];
	$cnh_mot    = $l["cnh_mot"];
	$categoria_mot    = $l["categoria_mot"];
	$vencimento_mot    = $l["vencimento_mot"];
	$mae_mot    = $l["mae_mot"];
	$pai_mot    = $l["pai_mot"];
	
	
echo "
	<tr>
	    <td>  <a href=\"ver.php?id=$id\"><img src=\"images/ver.jpg\" alt=\"\" title=\"ver\" /></a></td>
	    <td>  <a href=\"editar.php?id=$id\"><img src=\"images/edit.png\" alt=\"\" title=\"editar\" /></a></td>
		<td>  <a href=\"excluir.php?id=$id\"><img src=\"images/delete.png\" alt=\"\" title=\"excluir\" /></a></td>
		
		<td> <img src=mostrar_imagem.php?id=" .$imagem[ 'id']."></td>
		<td> $motorista</td>
		<td> $cor</td>		
		<td> $nextel_mot</td>
		<td> $id_mot</td>
		<td> $cel_mot</td>
		<td> $cel2_mot</td>
		<td> $email_mot</td>
		<td> $rg_mot</td>
		<td> $cpf_mot</td>
		<td> $cnh_mot</td>
		<td> $categoria_mot</td>
		<td> $vencimento_mot</td>
		<td> $mae_mot</td>
		<td> $pai_mot</td>
		
	</tr>\n";
}	
@mysql_close();
?>	
</table>

</body>
</html>
<?php
	}
	
	
	if(@$_GET['go'] == 'sair'){
		unset($_SESSION['login_session']);
		unset($_SESSION['senha_session']);
		echo "<meta http-equiv='refresh' content='0, ..\..\sistema\index.php'>";
	}
?>

E a página "mostrar_imagem.php", com as configurações que chamam a imagem:

<?php
        
	$id = $_GET["id"];
	$sql = "SELECT imagem FROM motoristas WHERE id=$id";
	$dados = mysql_query($sql);
	$linha = mysql_fetch_array($dados);
	$imagem = $linha["imagem"];
	
	header("content-type: image/jpeg");
	echo $imagem;
	flush(); r
?>	

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você acessar mostrar_imagem.php?id=<algum_id_valido>, a imagem aparece no navegador? Se não aparecer, faça o seguinte:

 

1. retire o "header("content-type: image/jpeg");", para exibir o conteúdo gerado pelo script

 

2. Habilite todas as exibições de erro, como mostrado neste tópico

 

Execute de novo e veja qual é o resultado

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você acessar mostrar_imagem.php?id=<algum_id_valido>, a imagem aparece no navegador? Se não aparecer, faça o seguinte:

 

1. retire o "header("content-type: image/jpeg");", para exibir o conteúdo gerado pelo script

 

2. Habilite todas as exibições de erro, como mostrado neste tópico

 

Execute de novo e veja qual é o resultado

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql

 

 

Beraldo,

 

A imagem não aparece depois de colocar o caminho com o ID. Antes e depois de feitas estas alterações, dá o mesmo erro de caminho não encontrado "The system cannot find the path specified." Isso na página /mostrar_imagem.php?id=<457>. Na página listar.php não apresenta nenhum erro.

 

 

Ps: Será que é possível manter as funções mysql por enquanto? São muitas páginas no sistema e para alterar tudo vai dar muito trabalho. Queria tentar resolver o erro da imagem primeiro.

 

Código com alterações para exibir todos os erros:

 

listar.php

<?php

ini_set( 'display_errors', true );

error_reporting( E_ALL ); ?>
<?php
session_start();
if (!isset($_SESSION['login_session']) && !isset($_SESSION['senha_session'])) {
	echo "<meta http-equiv='refresh' content='0, ..\..\sistema\index.php'>";
}else{
?>
<?php
if(file_exists("init.php")) {
	require "init.php";		
} else {
	echo "Arquivo init.php nao foi encontrado";
	exit;
}

if(!function_exists("Abre_Conexao")) {
	echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
	exit;
}

Abre_Conexao();
$re = mysql_query("SELECT * FROM motoristas ORDER BY motoristas.motorista;")or die( mysql_error() );
if(mysql_errno() != 0) {
	if(!isset($erros)) {
		echo "Erro o arquivo init.php foi auterado, nao existe $erros";
		exit;
	}
	echo $erros[mysql_errno()];
	exit;
}
?>
<html>
<head>
<title>Motoristas Cadastrados</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="../../sistema/style.css" rel="stylesheet" type="text/css" />
<link href="../../sistema/css/menu.css" rel="stylesheet" type="text/css" />
</head>

<body>

<div id='cssmenu'>
<ul>
   <li class='active has-sub'><a href='#'><span>Emitir</span></a>
      <ul>
         <li class='has-sub'><a href=""><span>Contrato Veículos</span></a>
            <ul>
               <li><a href="../../sistema/contrato_veiculo_auto.php"><span>Auto</span></a></li>
               <li><a href="../../sistema/contrato_veiculo_van.php"><span>Van</span></a></li>
                <li class='last'><a href="../../sistema/contrato_veiculo_suv.php"><span>SUV</span></a></li>
            </ul>
         </li>
         <li class='has-sub'><a href="../../sistema/contrato_motorista.php"><span>Contrato Motorista</span></a></li>
           <li class='has-sub'><a href="../../sistema/nflocadora.php"><span>NF/Fatura</span></a></li>
      </ul>
   </li>
   <li class='active has-sub'><a href='#'><span>Clientes</span></a>
    <ul>
         <li class='has-sub'><a href="../../sistema/cad_cliente.php"><span>Cadastrar</span></a></li>
         <li class='has-sub'><a href="../listar.php"><span>Consultar</span></a></li>
  </ul>
  </li>
   <li class='active has-sub'><a href='#'><span>Motoristas</span></a>
    <ul>
         <li class='has-sub'><a href="../../sistema/cad_motorista.php"><span>Cadastrar</span></a></li>
         <li class='has-sub'><a href="listar.php"><span>Consultar</span></a></li>
  </ul>
  </li>
  <li class='active has-sub'><a href='#'><span>Veículos</span></a>
    <ul>
         <li class='has-sub'><a href='../../sistema/cad_veiculo.php'><span>Cadastrar</span></a></li>
         <li class='has-sub'><a href="../veiculos/listar.php"><span>Consultar</span></a></li>
  </ul>
  </li>
  <li>                       
                         </li>
  <li><p><b>Bem Vindo(a) <?php echo $_SESSION['login_session'] ?></b> </p></li>
   <li><a href="?go=sair"><span>Sair</span></a></li>
</ul>
</div>



<br /><br><br>
<font size="3">Motoristas Cadastrados</font>
<table width="1020px" border="1">
	<tr>
    <td>Ver</td>
		<td>Editar</td>
        <td>Excluir</td>
		
        <td>Foto</td>
		<td>Motorista                                        </td>
        <td>Cor                </td>
        <td>Nextel                </td>
         <td>ID                </td>
         <td>Cel                </td>
         <td>Cel 2                </td>
         <td>E-mail                                </td>
        <td>RG                  </td>
        <td>CPF                     </td>
        <td>CNH                </td>
        <td>Categoria</td>
        <td>Vencimento</td>
		<td>Mãe                                              </td>
		<td>Pai                                              </td>
		
	</tr>
<?php
while($l = mysql_fetch_array($re)) {
	$id          = $l["id"];
	$imagem          = $l["imagem"];
	$motorista          = $l["motorista"];
	$cor          = $l["cor"];
	$nextel_mot        = $l["nextel_mot"];
	$id_mot    = $l["id_mot"];
	$cel_mot    = $l["cel_mot"];
	$cel2_mot    = $l["cel2_mot"];
	$email_mot    = $l["email_mot"];
	$rg_mot        = $l["rg_mot"];
	$cpf_mot    = $l["cpf_mot"];
	$cnh_mot    = $l["cnh_mot"];
	$categoria_mot    = $l["categoria_mot"];
	$vencimento_mot    = $l["vencimento_mot"];
	$mae_mot    = $l["mae_mot"];
	$pai_mot    = $l["pai_mot"];
	
	
echo "
	<tr>
	    <td>  <a href=\"ver.php?id=$id\"><img src=\"images/ver.jpg\" alt=\"\" title=\"ver\" /></a></td>
	    <td>  <a href=\"editar.php?id=$id\"><img src=\"images/edit.png\" alt=\"\" title=\"editar\" /></a></td>
		<td>  <a href=\"excluir.php?id=$id\"><img src=\"images/delete.png\" alt=\"\" title=\"excluir\" /></a></td>
		
		<td> <img src=mostrar_imagem.php?id=" .$imagem[ 'id']."></td>
		<td> $motorista</td>
		<td> $cor</td>		
		<td> $nextel_mot</td>
		<td> $id_mot</td>
		<td> $cel_mot</td>
		<td> $cel2_mot</td>
		<td> $email_mot</td>
		<td> $rg_mot</td>
		<td> $cpf_mot</td>
		<td> $cnh_mot</td>
		<td> $categoria_mot</td>
		<td> $vencimento_mot</td>
		<td> $mae_mot</td>
		<td> $pai_mot</td>
		
	</tr>\n";
}	
@mysql_close();
?>	
</table>

</body>
</html>
<?php
	}
	
	
	if(@$_GET['go'] == 'sair'){
		unset($_SESSION['login_session']);
		unset($_SESSION['senha_session']);
		echo "<meta http-equiv='refresh' content='0, ..\..\sistema\index.php'>";
	}
?>

mostrar_imagem.php

<?php

ini_set( 'display_errors', true );

error_reporting( E_ALL );
        
	$id = $_GET["id"];
	$sql = "SELECT imagem FROM motoristas WHERE id=$id";
	$dados = mysql_query($sql)or die( mysql_error() );
	$linha = mysql_fetch_array($dados);
	$imagem = $linha["imagem"];
	
	
	echo $imagem;
	flush(); 
?>	

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso na página /mostrar_imagem.php?id=<457>.

Não use "<" e ">" na URL. Eu incluí só pra explicitar que era o valor a ser alterado.

Acesse: mostrar_imagem.php?id=457

 

 

Ps: Será que é possível manter as funções mysql por enquanto? São muitas páginas no sistema e para alterar tudo vai dar muito trabalho. Queria tentar resolver o erro da imagem primeiro.

Pode...

Mas, quanto mais adiar, mais coisas terá de alterar depois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

A estrutura do código tem vários erros, como é caso do select

 

 

$sql = "SELECT imagem FROM motoristas WHERE id=$id";

Deveria ser assim

 

 

$sql = "SELECT imagem FROM motoristas WHERE id=" . $id;

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

 

A estrutura do código tem vários erros, como é caso do select

$sql = "SELECT imagem FROM motoristas WHERE id=$id";

Deveria ser assim

$sql = "SELECT imagem FROM motoristas WHERE id=" . $id;

 

Miqueiasrafael, arrumei esta linha mas continua dando erro. Você disse que tem vários erros, pode me ajudar com os outros?

Não use "<" e ">" na URL. Eu incluí só pra explicitar que era o valor a ser alterado.

Acesse: mostrar_imagem.php?id=457

 

 

Pode...

Mas, quanto mais adiar, mais coisas terá de alterar depois.

 

 

Seguem erros:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) inE:\vhosts\transarqui.com.br\httpdocs\sistema_teste\cadastro\motoristas\mostrar_imagem.php on line 9

 

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in E:\vhosts\transarqui.com.br\httpdocs\sistema_teste\cadastro\motoristas\mostrar_imagem.php on line 9

Access denied for user 'ODBC'@'localhost' (using password: NO)

A linha 9:

$dados = mysql_query($sql)or die( mysql_error() );

Achei algumas coisas no Google sobre este erro, mas todos falam de um erro que dá no Mysql local, que foram resolvidos instalando um programa no computador e/ou alterando a senha do usuário ODBC, porém eu estou fazendo direto no servidor remoto e não entendi como arrumar isso.

Atualizando:

 

Acrescentei ao mostrar_imagem.php o código que permite acesso somente com login, e agora a tela apresenta o nome da minha imagem (nomedaimagem.jpg). Mas a página listar.php continua mostrando só a miniatura de erro de imagem.

 

 

Código mostrar_imagem.php

<?php

ini_set( 'display_errors', true );

error_reporting( E_ALL ); ?>
<?php
session_start();
if (!isset($_SESSION['login_session']) && !isset($_SESSION['senha_session'])) {
	echo "<meta http-equiv='refresh' content='0, ..\..\sistema\index.php'>";
}else{
?>
<?php
if(file_exists("init.php")) {
	require "init.php";		
} else {
	echo "Arquivo init.php nao foi encontrado";
	exit;
}

if(!function_exists("Abre_Conexao")) {
	echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
	exit;
}

Abre_Conexao();
$re = mysql_query("SELECT * FROM motoristas ORDER BY motoristas.motorista;")or die( mysql_error() );
if(mysql_errno() != 0) {
	if(!isset($erros)) {
		echo "Erro o arquivo init.php foi auterado, nao existe $erros";
		exit;
	}
	echo $erros[mysql_errno()];
	exit;
}
?>
<?php
        
	$id = $_GET["id"];
	$sql = "SELECT imagem FROM motoristas WHERE id=" .$id;
	$dados = mysql_query($sql)or die( mysql_error() );
	$linha = mysql_fetch_array($dados);
	$imagem = $linha["imagem"];
	
	
	echo $imagem;
	flush(); 
?>	
<?php
	}
	
	
	if(@$_GET['go'] == 'sair'){
		unset($_SESSION['login_session']);
		unset($_SESSION['senha_session']);
		echo "<meta http-equiv='refresh' content='0, ..\..\sistema\index.php'>";
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

só tentando ajudar: selecionando uma imagem numa pasta chamada "capas"
c/ PDO:

<?php
$con = new PDO('mysql:host=localhost;dbname=XXX', 'XXX', 'XXX');

$idlivro=1; // OU: $idlivro=$_GET['id']; se for o caso
$rs = $con->prepare("SELECT * FROM capas id where id=?");
$rs->bindParam(1, $idlivro);
$rs->execute();

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>capa do livro selecionado</title>

<body>
<h2>capa do livro:</h2>
<?php
while($row = $rs->fetch(PDO::FETCH_OBJ)){
echo "<img src='capas/$row->nome'>";
}
?>

<p><a href="busca.php">Retorna à página de pesquisa</a></p>
</body>
</html>

só deixando bem claro: "nome" é o nome do arquivo de imagem (exs:capa1.jpg,matematica.jpg etc.)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro de acesso ao banco. Aceso negado. Verifique usuário e senha

 

Beraldo, ODBC@localhost é usuário padrão, tipo root. Como eu disse na atualização acima, já arrumei isso e agora a página mostrar_imagem.php está mostrando o nome da minha imagem ao invés de mostrar a imagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o script mostra o nome da imagem por causa disto:

 

 

echo $imagem;

 

Então no banco você salvou o path da imagem, não o binário dela.

 

Se quiser que o script exiba a imagem, leia o conteúdo de $imagem e dê um echo nele. Pode usar readfile(), por exemplo. Lembre-se de alterar o cabeçalho, com header(), para "image/tipo_da_image", conforme o mime-type correto

Compartilhar este post


Link para o post
Compartilhar em outros sites

o script mostra o nome da imagem por causa disto:

echo $imagem;

Então no banco você salvou o path da imagem, não o binário dela.

 

Se quiser que o script exiba a imagem, leia o conteúdo de $imagem e dê um echo nele. Pode usar readfile(), por exemplo. Lembre-se de alterar o cabeçalho, com header(), para "image/tipo_da_image", conforme o mime-type correto

 

 

Fiz o readfile(), agora aparece a o quadradinho de erro de imagem.

 

O código ficou assim:

 

mostrar_imagem.php

<?php

ini_set( 'display_errors', true );

error_reporting( E_ALL ); ?>
<?php
session_start();
if (!isset($_SESSION['login_session']) && !isset($_SESSION['senha_session'])) {
	echo "<meta http-equiv='refresh' content='0, ..\..\sistema\index.php'>";
}else{
?>
<?php
if(file_exists("init.php")) {
	require "init.php";		
} else {
	echo "Arquivo init.php nao foi encontrado";
	exit;
}

if(!function_exists("Abre_Conexao")) {
	echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
	exit;
}

Abre_Conexao();
$re = mysql_query("SELECT * FROM motoristas ORDER BY motoristas.motorista;")or die( mysql_error() );
if(mysql_errno() != 0) {
	if(!isset($erros)) {
		echo "Erro o arquivo init.php foi auterado, nao existe $erros";
		exit;
	}
	echo $erros[mysql_errno()];
	exit;
}
?>
<?php

        
	$id = $_GET["id"];
	$sql = "SELECT imagem FROM motoristas WHERE id=$id";
	$dados = mysql_query($sql)or die( mysql_error() );
	$linha = mysql_fetch_array($dados);
	$imagem = $linha["imagem"];
	header('Content-type: image/jpg');
	
	 readfile("..\..\sistema\foto".$row['imagem']);
	flush(); 
?>	
<?php
	}
	
	
	if(@$_GET['go'] == 'sair'){
		unset($_SESSION['login_session']);
		unset($_SESSION['senha_session']);
		echo "<meta http-equiv='refresh' content='0, ..\..\sistema\index.php'>";
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camila,

 

Eu já usei em varias aplicações minhas a rotina para mostrar uma imagem, cujo nome eu tenha gravado em uma tabela, e é muito simples. Exite entretanto alguns requisitos que eu observo:

- gravo o nome do arquivo que contem a imagem exatamente como está escrito o nome do arquivo;

- Gravo o nome do arquivo da imagem com a respectiva extensão, ou seja: jpg, pd, gif, tc.

- Informo, na hora da localização do arquivo, o caminho (pasta) onde o mesmo se encontra;

Atendido estes requisitos não tem como dar erro. Abaixo mostro a parte do codigo que uso para mostrar uma imagem:

<?php
$path ='hawbs/'; (nome da pasta onde está o arquivo)
$exte ='.jpg'; (defino a extensão do arquivo que estou abrindo)
if(file_exists("$path$n_hawb$exte")) { (verifico se arquivo existe ($n_hawb é a variável que contem o nome do arquivo) )
echo "<td colspan=\"2\" align=\"center\"><img border=\"0\" src=\"$path$n_hawb$exte\" width=\"800\" height=\"350\"><td>"; (se o arquivo existir é mostrado)
}
else {
echo "<td colspan=\"2\" align=\"center\"><font color=\"red\" size=\"4\"><b>HAWB NÃO DIGITALIZADA</b></font><td>"; (se não existir o arquivo, avisa que o arquivo não existe)
}
?>
Espero que tenha ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retire a linha do header() para ver exatamente o que está sendo exibido. Pode ser que haja alguma mensagem de erro. E o header não deixa que ela seja exibida.

 

Outro detalhe é o mime-type da imagem. Você fixou em image/jpeg. Todas as imagens são jpg mesmo? Nunca haverá png, gif ou outras?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Camila,

 

Eu já usei em varias aplicações minhas a rotina para mostrar uma imagem, cujo nome eu tenha gravado em uma tabela, e é muito simples. Exite entretanto alguns requisitos que eu observo:

- gravo o nome do arquivo que contem a imagem exatamente como está escrito o nome do arquivo;

- Gravo o nome do arquivo da imagem com a respectiva extensão, ou seja: jpg, pd, gif, tc.

- Informo, na hora da localização do arquivo, o caminho (pasta) onde o mesmo se encontra;

Atendido estes requisitos não tem como dar erro. Abaixo mostro a parte do codigo que uso para mostrar uma imagem:

<?php
$path ='hawbs/'; (nome da pasta onde está o arquivo)
$exte ='.jpg'; (defino a extensão do arquivo que estou abrindo)
if(file_exists("$path$n_hawb$exte")) { (verifico se arquivo existe ($n_hawb é a variável que contem o nome do arquivo) )
echo "<td colspan=\"2\" align=\"center\"><img border=\"0\" src=\"$path$n_hawb$exte\" width=\"800\" height=\"350\"><td>"; (se o arquivo existir é mostrado)
}
else {
echo "<td colspan=\"2\" align=\"center\"><font color=\"red\" size=\"4\"><b>HAWB NÃO DIGITALIZADA</b></font><td>"; (se não existir o arquivo, avisa que o arquivo não existe)
}
?>
Espero que tenha ajudado.

 

 

 

Paulorn,

 

De todos os requisitos que você citou, só não estou usando o nome real da imagem. Estou fazendo ele gerar o nome.

No caso, não consegui implementar este código ao meu, ,está dando vários erros de sintaxe. Acredito que é porque já estou usando um comando para exibir outros dados do id dentro de uma tabela.

Como ficaria este código dentro do meu?

 

listar.php

<?php
while($l = mysql_fetch_array($re)) {
	$id          = $l["id"];
	$imagem          = $l["imagem"];
	$motorista          = $l["motorista"];
	$cor          = $l["cor"];
	$nextel_mot        = $l["nextel_mot"];
	$id_mot    = $l["id_mot"];
	$cel_mot    = $l["cel_mot"];
	$cel2_mot    = $l["cel2_mot"];
	$email_mot    = $l["email_mot"];
	$rg_mot        = $l["rg_mot"];
	$cpf_mot    = $l["cpf_mot"];
	$cnh_mot    = $l["cnh_mot"];
	$categoria_mot    = $l["categoria_mot"];
	$vencimento_mot    = $l["vencimento_mot"];
	$mae_mot    = $l["mae_mot"];
	$pai_mot    = $l["pai_mot"];
	
	
echo "
	<tr>
	    <td>  <a href=\"ver.php?id=$id\"><img src=\"images/ver.jpg\" alt=\"\" title=\"ver\" /></a></td>
	    <td>  <a href=\"editar.php?id=$id\"><img src=\"images/edit.png\" alt=\"\" title=\"editar\" /></a></td>
		<td>  <a href=\"excluir.php?id=$id\"><img src=\"images/delete.png\" alt=\"\" title=\"excluir\" /></a></td>
		
		<td> <img src=mostrar_imagem.php?id=" .$imagem[ 'id']."></td>
		<td> $motorista</td>
		<td> $cor</td>		
		<td> $nextel_mot</td>
		<td> $id_mot</td>
		<td> $cel_mot</td>
		<td> $cel2_mot</td>
		<td> $email_mot</td>
		<td> $rg_mot</td>
		<td> $cpf_mot</td>
		<td> $cnh_mot</td>
		<td> $categoria_mot</td>
		<td> $vencimento_mot</td>
		<td> $mae_mot</td>
		<td> $pai_mot</td>
		
	</tr>\n";
}	
@mysql_close();
?>	

A linha deste código onde a imagem deveria aparecer é:

<td> <img src=mostrar_imagem.php?id=" .$imagem[ 'id']."></td>

Onde neste caso, estou usando outra página com o comando para exibir a imagem.

Retire a linha do header() para ver exatamente o que está sendo exibido. Pode ser que haja alguma mensagem de erro. E o header não deixa que ela seja exibida.

 

Outro detalhe é o mime-type da imagem. Você fixou em image/jpeg. Todas as imagens são jpg mesmo? Nunca haverá png, gif ou outras?

 

 

Beraldo,

Sem o header, a mensagem que está aparecendo é:

Warning: readfile(..\..\sistemaotode9964106d81ace3250649a743735e65.jpg) [function.readfile]: failed to open stream: Invalid argument in E:\vhosts\transarqui.com.br\httpdocs\sistema_teste\cadastro\motoristas\mostrar_imagem.php on line 46

Sobre mime-type, ele está fazendo subindo outras extensões também, mas este id que estou testando, é .jpg .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque "\" por "/", assim:

readfile("../../sistema/foto" . $row['imagem']);

(deveria haver uma barra entre "foto" e " . $row...", não?)

 

isso faz o script rodar em Linux e Windows.

Além disso, para exibir um barra-invertida, é preciso usar "\\" em vez de "\". Leia mais aqui: http://php.net/manual/pt_BR/language.types.string.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque "\" por "/", assim:

readfile("../../sistema/foto" . $row['imagem']);

(deveria haver uma barra entre "foto" e " . $row...", não?)

 

isso faz o script rodar em Linux e Windows.

Além disso, para exibir um barra-invertida, é preciso usar "\\" em vez de "\". Leia mais aqui: http://php.net/manual/pt_BR/language.types.string.php

 

 

Com as barra "/" não aparece a mensagem de erro, mas aparece uma página com milhares de caracteres.

Com a "\\" também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. Esses caracteres são o código binário da imagem.

Erros corrigidos, agora é hora de voltar a colocar o header, para que esses códigos virem a imagem que você quer exibir :thumbsup:

 

Obrigada, Beraldo!

A página mostrar_imagem.php está funcionando. Mas a listar.php continua não mostrando a imagem, e não apresenta nenhuma mensagem de erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testou com a exibição da imagem do mesmo ID que usou nos testes diretos com o script mostrar_imagem.php?

Talvez o problema seja por causa do header. Se o listar.php tentar exibir imagens que não sejam jpg, o mostrar_imagem.php não exibirá corretamente, pois você forçou o mime-type image/jpeg.

 

O correto seria salvar o mime-type durante o upload ou usar as funções do fileinfo para detectar o mime-type. Veja: http://php.net/manual/pt_BR/function.finfo-file.php

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.