Jump to content


Photo

Paginação Dos Resultados De Uma Consulta


  • Faça o login para participar
3 replies to this topic

#1 Daniel Filho

Daniel Filho

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 04/11/2009, 20:57

Bom, passei o dia quase todo hoje pesquisando sobre o assunto, e de fato, achei diversos tutoriais, mas além de ainda não ter pego a lógica completa do negócio, não consegui implatar os diversos códigos que eu vi, no meu.

A única coisa que eu entendi até agora é que eu preciso definir um LIMIT para a consulta.

Vejam bem, eu tenho o seguinte código:

<?php require "validacao.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>Exibir Notícias</title>
<style type="text/css">
form fieldset {
	font-family:Arial, Helvetica, sans-serif;
	font-size:14px;
	width:490px
}
form fieldset input {
	border:none;
	font:Arial, Helvetica, sans-serif;
	font-size:10px;
	font-weight:bold;
	text-align:left;
	color:#000;
	text-decoration:none
}
form fieldset a {
	font:Arial, Helvetica, sans-serif;
	font-size:10px;
	font-weight:bold;
	text-align:left;
	color:#F00;
	text-decoration:none
}
#cancelar a {
	font-family:Arial, Helvetica, sans-serif;
	font-size:10px;
	font-weight:bold;
	text-align:left;
	color:#F00;
	text-decoration:none
}
#titulo {
	font-weight:bold
}
</style>
</head>
<body>
<?php
	require "conexao.php";
	$exibir_noticia = "SELECT * FROM noticia ORDER BY id_noticia DESC";
	$query = mysql_query($exibir_noticia);
	$linhas = mysql_num_rows($query);
	for ($contador=0; $contador<$linhas; $contador++) {
		$titulo_noticia = mysql_result($query, $contador, "titulo_noticia");
		$conteudo_noticia = mysql_result($query, $contador, "conteudo_noticia");
		$fonte_noticia = mysql_result($query, $contador, "fonte_noticia");
		$autor_noticia = mysql_result($query, $contador, "autor_noticia");
		echo "<form>";
		echo "<fieldset>";
		echo "<legend>Exibindo Notícia</legend>";
		echo "<br />";
		echo "<b>$titulo_noticia</b>";
		echo "<br /><br />";
		echo $conteudo_noticia;
		echo "<br /><br />";
		echo "<b>Fonte:</b> $fonte_noticia";
		echo "<br /><br />";
		echo " <b>Autor:</b> $autor_noticia";
		echo "</fieldset>";
		echo "</form>";
		echo "<br />";
	}
	mysql_close($conexao);
	echo "<div id=\"cancelar\" align=\"left\"><a href=\"painel_de_controle.php\">VOLTAR</a></div>";
?>
</body>
</html>

Mas creio que apenas esta parte é de maior importancia:

<?php
	require "conexao.php";
	$exibir_noticia = "SELECT * FROM noticia ORDER BY id_noticia DESC";
	$query = mysql_query($exibir_noticia);
	$linhas = mysql_num_rows($query);
	for ($contador=0; $contador<$linhas; $contador++) {
		$titulo_noticia = mysql_result($query, $contador, "titulo_noticia");
		$conteudo_noticia = mysql_result($query, $contador, "conteudo_noticia");
		$fonte_noticia = mysql_result($query, $contador, "fonte_noticia");
		$autor_noticia = mysql_result($query, $contador, "autor_noticia");
		echo "<form>";
		echo "<fieldset>";
		echo "<legend>Exibindo Notícia</legend>";
		echo "<br />";
		echo "<b>$titulo_noticia</b>";
		echo "<br /><br />";
		echo $conteudo_noticia;
		echo "<br /><br />";
		echo "<b>Fonte:</b> $fonte_noticia";
		echo "<br /><br />";
		echo " <b>Autor:</b> $autor_noticia";
		echo "</fieldset>";
		echo "</form>";
		echo "<br />";
	}
	mysql_close($conexao);
?>

Como vocês que já são bem mais experientes podem perceber, trata-se de um loop com a finalidade de exibir em cascata os resultados de um consulta ao banco de dados.

A questão é que eu queria entender como fazer a paginação deste loop (tentei implantar vários códigos, mas nenhum deles deu certo, como já falei), exibindo 10 (por exemplo) registros por página.

Luz, por favor!

Desde já, grato!

:D

#2 luizmir

luizmir

    Turista

  • Usuários
  • 28 posts
  • Sexo:Não informado

Posted 05/11/2009, 09:09

for ($contador=0; $contador<=($linhas); $contador++);

if ($linhas<=10){
echo $linhas;
} else {

}
acredito ser por um caminho assim..

#3 Tonini

Tonini

    12 Horas

  • Usuários
  • 130 posts
  • Sexo:Masculino

Posted 05/11/2009, 13:11

[codebox]
<?PHP
$pagina = $_GET["pagina"];

$TAMANHO_PAGINA = 40;

if (!$pagina) {
$inicio = 0;
$pagina = 1;
} else {
$inicio = ($pagina - 1) * $TAMANHO_PAGINA;
}
$sql = "select * from Tabela order by CAMPO desc";
$sqlPag = $sql;
$sql .=(" limit " . $inicio . "," . $TAMANHO_PAGINA);

$RelQuery = $init->Query($sql);
$RelQueryPag = $init->Query($sqlPag);
$total_paginas = ceil($init->Rows($RelQueryPag) / $TAMANHO_PAGINA);
if ($total_paginas > 1){
$i = 0;
for ($i=1;$i<=$total_paginas;$i++){
if ($pagina == $i) {
echo $pagina . " ";
} else {
echo "<a href='consulta.php?pagina=" . $i . "'>" . $i . "</a> ";
}
}
}
?>
[/codebox]

Eu adaptei este código aqui do fórum, talvez existam maneiras melhores... porém...
CalvinBall.
Any player may declare a new rule at any point in the game.
The player may do this audibly or silently...

#4 Squall Robert

Squall Robert

    Mr. Squall - Mais Carne do que Osso (hihi)

  • Usuários
  • 507 posts
  • Sexo:Masculino
  • Localidade:Curitiba
  • Interesses:Php ... Php...Php

Posted 09/11/2009, 13:11

olá amigo....

vc precsa estuar a paginação...

tem muito tutoriais e codigos prontos pra isso..

mas como um bom programador vc deve ler tentar enteder e reescrever...
para que vc não precise sempre copiar um e colar

mas e basicamente um calculo na consulta

o MYSQL possui LIMIT e OFFSET

limit = limite de registros para a consulta
offset = de onde os registros devem comecar


digamos eu tenho 100 registros

a primeira pagina seria assim

LIMIT 10
OFFSET 0,
ou seja

pegar 10 registro comecando do 0

se eu colocar no offset = 10

vai pegar 10 registro comecando do 10

entaum é so usar a cabeça e fazer com que cada pagina receba paramentros para que vc possa executar as query retornando as paginas de acordo a que vc queira;;;


acho que isso....
<?php

$squall = new Squall();

$squall->Ajudando("você");

$resultado = $squall->solucao();  ?>




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq