Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
GpL

ajuda - galeria de produtos

Recommended Posts

GpL

Boa tarde,

Eu estou com um problema para desenvolver um script e tenho um pouco de urgência.

O problema é o seguinte:

Vou ter uma página em que vai buscar a uma tabela de BD o caminho para uma imagem e o preço do produto e não estou a conseguir apresentar só esse produto e criar uma espécie da paginação dentro dessa página para percorrer os registos da tabela, ou seja, tenho o produto X e o preço X na página e tenho de ter um botão seguinte que vá buscar o próximo registo à tabela e na mesma página me substitua a imagem e o preço X pelo Y, se é que me faço entender.

Algo do género:


<?php
$BD=mysql_select_db($database_ligacaobd,$ligacaobd);
$query= "Select * from galeria" ;
$resultado = mysql_query($query);
if ($resultado) {
		while ($registo = mysql_fetch_array ($resultado)){
			$imagem = $registo ["imagem"];
			$imagem2= "backoffice/" . $imagem;		
			print("<img height=\"350px\" width=\"250px\" src=\"$imagem2\" />");
		}
}
mysql_free_result ($resultado);
?>

O problema é que assim só me mostra a primeira imagem e não consigo mostrar as próximas na mesma  página.

Fico a aguardar alguma ajuda.

Cumprimentos

Share this post


Link to post
Share on other sites
hbarquero

Aqui vai uma sugestão :)

usa o limit no SQL

$query= "Select * from galeria limit $pagina,1" ;

Onde vais buscar o $pagina por Get, por exemplo

Outra coisa, se estas a ir buscar 1 único produto não necessitas ter um while.


Tudo o que não provoca a minha morte, torna-me mais forte.http://formacao-cursos.com

Share this post


Link to post
Share on other sites
GpL

São varios produtos, mas quero ir buscar um de cada vez, e ter botão para o anterior e próximo.

Share this post


Link to post
Share on other sites
hbarquero

Por mostrares 1 produto de cada vez é que não necessitas do ciclo while :)

aqui fica uma sugestão:

<?php
        
if (isset($_GET["pagina"]) {
         $pagina=$_GET["pagina"] -1 ;
} else {
         $pagina=0;
}

        $BD=mysql_select_db($database_ligacaobd,$ligacaobd);
        $query= "Select * from galeria limit ".$pagina.",1" ;
        $resultado = mysql_query($query);
        if ($resultado) {
                       If ($pagina>1) {
                         echo "<a href='?pagina=".$pagina-1."'>Anterior</a>";
                      }
                      $registo = mysql_fetch_array ($resultado);
                      $imagem = $registo ["imagem"];
                      $imagem2= "backoffice/" . $imagem;              
                      print("<img height=\"350px\" width=\"250px\" src=\"$imagem2\" />");
                      
                      echo "<a href='?pagina=".$pagina+1."'>Seguinte</a>";
                        
        }
        mysql_free_result ($resultado);
?>

Fiz isto à pressa por isso testa a ver que tal.


Tudo o que não provoca a minha morte, torna-me mais forte.http://formacao-cursos.com

Share this post


Link to post
Share on other sites
GpL

Depois de corrigir alguns pequenos erros, já dá +/-.. ou seja, os links não estao a dar bem, o $pagina+1 e $pagina-1 não tá a funcionar, mas se eu no link for directo para a ?pagina=1 aparece a 1ª imagem na BD e se for para para ?pagina=2 já me aparece o 2º registo. Agora o problema é os links não darem e o "seguinte" desaparecer quando não houver mais registos

obrigado pela ajuda dada até agora

Share this post


Link to post
Share on other sites
hbarquero

altera o seguinte:

nas 1ª secção onde tens o isset(...

mudas para:

if (isset($_GET["pagina"]) ) {
$limit=$_GET["pagina"]-1;
$pagina=$_GET["pagina"];
} else {
$limit=0;
$pagina=1;
}

aqui ja ficas com o limit e a pagina correctos, e separados.

no sql mudas a variável $pagina para $link

nos links colocas:

If ($pagina>1) {
echo "<a href='?pagina=".($pagina-1)."'>Anterior</a>";
}

e

echo "<a href='?pagina=".($pagina+1)."'>Seguinte</a>";

para que o seguinte fazes o sql Count à tabela, e só mostras se o $pagina+1 >= ao Count deve resolver o problema :)


Tudo o que não provoca a minha morte, torna-me mais forte.http://formacao-cursos.com

Share this post


Link to post
Share on other sites
GpL

Penso que já está a funcionar bem.

if (isset($_GET["pagina"]) ) {
   $limit=$_GET["pagina"]-1;
   $pagina=$_GET["pagina"];
} else {
   $limit=0;
   $pagina=0;
}


<?php
	$BD=mysql_select_db($database_ligacaobd,$ligacaobd);
	$result = mysql_query("SELECT * FROM galeria");
	$num_rows = mysql_num_rows($result);

        $query= "Select * from galeria limit ".$pagina.",1" ;
        $resultado = mysql_query($query);
        if ($resultado) {
                       If ($pagina>=1) {
   						echo "<a href='?pagina=".($pagina-1)."'>Anterior</a>";
						}

                      $registo = mysql_fetch_array ($resultado);
                      $imagem = $registo ["imagem"];
                      $imagem2= "backoffice/" . $imagem;              
                      print("<img height=\"350px\" width=\"250px\" src=\"$imagem2\" />");
				  if ($pagina < $num_rows-1) {
                      echo "<a href='?pagina=".($pagina+1)."'>Seguinte</a>"; 
				  }
        }
        mysql_free_result ($resultado);

?>

Obrigado pela ajuda e mais alguma sugestão para melhorar isto é benvinda.

Share this post


Link to post
Share on other sites
hbarquero

boas

Troca a variavel no Sql

$query= "Select * from galeria limit ".$pagina.",1" ;

tens de trocar o $pagina por $limit


Tudo o que não provoca a minha morte, torna-me mais forte.http://formacao-cursos.com

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
Sign in to follow this  

×

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.