(php/mysql) Problema para visualizar imagem

Não sou programador, mas pediram-me para efectuar uma aplicação em php. O meu objectivo neste momento é fazer aparecer uma imagem que carreguei para a base de dados. O script está feito de modo a que apenas uma imgem seja seleccionada, no caso a que tiver o campo 'activa' = "S". Ficam aqui os scripts criados:

insere.php (a funcionar perfeitamente)
************************************************************
<html>
<head>
<title>Inserção de imagem / texto</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>
<?php
if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$mensagem = $_POST["mensagem"];
$activa = $_POST["activa"];

$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);



if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}



mysql_connect("localhost", "xxx", "xxx") or die ("Erro na Ligação ao Servidor");

if ($activa=="S") {
$sql2 = "SELECT * from caixa where activa = \"S\"";
$res = mysql_db_query("bd", $sql2);
if ($res) {
$count=0;
while ($registo = mysql_fetch_array($res)) {
$reg[$count] = $registo['id'];
$count++;
}
}
for ($i=0; $i<=$count-1; $i++) {
$sql3="update caixa set activa='N' where id='".$reg[$i]."'";
$res2 = mysql_db_query("bd", $sql3);
if ($res2) {
print ("Activação da nova caixa efectuada com sucesso! <br>");
}
}
}


$query = "INSERT INTO caixa(nome, tipo, tamanho, ficheiro, mensagem, activa) VALUES('$fileName', '$fileType', '$fileSize', '$content', '$mensagem', '$activa')";

$result = mysql_db_query("bd", $query);
if (!$result) {
echo "Falha no Upload do Ficheiro!!!";
}else{
echo "<br>File $fileName uploaded<br>";}

mysql_close();

}
?>
<form action="" method="post" enctype="multipart/form-data" name="uploadform">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="userfile" type="file" class="box" id="userfile">
</td>
<p> Mensagem / Descrição do Ficheiro!
<input type="text" name="mensagem" size=150>
<p>Activar?
<br>
<input type="radio" name="activa" value="S">Sim
<br>
<input type="radio" name="activa" value="N" checked>Não
<p> Upload do Ficheiro!
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>
</body>
</html>
*******************************************************************

visualiza.php (em vez de aparecer a imagem, como era suposto, aparece o código da mesma)
*****************************************************************
<html>
<head>
<title>Conteudo Inicial</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?
mysql_connect("localhost", "xxx", "xxx") or die ("Erro na Ligação ao Servidor");

$query = "SELECT * FROM caixa where activa ='S'";
$result = mysql_db_query("bd", $query) or die('Erro! Falha na pesquisa!');
if(mysql_num_rows($result) == 0){
echo "Nenhuma mensagem activa <br>";
}else{
if ($registo = mysql_fetch_array($result)) {
$ficheiro = $registo['ficheiro'];
$ficheiro = stripslashes($ficheiro);
$mensagem = $registo['mensagem'];
$tamanho = $registo['tamanho'];
$tipo = $registo['tipo'];
$nome = $registo['nome'];

print ("<br> $mensagem <br> $tamanho <br> $tipo <br>");
print ("<br> <br> <br> <be> <br>");

header("Content-type: $tipo");


echo "$ficheiro";

}else{
print("Site em Manutenção!");
}
}
?>
</body>
</html>
***************************************************************

Agradeço antecipadamente qualquer solução.

Cumprimentos,
Paulo Silva Pinto
 
Última edição:
Obrigado pela ajuda, mas não resolveu. Com o echo "<img src=\"$ficheiro\">"; aparece o quadrado com uma cruz a dizer que realmente procurou exibir a imagem, mas à frente dissso continua a aparecer o código da mesma. Também retirei o header("Content-type: $tipo");, mas este não será necessário para o browser saber o tipo de imagem a exibir?

Mais alguma solução?

Obrigado mais uma vez,

Paulo Silva Pinto
 
Acho que tens de rever o teu sistema de upload da imagem.
Para onde estás a enviar a imagem?
echo "<img src=\"caminho_para_o_ficheiro/$ficheiro\">"; tem de dar a não ser que haja algum problema com o envio da imagem.

Vê por aqui.

Boa sorte.
 
O upload está a ser efectuado para dentro da base de dados mysql. Já confirmei que as imagens estão lá pois tenho um script que me permite visualiza-las a partir de um url. O que não consigo é que elas abram imediatamente sem ser preciso clicar no tal url. Já perdi horas a pesquisar e não encontro nada de errado no meu script, mas o certo é que não funciona.

Obrigado pelo link que me deste, Vou ver isso.
 
O upload está a ser efectuado para dentro da base de dados mysql. Já confirmei que as imagens estão lá pois tenho um script que me permite visualiza-las a partir de um url. O que não consigo é que elas abram imediatamente sem ser preciso clicar no tal url. Já perdi horas a pesquisar e não encontro nada de errado no meu script, mas o certo é que não funciona.

Obrigado pelo link que me deste, Vou ver isso.
o que tens de fazer é por esse url que falas dentro da <img src='url'>
 
Back
Topo