Jump to content
alexmestre

mostrar as imagens da base de dados

Recommended Posts

alexmestre

Olá pessoal

Estou com um problema complicado para mim, pois estou ah horas a tenta lo resolver mas nao encontro a soluçao

pagina: func_registar_filmes.php


<?php

//conexao com a base de dados 
$servidor = "****";
$basedados = "*****";
$utilizador = "*****";
$password = "*****";
$ligacao = mysql_connect($servidor, $utilizador, $password)or die("ERROR: cannot connect"); 
    mysql_select_db($basedados, $ligacao) or die ("ERRO: CANNOT SELECT DB");



//lista de tipos de arquivos permidos
$tiposPermitidos = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png');
//tamanho maximo
$tamanhoPermitido = 1024 * 500;

//criando variaveis e guardando os dados peenchidos no formulario

//titulo do filme 
$titulo = $_POST['titulo'];
//genero do filme
$genero = $_POST['genero'];
//sinopse do filme
$sinopse = $_POST['sinopse'];
//ano de lançamento do filme
$ano = $_POST['ano'];
//link para download do filme
$link = $_POST['link'];


$nome = $_POST['nome'];


//o nome original do arquivo no computador do utilizador
$arqName = $_FILES['arquivo']['name'];
//o tipo mime do arquivo 
$arqType = $_FILES['arquivo']['type'];
//o tamanho do arquivo
$arqSize = $_FILES['arquivo']['size'];
//o nome temporario do arquivo com que foi guardado no servidor 
$arqTemp = $_FILES['arquivo']['tmp_name'];
//o codigo de erro associado a este upload de arquivo
$arqError = $_FILES['arquivo']['error'];



if ($arqError == 0){
	//verifica o tipo de arquivo enviado
	if(array_search($arqType, $tiposPermitidos) === false){
		echo 'O tipo de arquivo enviado é invalido!' ;
		//verifica o tamanho do arquivo enviado
	}else if ($arqSize > $tamanhoPermitido){
		echo 'o tamanho do arquivo enviado e maior que o limite!';
		//nao houverao erros, move o arquivo
	}else{

		$pasta = 'uploads/';


		//pega a extensao do arquivo enviado
		$extensao = strtolower(end(explode('.',$arqName)));
		//define o nome do arquivo usando um Unix TimesTamp
		$nome = time(). '.' . $extensao;

		//muda os caracteres protegidos do MySql 
		$nomeMySql = mysql_real_escape_string($_POST['titulo']);

		$upload = move_uploaded_file($arqTemp, $pasta . $nome);

		//verifica se o arquivo foi movido com sucesso
		if ($upload === true){

			$ficheiro = $pasta.$nome;
			echo $ficheiro;
			//cria uma query Mysql
			$sql = "INSERT INTO filmes (titulo, genero, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '$sinopse', '$ano', '$link', '$ficheiro')";

			$query = mysql_query($sql);

			if($query === true){

				echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=visualiza_filmes_admin.php'>
	<script type=\"text/javascript\">
	alert(\"Filme inserido com sucesso!\");
	</script>
	";	

			}
		}
	}
}else{
				echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=registo_filmes.php'>
	<script type=\"text/javascript\">
	alert(\"Nao foi possivel introduzir o filme, Tente novamente!!\");
	</script>
	";	

}
?>


com este script a imagem vai para a pasta do servidor e guarda na base de dados o caminho do servidor e o nome da imagem

o meu problema é que nesta pagina nao mostra as imagens mas reserva o espaço da imagem

visualiza_filmes_admin.php



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>filmes registrados</title>
</head>
<style type="text/css">

.titulo{
text-align:center;
text-shadow:#00C;
color:#06F;
font-family:"Lucida Console", Monaco, monospace;
font-size:24px;
font-weight:bold;

}



</style>
<body>



<table width="500" border="0" align="center">

    <?php
  include "config.php";
  

  
  $sql_Pegafilme = mysql_query("SELECT * FROM filmes ORDER BY titulo");
  while ($ln = mysql_fetch_array($sql_Pegafilme)){

$titulo = $ln['titulo'];
$genero = $ln['genero']; 
$sinopse = $ln['sinopse'];
$ano = $ln['ano'];
$link = $ln['link'];
$ficheiro = $ln['imagem'];


?>
<tr>
      <td align="center" valign="middle"><span class="titulo"><?php echo $titulo; ?> <?php echo $ano; ?></span></td>
    </tr>
  <tr>
      <td align="center" valign="middle" height="5px"><hr color="#0066CC" align="center" width="150px" /></td>
    </tr>
    <tr>
      <td align="center" valign="middle">Inserido por:  <?php echo $ficheiro; ?> |||| </td>
    </tr>
    <tr>
      <td align="center"><img  width="300" height="450"src="<?php echo $imagem; ?>"></td>
    </tr>
    <tr>
      <td align="center"><?php echo $genero; ?></td>
    </tr>
    <tr>
      <td align="center"><?php echo $sinopse; ?></td>
    </tr>
    <tr>
      <td align="center"><a href="<?php echo $link; ?>"  target="_blank"></a></td>
    </tr>
    <tr>
      <td align="center" valign="middle" height="5px"><hr color="#333333" align="center" width="500px" /></td>
    </tr>

    <?php 
}
  ?>
  </table></td>

</body>
</html>

por favor preciso de ajuda

Mais uma vez agradeço

Muito obrigado pela atenção prestada

Share this post


Link to post
Share on other sites
KTachyon

No visualiza_filmes_admin.php não tens o set da variável $imagem.

A pasta 'uploads' tem que estar na mesma directoria que o visualiza_filmes_admin.php, caso contrário não terás acesso à imagem a partir deste.

O que podes fazer também é colocar a pasta uploads na raíz do servidor web e em vez de colocares

<img src="uploads/nome.jpg" />

colocas

<img src="/uploads/nome.jpg" />


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
alexmestre

na base de dados tenho um campo imagem onde guarda o caminho e o nome e a extensão

assim-> uploads/nomedaimagem.gif

a pasta uploads esta no mesmo sitio que estes 2 ficheiros

portanto não necessita da "/" antes de uploads

acho que seja assim não sei

  $ficheiro = $pasta.$nome;

            echo $ficheiro;

na pagina vai me aparecer o caminho desta variavel

ou seja

        uploads/nomedaimagem.png

Share this post


Link to post
Share on other sites
KTachyon

Sim, se está na mesma pasta está certo. Mas repara que no código tens

<td align="center"><img  width="300" height="450"src="<?php echo $imagem; ?>"></td>

mas não tens a variável $imagem inicializada em lado nenhum. Na verdade o que queres que apareça ali é mesmo a variável $ficheiro.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
KTachyon

Mas é isso que te disse. Repara bem no php:

<?php
  include "config.php";
  

  
  $sql_Pegafilme = mysql_query("SELECT * FROM filmes ORDER BY titulo");
  while ($ln = mysql_fetch_array($sql_Pegafilme)){
                
        $titulo = $ln['titulo'];
        $genero = $ln['genero']; 
        $sinopse = $ln['sinopse'];
        $ano = $ln['ano'];
        $link = $ln['link'];
        $ficheiro = $ln['imagem'];
        
        
        ?>

Tens todas as variáveis, menos a $imagem, e estás a ir buscar a imagem e a colocá-la na variável $ficheiro.

EDIT: Se fizeres scroll down no teu site até encontrares uma entrada que diz "awake 0000", vês lá o 'uploads/1300310552.png', que é o que está na variável $ficheiro.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
alexmestre

<?php

  include "config.php";

 

 

  $sql_Pegafilme = mysql_query("SELECT * FROM filmes ORDER BY titulo");

  while ($ln = mysql_fetch_array($sql_Pegafilme)){

               

        $titulo = $ln['titulo'];

        $genero = $ln['genero'];

        $sinopse = $ln['sinopse'];

        $ano = $ln['ano'];

        $link = $ln['link'];

        $ficheiro = $ln['imagem'];

       

       

        ?>

entao tenho que por isto la certo?

aqilo que esta no iserido por nao ligues porque so meti por meter mas vai ser alterado pelo nome de utilizador que o inseriu

Share this post


Link to post
Share on other sites
KTachyon

Não foste tu que ecreveste o código, pois não?  :D

Esse código copiei do que colocaste no post inicial. Se fores ver ao teu site, tens em cada bloco, um texto que diz "Inserido por:", correcto? Ao lado da maioria deles tens o nome do ficheiro da imagem. Num dos casos tens o caminho para a imagem, exactamente como deve estar no código para mostrar a imagem.

Ou seja, ou trocas a variável $imagem por $ficheiro, ou então, nesse pedaço do código, a seguir à linha que diz:

$ficheiro = $ln['imagem'];

colocas

$imagem = $ficheiro;

ou

$imagem = $ln['imagem'];


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
alexmestre

nao nao

fui eu e mais um professor meu que fizemos

o prob e que eu ja estou devolta desta coisa do upload de imagens que ja nao distingo nada

tou assim 😲

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.