Jump to content


Photo

Criar Um Limit


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

#1 TopBrasil

TopBrasil

    Normal

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

Posted 08/06/2006, 13:07

Ja tinha postado sobre essa dúvida, mais não consigue obter uma ajuda q resolve-se meu problema :(

O problema e o seguinte...

tenho uma pagina que gera alguns resultados de uma busca no bd

<?
require_once('config.php');
require_once('layout.php');

$objDB=start_db();

if(empty($_GET['id']) or !($catNome=$objDB->getOne("SELECT catNome FROM categorias WHERE Id=$_GET[id] LIMIT 1")) )
	Header("Location: ".HTTP_INDEX);

$objLay=new Layout(HTML_LAYOUT);
$objCad=$objLay->open(HTML_RANKCATEGORIA);

if(!isset($_GET['n']))
	$_GET['n']=0;

$page=$_GET['n']*PAGINA_RESULTADOS;

$arInfo=$objDB->getAll("SELECT cadastros.Id, cadSnome, votos, if(SUM(log.Id)/log.Id>0,SUM(log.Id)/log.Id,0) as Votoshoje, Cliques
FROM cadastros, categorias
LEFT JOIN log ON (log.Id=cadastros.Id)
WHERE cadastros.cadCategoria=categorias.Id and categorias.Id=$_GET[id]
GROUP BY cadastros.Id
ORDER BY votos DESC, Votoshoje DESC
LIMIT $page,".PAGINA_RESULTADOS);

for($n=0;$n<count($arInfo);$n++){
	$arInfo[$n]['n']=(string)(($n+1)+($page));
	$arInfo[$n][3]=@(string)(int)$arInfo[$n][3];
	$arInfo[$n][1]=@htmlspecialchars($arInfo[$n][1]);
}

if($_GET['n']>0)
	$objCad->replace_once('ant',$_GET['n']-1);
else
	$objCad->remove(0);

$numpages=$objDB->getOne('SELECT if(FLOOR(COUNT(*)/'.PAGINA_RESULTADOS.')=COUNT(*)/'.PAGINA_RESULTADOS.',FLOOR(COUNT(*)/'.PAGINA_RESULTADOS.'),FLOOR(COUNT(*)/'.PAGINA_RESULTADOS.')+1)
 FROM cadastros 
 WHERE cadastros.cadCategoria='.$_GET['id']
);

if($_GET['n']<$numpages-1)
	$objCad->replace_once('prox',$_GET['n']+1);
else
	$objCad->remove(1);

if($numpages>1){
	$objNs=$objCad->get_code(0);
	$objNsn=new Layout;
	$code='';
	for($n=0;$n<$numpages;$n++){
		$objNsn->code=$objNs->code;
		$objNsn->replace_once('n',$n);
		$objNsn->replace_once('m',$n+1);
		$code.=$objNsn->code;
	}
	$objCad->code_replace(0,$code);
}else
	$objCad->code_remove(0);

$objCad->replace_once('cat',$catNome);
$objCad->replace_once('id',$_GET['id']);

$objCad->loop_replace('r',$arInfo);
$objLay->make($objCad);
$objDB->disconnect();

?>


Esses resultados são impressos em uma página HTML atraves de "variaveis" [1] , [2], (m), [n] que são definidos nessa página que coloquei o codigo ai...

Bom isso funciona normalmente, so que essa página exibe varios resultos e faz uma paginação dos msmos, onde (m) e numero de páginas que existe...

Ate onde eu conseguir enteder isso e feito nesse trecho

$numpages=$objDB->getOne('SELECT if(FLOOR(COUNT(*)/'.PAGINA_RESULTADOS.')=COUNT(*)/'.PAGINA_RESULTADOS.',FLOOR(COUNT(*)/'.PAGINA_RESULTADOS.'),FLOOR(COUNT(*)/'.PAGINA_RESULTADOS.')+1)
 FROM cadastros 
 WHERE cadastros.cadCategoria='.$_GET['id']
);

if($_GET['n']<$numpages-1)
	$objCad->replace_once('prox',$_GET['n']+1);
else
	$objCad->remove(1);

if($numpages>1){
	$objNs=$objCad->get_code(0);
	$objNsn=new Layout;
	$code='';
	for($n=0;$n<$numpages;$n++){
		$objNsn->code=$objNs->code;
		$objNsn->replace_once('n',$n);
		$objNsn->replace_once('m',$n+1);
		$code.=$objNsn->code;
	}

O problema e que ele gera isso sem nenhum limit
ou seja a paginação fica infinita, se for gerada 5000 paginas ele vai mostrar os 5000 links..

Anterior 1 2 3 4 5 6 7 8 9 .................................................... 5000 Proxima


Ja tentei usar LIMIT na conexão mais deu certo...

so lembrando que outr sistema de paginação eu não posso usar pq senão quebro todo o sistema o site, preciso dar um jeito com esse ai msmo......
========================================
TopBrasil - * Aqui seu site tem valor *
========================================

========================================
E-mail: williamont@terra.com.br
========================================

========================================
MSN: wil_rock@hotmail.com
========================================

========================================
Doando - O TopBrasil apoia essa ideia
========================================

#2 ph_Rodrigues

ph_Rodrigues

    Jesus, take me back !!!

  • Usuários
  • 322 posts
  • Sexo:Masculino
  • Localidade:Goiânia-GO

Posted 08/06/2006, 14:26

Vc quer que fique como? Mais ou menos assim:
'1 2 3 ... 4998 4999 5000' ???
Pedro Henrique de M. Rodrigues <GO-Goiânia>

<----------- JESUS, O PÃO DA VIDA!!! ----------->

Zaplim - Soluções em Internet
Portal Veste Moda Brasil

#3 TopBrasil

TopBrasil

    Normal

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

Posted 08/06/2006, 16:38

não.. quero fique apenas

anterior 1 2 3 4 5 6 7 8 9 10 proxima

msmo que exista 30 páginas...

dps que a 10 tiver aberta ai ele mostra

anterior 11 12 13 14 15 16 17 18 19 20 proxima

e assim por diante...


eu tenho um sistema de paginação que fiz nesse site : http://rockbrasil.otakuhost.net mais não conseguir implementar =\



Não quero que ele lmite essa exição em apenas seilá 10 paginas.

exemplo

Anterior 1 2 3 4 5 6 7 8 9 10 proxima

se a 10 ja estiver aberta ele mostra

anterior 2 3 4 5 6 7 8 9 10 11 proxima

ou

anterior 10 11 12 13 14 15 16 17 18 19 20 proxima

eu fiz um sistema de paginação para um site meu ( http://rockbrasil.otakuhost.net ) que estou montando... mais não conseguir implementa nesse script =\
========================================
TopBrasil - * Aqui seu site tem valor *
========================================

========================================
E-mail: williamont@terra.com.br
========================================

========================================
MSN: wil_rock@hotmail.com
========================================

========================================
Doando - O TopBrasil apoia essa ideia
========================================




1 user(s) are reading this topic

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

IPB Skin By Virteq