Jump to content
Angela_Santos

Página Seguinte Página Anterior

Recommended Posts

Angela_Santos

<?php
 $pagina=0;

 $pagina=(int)$_REQUEST['pagina'];
 $registosPorPagina=(int)$_REQUEST['produto_id'];

 $sql="select * from tabela order by indice limit " . $pagina * $registosPorPagina - $registosPorPagina - 1 . "," . $registosPorPagina;

 print "Página Anterior";
 print "<a href='" . $_SERVER['PHP_SELF'] . "?NumRegistos=5&pagina=" . $pagina+1 . "'>Página Seguinte</a>";

			?>

Eu tenho este código que deveria de me passar para a página seguinte e anterior, mas não o faz apresenta-me escrito isto:

Notice: Undefined index: pagina in C:\xampp\htdocs\site_callang\pag1.php on line 138

Notice: Undefined index: produto_id in C:\xampp\htdocs\site_callang\pag1.php on line 139

Página Anterior1'>Página Seguinte

Não sei como colocar a funcionar bem.

Edited by yoda

Share this post


Link to post
Share on other sites
Dannyps
$_REQUEST é uma array associativa que por padrão contém informações de $_GET, $_POST and $_COOKIE. Ora, se está a dar esses dois erros é porque esses índices(pagina e produto_id) não foram definidos nem com get, nem post, nem sob a forma de cookies. Se tentar abrir a página com o extra ?pagina=x&produto_id=y, teoricamente funcionará.

Share this post


Link to post
Share on other sites
yoda

Experimenta assim (não sei o contexto a que isto se aplica, mas deve funcionar) :

<?php

# pagina corrente, se nao estiver definida no request o valor defeito é zero
$pagina = array_key_exists('pagina', $_REQUEST) ? (int) $_REQUEST['pagina'] : 1;

# numero de registos por pagina, se nao estiver definido no request o valor defeito é 10
$registosPorPagina = array_key_exists('NumRegistos', $_REQUEST) ? (int) $_REQUEST['NumRegistos'] : 10;

# o comando LIMIT tem 2 parâmetros, vamos tratar deles fora da string $sql
$offset = $pagina > 1 ? ($pagina * $registosPorPagina - $registosPorPagina) : 0;
$limit = $registosPorPagina;

$sql = "SELECT * FROM tabela ORDER BY indice LIMIT $offset, $limit";

$anterior = $pagina > 1 ? $pagina - 1 : 1;
$seguinte = $pagina + 1;

print "<a href='" . $_SERVER['PHP_SELF'] . "?NumRegistos=5&pagina=" . $anterior . "'>Página Anterior</a>";
print "<a href='" . $_SERVER['PHP_SELF'] . "?NumRegistos=5&pagina=" . $seguinte . "'>Página Seguinte</a>";

?>

Edited by yoda
  • Vote 1

Share this post


Link to post
Share on other sites
Angela_Santos

Muito Obrigado já está a funcionar, é para um site que tem várias páginas de produtos.

A vossa ajuda foi preciosa

Share this post


Link to post
Share on other sites
yoda

Vais ter de aplicar ainda um procedimento : A lista que vais obter da base de dados tem um limite de registos, e acontece caso vás clicando continuamente na página seguinte que a query a uma certa altura não devolva registos, pois o offset já está fora do limite. Para resolveres isto, basta contares o número de registos que existem na base de dados numa segunda query.

Aqui está um exemplo da query (devolve o campo "n" como total de registos) :

$sql = "SELECT COUNT(*) AS n FROM tabela";

Edited by yoda
  • Vote 1

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.