Ir para o conteúdo
ofx120

[Resolvido] Imagens em lista de resultados

Mensagens Recomendadas

ofx120

Olá a todos,

Este é o meu primeiro post aqui no forum e também relacionado com PHP.

Tenho uma página de pesquisa de artigos (dados) de uma tabela em mysql.

Tenho imagens de quase todos os artigos numa pasta no servidor.

A minha questão é se é possível colocar uma imagem junto ao detalhe de artigo.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ofx120

tiago.f obrigado pela resposta.

Eis o código que uso para apresentar os registos filtrados.

O que pretendo é disponibilizar na net uma base de dados que tenho em access (que estou a passar para um servidor na net MYSQL) para gerenciamento de artigos, digo isto para que saibam que não percebo nada de PHP, sendo que o que tenho conseguido é pelo tradicional sistema do "copy/paste". :(

Por isso agradeço a ajuda e paciência em tentar ajudar.

<!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>
   <title>Search results</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<?php
   $query = $_GET['query'];
   // gets value sent over search form

   $min_length = 3;
   // you can set minimum length of the query if you want

   if(strlen($query) >= $min_length){ // if query length is more or equal minimum length then

    $query = htmlspecialchars($query);
    // changes characters used in html to their equivalents, for example: < to >

    $query = mysql_real_escape_string($query);
    // makes sure nobody uses SQL injection

    $raw_results = mysql_query("SELECT * FROM tblArtigo
	    WHERE (`idArtigo` LIKE '%".$query."%') OR (`DescArtigoPT` LIKE '%".$query."%')") or die(mysql_error());

    // * means that it selects all fields, you can also write: `id`, `title`, `text`
    // articles is the name of our table

    // '%$query%' is what we're looking for, % means anything, for example if $query is Hello
    // it will match "hello", "Hello man", "gogohello", if you want exact match use `title`='$query'
    // or if you want to match just full word so "gogohello" is out use '% $query %' ...OR ... '$query %' ... OR ... '% $query'

    if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following

	    while($results = mysql_fetch_array($raw_results)){
	    // $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop


	    echo "<p><h3>".$results[idArtigo]."</h3>".$results['DescArtigoPT']."</p>";
		    // posts results gotten from database(title and text) you can also show id ($results['id'])
	    }

    }
    else{ // if there is no matching rows do following
	    echo "No results";
    }
   }
   else{ // if query length is less than minimum
    echo "Minimum length is ".$min_length;
   }

?>
</body>
</html>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Olá ofx.

Para mostrar a imagem de cada artigo basta que coloques a respectiva tag (<img>) quando "escreves" cada artigo - aqui:

echo "<p><h3>".$results[idArtigo]."</h3>".$results['DescArtigoPT']."</p>";
// posts results gotten from database(title and text) you can also show id ($results['id'])
}

A parte "dificil" é saberes o ur (atributo "src") da imagem....mas isso depende do teu sistema

ps: se facto não percebes nada de php, então, antes de mais, sugiro aprenderes. Copy&paste + Google não é boa política quando corremos o risco de não perceber o que estamos a re-utilizar!

Editado por tiago.f
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ofx120

Olá ofx.

Para mostrar a imagem de cada artigo basta que coloques a respectiva tag (<img>) quando "escreves" cada artigo - aqui:

echo "<p><h3>".$results[idArtigo]."</h3>".$results['DescArtigoPT']."</p>";
// posts results gotten from database(title and text) you can also show id ($results['id'])
}

A parte "dificil" é saberes o ur (atributo "src") da imagem....mas isso depende do teu sistema

ps: se facto não percebes nada de php, então, antes de mais, sugiro aprenderes. Copy&paste + Google não é boa política quando corremos o risco de não perceber o que estamos a re-utilizar!

Olá tiago.f

Obrigado pela resposta.

Embora não perceba nada de PHP, tenho alguns conhecimentos em VBA, pelo que a logica da programação não me é desconhecida.

As minhas imagens estão numa pasta no server.

O nome das imagens é o "IdArtigo" e podem ser em PNG ou JPG.

fiz testes com uma imagem fixa e na lista de resultados não consigo visualizar.

Contudo se a colocar fora dos resultados consigo ver.

Eis o código que uso para a ver a imagem:

<img src="http://softtoyou.com/bs/img/608001000.PNG" width="50" height="50">

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

O código parece-me OK.

Podes mostrar tudo (agora com a imagem fixa)?

Editado por tiago.f

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ofx120

Aqui está, desta forma consigo visualizar a imagem.

<!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>
   <title>Search results</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<?php
   $query = $_GET['query'];
   // gets value sent over search form

   $min_length = 3;
   // you can set minimum length of the query if you want

   if(strlen($query) >= $min_length){ // if query length is more or equal minimum length then

	    $query = htmlspecialchars($query);
	    // changes characters used in html to their equivalents, for example: < to >

	    $query = mysql_real_escape_string($query);
	    // makes sure nobody uses SQL injection

	    $raw_results = mysql_query("SELECT * FROM tblArtigo
			    WHERE (`idArtigo` LIKE '%".$query."%') OR (`DescArtigoPT` LIKE '%".$query."%')") or die(mysql_error());

	    // * means that it selects all fields, you can also write: `id`, `title`, `text`
	    // articles is the name of our table

	    // '%$query%' is what we're looking for, % means anything, for example if $query is Hello
	    // it will match "hello", "Hello man", "gogohello", if you want exact match use `title`='$query'
	    // or if you want to match just full word so "gogohello" is out use '% $query %' ...OR ... '$query %' ... OR ... '% $query'

	    if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following

			    while($results = mysql_fetch_array($raw_results)){
			    // $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop


			    echo "<p><h3>".$results[idArtigo]."</h3>".$results['DescArtigoPT']."</p>";
					    // posts results gotten from database(title and text) you can also show id ($results['id'])
			    }

	    }
	    else{ // if there is no matching rows do following
			    echo "No results";
	    }
   }
   else{ // if query length is less than minimum
	    echo "Minimum length is ".$min_length;
   }

?>
<img src="http://softtoyou.com/bs/img/608001000.PNG" width="45" height="45">
</body>
</html>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Olá,

se não estás a usar mysqli então em vez de

while($results = mysql_fetch_array($raw_results)){

deves ter

while($results = mysql_fetch_assoc($raw_results)){

depois no teu echo faltam algumas plicas em volta do IdArtigo

echo "<p><h3>".$results['IdArtigo']."</h3>".$results['DescArtigoPT']."</p>";

e acrescenta

echo '<img src="/images/' . $results['IdArtigo'] . '.PNG" width="45" height="45">';

logo de seguida (ou antes)

Assumo claro que as tuas imagens estão disponíveis na pasta "images", i.e, acessiveis atraves de

http://<site.pt>/images/<idArtigo>.png

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ofx120

Boa tarde tiago.f,

MUITO OBRIGADO

Como sabes funcionou na perfeição. (ou melhor, quase).

Tenho as seguintes questões;

1. Nalguns atigos não tenho foto, no meu sistema tenho um if que checa se tenho foto, e quando não tenho abre uma foto "sem foto".

2. Tenho fotos em PNG e JPG, é possivel incluir a possibilidade de abrir PNG ou JPG?

3. O resultados aparecem em linhas diferentes, é possivél colocar tudo na mesma linha?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Boa tarde tiago.f,

MUITO OBRIGADO

Como sabes funcionou na perfeição. (ou melhor, quase).

Tenho as seguintes questões;

1. Nalguns atigos não tenho foto, no meu sistema tenho um if que checa se tenho foto, e quando não tenho abre uma foto "sem foto".

2. Tenho fotos em PNG e JPG, é possivel incluir a possibilidade de abrir PNG ou JPG?

Tens que validar se o ficheiro existe:

$imagem = null;
if( file_exists($_SERVER["DOCUMENT_ROOT"] . "/images/" . $results['IdArtigo'] . ".jpg" ) {
$imagem = $_SERVER["DOCUMENT_ROOT"] . "/images/" . $results['IdArtigo'] . ".jpg";
}
if( file_exists($_SERVER["DOCUMENT_ROOT"] . "/images/" . $results['IdArtigo'] . ".png" ) {
$imagem = $_SERVER["DOCUMENT_ROOT"] . "/images/" . $results['IdArtigo'] . ".png";
}

if ($imagem) {
echo "<img ......
}

3. O resultados aparecem em linhas diferentes, é possivél colocar tudo na mesma linha?

É só juntar os 2 echos dentro do mesmo <p>...

Editado por tiago.f
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.