Jump to content


Photo

Paginação


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

#1 hal

hal

    Doutor

  • Usuários
  • 842 posts
  • Sexo:Masculino

Posted 19/10/2007, 00:14

e aí, pessoal, tudo certo?
seguinte, to usando esse script e ele expoe as imagens corretamentes nas colunas e tal, porém, ele não mostra os links de proximo e anterior...
o que tá acontecendo de errado com ele???valeu, galera!!
Hal
[codebox]<?php

$db = mysql_connect ("$servidor", "$usuario", "$senha") or die
('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("$banco");

?>
<?
//nessa linha, é determinado a quantidade de imagens que aparecerão na página
$num_por_pagina = 5;
if (!$pagina) {
$pagina = 1;
}
$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;

$busca = mysql_query("SELECT * FROM sites where categoria='desenhos' and mini='s' order by codigo desc LIMIT $primeiro_registro, $num_por_pagina") or die(mysql_error());



///aqui é determinado o número de colunas que aparecerão na página
$colunas = 1;
$cont = 12;
$registros = mysql_num_rows($busca);
if($registros%$colunas==0) $linhas = $registros/$colunas;
else $linhas = intval($registros/$colunas) + 1;
$larguracoluna = intval(100 / $colunas);


//esse é o tamanho da tabela
echo "<center><table width='400'>";
while ($col = mysql_fetch_array($busca)) {
$id=$col['id'];
$categoria=$col['categoria'];
$img1th=$col['img1th'];
$img1=$col['img1'];
$img2=$col['img2'];
$imagem=$col['imagem'];
$nome=$col['nome'];
$link=$col['link'];
$texto=$col['texto'];
$codigo=$col['codigo'];

if ($cont==1) {
echo"<tr>";
}

echo"<td width='100' align='center' class='texto_preto'>";
echo"


<a href='desenhos1.php?cod=$codigo' target='_alt'><img src='foto/$imagem' width='50' height='50' border='2'></a><br>

<table><tr><td> <a href='$link'> $nome </a> </td></tr></table>


";
echo"</td>";
if ($cont==$colunas) {
echo"</tr>";
$cont=0;
}
$cont=$cont+1;
}
if (!$cont==$colunas) {
echo"</tr></table>";
} else {
echo"</table>";
}
?>
<?
$sql2 = "SELECT COUNT(*) FROM sites where categoria='desenhos' and mini='s'";
list($total_usuarios) = mysql_fetch_array(mysql_query($sql2));
$total_paginas = $total_usuarios/$num_por_pagina;
$prev = $pagina - 1;
$next = $pagina + 1;

echo "o total de páginas é: $total_paginas";
echo" página anterior = $prev<br>próxima pagina= $next ";

// se p&aacute;gina maior que 1 (um), ent&atilde;o temos link para a p&aacute;gina anterior
if ($pagina > 1) {
$prev_link = "<a href=\"?link=mini.php&pagina=$prev\" ><font color='black'>Anterior<~font></a>";
} else { // sen&atilde;o n&atilde;o h&aacute; link para a p&aacute;gina anterior
$prev_link = "Anterior";
}



// se n&uacute;mero total de p&aacute;ginas for maior que a p&aacute;gina corrente, ent&atilde;o temos link para a pr&oacute;xima p&aacute;gina
if ($total_paginas > $pagina) {
$next_link = "<a href=\"?link=mini.php&pagina=$next\"><font color='black'>Pr&oacute;xima</font>";
} else { // sen&atilde;o n&atilde;o h&aacute; link para a pr&oacute;xima p&aacute;gina
$next_link = "Pr&oacute;xima";
}
?>[/codebox]

Edição feita por: boirock, 19/10/2007, 00:36.
aplicar [code] e retirar quebras de linha excessivas


#2 André Milaré

André Milaré

    Novato no fórum

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

Posted 19/10/2007, 14:03

Olá Hal,

Copiando seu código e colando no DreamWeaver, peguei 2 problemas:

1) no WHILE não está fechando a chave no lugar correto }

2) o cálculo da quantidade de páginas pode retornar um valor fracionado, que pode ser corrigido assim:

$sql2 = "SELECT COUNT(*) FROM sites where categoria='desenhos' and mini='s'";
list($total_usuarios) = mysql_fetch_array(mysql_query($sql2));
$total_paginas = (int) $total_usuarios/$num_por_pagina;
if ($total_usuarios % $num_por_pagina <> 0) $total_paginas++;

Verifique essas observações e veja se começa a paginar...

[]'s André Milaré

#3 hal

hal

    Doutor

  • Usuários
  • 842 posts
  • Sexo:Masculino

Posted 19/10/2007, 18:17

pois é, eu dei uma olhada mas ainda tá dando os erros, como não paginação e fracionar os valores ...

to colocando esse pedaço do código, pq foi onde eu mexi mais, ok??

<?

$sql2 = "SELECT COUNT(*) FROM sites where categoria='desenhos' and mini='s'";
list($total_usuarios) = mysql_fetch_array(mysql_query($sql2));

$total_paginas = (int) $total_usuarios/$num_por_pagina;

if ($total_usuarios % $num_por_pagina <> 0) $total_paginas++;
$prev = $pagina - 1;
$next = $pagina + 1;


if ($pagina > 1)
{$prev_link = "<a href=\"?link=mini.php&pagina=$prev\" >Anterior</a>";}
else
{$prev_link = "Anterior";}



if ($total_paginas > $pagina)
{$next_link = "<a href=\"?link=mini.php&pagina=$next\">Pr&oacute;xima</a>";}


else
{$next_link = "Pr&oacute;xima";}


?>


não sei se entendi certo, mas to tendo dificuldade nisso, ainda...

#4 Evandro Abu Kamel

Evandro Abu Kamel

    Turista

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

Posted 19/10/2007, 18:58

Estou fazendo um site e nele tem uma página de artigos com paginação, deixando a mostra sempre 5 links de páginas.
Esses artigos estão no banco de dados.
Vê se o código ajuda, estou usando a classe ADOdb.

<?
								$sqlc = "SELECT COUNT(id) as NUMART FROM artigos;"; // SQL que conta os artigos
								$resultc = $db->Execute($sqlc);  // a variável recebe o resultado do SQL
								$numart = $resultc->fields['NUMART'];
								$numpags = ceil($numart/4);  // calcula o número de páginas arredondando para mais, com 4 artigos por página
								$anterior = $pagina-1;
								$proxima = $pagina+1;								
								//echo "<br />No de artigos: $numart<br />No de paginas: $numpags<br />";
								
								if ($pagina == 1)
								{
									echo "&laquo; &lsaquo; Anterior |&nbsp;";
								}
								else echo "<a href='artigos.php?pagina=1'>&laquo;</a> <a href='artigos.php?pagina=$anterior'>&lsaquo;</a> <a href='artigos.php?pagina=$anterior'>Anterior</a> |&nbsp;";
								
								// nos testes abaixo é testado qual a página atual
								// para que apareçam 5 links de paginação
								if ($pagina!=1 && $pagina!=$numpags && $pagina!=2 && $pagina!=($numpags-1))
								{
									$liminf = $pagina-2;  // primeiro valor da paginação 
									$limsup = $pagina+2;  // último valor da paginação
								}
								else if ($pagina==1)	
								{
									$liminf = $pagina-2;
									$limsup = $pagina+4;
								}
								else if ($pagina==2)	
								{
									$liminf = $pagina-2;
									$limsup = $pagina+3;
								}
								else if ($pagina==$numpags)	
								{
									$liminf = $pagina-4;
									$limsup = $pagina+2;
								}
								else if ($pagina==($numpags-1))	
								{
									$liminf = $pagina-3;
									$limsup = $pagina+2;
								}
								
								for ($p=$liminf; $p<=$limsup; $p++)
								{
						   			if ($p <= $numpags && $p > 0)
						   			{
										if ($p != $pagina)
										{
							   				echo "<a href='artigos.php?pagina=$p'>$p</a>&nbsp;";
										}
										else echo "$p&nbsp;";
						   			}	
								}
								
								if ($pagina == $numpags)
								{
									echo "| Pr&oacute;xima &rsaquo; &raquo;";
								}
								else echo "| <a href='artigos.php?pagina=$proxima'>Pr&oacute;xima</a> <a href='artigos.php?pagina=$proxima'>&rsaquo;</a> <a href='artigos.php?pagina=$numpags'>&raquo;</a>";
?>


#5 § Kenshin §

§ Kenshin §

    I'm coming back...!

  • Usuários
  • 574 posts
  • Sexo:Masculino
  • Localidade:BA
  • Interesses:Sou fã de linguagens direcionadas para a web, como php, (x)html, xml, wml.
    Também gosto de webdesign e ultimamente tenho me dedicado mais a aprender css, mysql, javascript, ajax e actionscript.
    Trabalho com os programas Dreamweaver, Illustrator e Flash.

Posted 27/10/2007, 21:29

olha se este codigo ajuda

settype($_GET["pg"], "integer");
$comeco = $_GET["pg"] * 20;
$consultar = mysql_query("select sql_calc_found_rows ... limit $comeco, 20") or die(mysql_error());
$resultado = mysql_query("select found_rows() as tot_lin") or die(mysql_error());
$total = mysql_fetch_assoc($resultado);
$tot_pag = $total["tot_lin"] / 20;
$contador = 0;

while ($contador < $tot_pag)
	{
	$atual = $contador + 1;

	if ($contador == $_GET["pg"])
		{
		if ($atual < 10)
			{
			echo "[0$atual] ";
			}
		else
			{
			echo "[$atual] ";
			}
		}
	else
		{
		if ($atual < 10)
			{
			echo "<a href=\"link&pg=$contador\">0$atual </a>";
			}
		else
			{
			echo "<a href=\"link&pg=$contador\">0$atual </a>";
			}
		}

	$contador ++;
	}

ps: a variavel $pagina eh setada com o valor 0 no link para a primeira pagina

qualquer coisa da uma olhada la no xtreme!

valew ^_^

Edição feita por: § Kenshin §, 27/10/2007, 21:31.

Web Developer / Web Designer / Information Architect
"Living to learn... learning to live!"
Useful links: Rules | Search

#6 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 31/10/2007, 07:57

Isso que da ficar copiando código dos outros e não prestar atenção no que o código faz

VEJA:
if ($pagina > 1)
{$prev_link = "<a href=\"?link=mini.php&pagina=$prev\" >Anterior</a>";}
else
{$prev_link = "Anterior";}



if ($total_paginas > $pagina)
{$next_link = "<a href=\"?link=mini.php&pagina=$next\">Pr&oacute;xima</a>";}


else
{$next_link = "Pr&oacute;xima";}


?>

O que esta errado acima, ou melhor dizendo O QUE ESTA FALTANDO PARA EXIBIR a informação que deseja ?

A ) WRITER (ESCREVER)
B ) ECHO/PRINT
C ) IMPRIME AE!
D ) SEU CODIGO VC É UM FANFARRÃO! XP

^^' zuera... faltou o ECHO/PRINT para exibir a informação que deseja.

T+

Edição feita por: Goku Jr, 31/10/2007, 07:57.

-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951




1 user(s) are reading this topic

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

IPB Skin By Virteq