Preciso de uma ajuda: Estou tentando exibir dados da minha tabela só q eu preciso que seja exibido apenas um registro por página ou a página que o usuário solicitar. Já até encontrei exemplos de paginação, mas, nada q faça referência a essa modalidade.
Sei q o problema deve ser simples, mas, já não estou mais conseguindo enxergar o óbvio.
No meu código está acontecendo o seguinte: tenho 4 registros na tabela;
se eu digito um numero o registro é mostrado numa boa, porém se eu clico em
"Anterior" ou "próximo" na url mostra 'pag'com valor correto, mas na tela sou enviado p/ o 1º registro.
Pergunta
WSoares9
Olá pessoal,
Preciso de uma ajuda: Estou tentando exibir dados da minha tabela só q eu preciso que seja exibido apenas um registro por página ou a página que o usuário solicitar. Já até encontrei exemplos de paginação, mas, nada q faça referência a essa modalidade.
Sei q o problema deve ser simples, mas, já não estou mais conseguindo enxergar o óbvio.
No meu código está acontecendo o seguinte: tenho 4 registros na tabela;
se eu digito um numero o registro é mostrado numa boa, porém se eu clico em
"Anterior" ou "próximo" na url mostra 'pag'com valor correto, mas na tela sou enviado p/ o 1º registro.
Se alguém puder ajudar agradeço muitíssimo.
Segue abaixo o código para análise.
Nome da tabela: comentarios
Codigo: int(10) autoIncrement
Nome: varchar(60)
email: varchar(60)
data: datetime
comentario: text
exibe_comentario.php
<html>
<head>
<title>Comentários</title>
<link href="estilo.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h4 align="left">Comentários</h4>
<?php
// Conecta ao servidor e seleciona o banco de dados
include("msqlconfig.inc");
$reg_por_pag = 1; // Define a qtd. de Registros por página
// Usuário digita o número do comentário a ser exibido
echo"
<form action='exibe_comentario.php' method='post'>
<table width='298' height='20' border='0' align='left'>
<tr>
<td><p align='left'>Digite o nº da página: <input name='pag' type='text' size='4' /></p></td>
<td><input type='submit' value='OK' align='left' /></td>
</tr>
</table>
</form> </br></br>";
// Pegar o nº da página digitada pelo usuário 'pag'
$pag_atual = intval($_POST['pag']);
// captura a quantidade de registros na tabela
$ultimo_reg = mysql_num_rows(mysql_query("select * from comentarios"));
echo '$ultimo_reg= '.$ultimo_reg; // até aqui todo OK
// Se a variável $pag_atual não contiver nenhum valor,
// será atribuido a ela o valor do ultumo registro na tabela
if (!$pag_atual) {
$pag_atual = $ultimo_reg;
}
// Calcular o 1º registro DE CADA PÁGINA
// Exemplo1: (1 * 1) - 1 = 0
// Exemplo2: (2 * 1) - 1 = 1
$inicio_da_pag = ($pag_atual * $reg_por_pag) - $reg_por_pag;
// Lê na tabela "comentarios" o registro a ser mostrado
// LIMIT 'reg. inicial , qtd de reg.'
if (!$_POST['pag']){
// caso o usuário não tenha digitado nada
$query = "select * from comentarios order by Codigo desc LIMIT $inicio_da_pag, $reg_por_pag";
}
else {
// caso o usuário tenha digitado um nº de página
$query = "select * from comentarios where Codigo = '$_POST[pag]'";
}
$res = mysql_query($query) or die("Pesquisa não realizada");
// Seleciona um campo da tabela 'comentarios',
// só pra saber a qtd. de registros existentes
$consulta = mysql_query("SELECT nome FROM comentarios");
// Captura o número de registros lidos
$total_registros = mysql_num_rows($consulta);
// Conhecendo o total de páginas existentes
// Como a intenção é mostrar 1 reg. por página,
// logo, não há necessidade de cálculo, nem arredondamento (ceil)
//$total_paginas = ceil ($total_registros/$reg_por_pag);
$total_paginas = $total_registros;
//calcula o valor de 'pag' a ser passado para a url.
if ($pag_atual>1)
{
$anterior=<a href="exibe_comentario.php?pag='.($pag_atual-1).'"> Anterior</a>';
}
else {
$anterior="Anterior";
}
if ($total_paginas>$pag_atual)
{
$proximo='<a href="exibe_comentario.php?pag='.($pag_atual+1).'"> Próximo</a>';
}
else {
$proximo="Próximo";
}
if ($pag_atual>=$total_paginas)
{
$proximo="Próximo";
}
echo "<div id='mostra_comentario'>";
// Exibe os Links para resgistros "ANTERIOR" e "PRÓXIMO"
echo "
<table width='270' heigth='20' border='0'>
<tr>
<td><div id='reg_anterior'>$anterior</div></td>
<td><div id='reg_proximo'>$proximo</div></td>
</tr>
</table>";
while($mostra = mysql_fetch_array($res)) {
// Converte a DATA para o formato Brasileiro
$data = $mostra['data]; //origem: aaaa-mm-dd 00:00:00
$novadata = substr($data,8,2)."/".substr($data,5,2)."/".substr($data,0,4);
echo "
<table width='270' height='120' border='1' align='left'>
<tr>
<td>Usuário: ".$mostra['Nome']."</td>
</tr>
<tr>
<td>E-mail: ".$mostra['email']."</td>
</tr>
<tr>
<td>Data: ".$novadata."</td>
</tr>
<tr>
<td>Comentário: ".$mostra['comentario']."</td>
</tr>
</table>";
echo "</div>";
}
?>
</body>
</html>
Editado por WSoares9Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.