Вы находитесь на странице: 1из 8

Paginao de Arrays por letras

Codigo
<?php
// Paginao de array em ordem alfabtica
// Criado por Jefferson Maleski em 23/06/2007
// Este script pode ser usado e adaptado livremente,
// mas seja legal: divulgue os seus cdigos tambm

$lista = array( 'Andr',
'Maria',
'Joo',
'jefferson',
'Jesus',
'algomiro',
'Sylvana',
'Samuel',
'Lorena',
'Beatriz' );

$letras = pegaLetras($lista);

mostra($lista);

echo '<p>'.criaLinks($letras);

// gera array letras
function pegaLetras($array){
for($i=0; $i < count($array); $i++)
// pega a primeira letra do item e coloca ela em maisculo
$letras[$i] = strtoupper(substr($array[$i], 0, 1));
$letras = array_unique($letras);
// organiza array alfabeticamente
sort($letras);
return $letras;
}

// exibe itens por letra
function mostra($array){
sort($array); // ordena alfabeticamente
for($i=0; $i < count($array); $i++){
// verifica letra, seno default a primeira do alfabeto que exista
$mostra = ($_GET['mostra']) ? $_GET['mostra'] : strtoupper(substr($emails[0],
0, 1));
// compara com a primeira letra do item
if($mostra == strtoupper(substr($array[$i], 0, 1)))
echo "$array[$i]<br>";
}
}

// gera links por letra
function criaLinks($array){
$link = '';
for ($i=0; $i < count($array); $i++)
$link .= ' <a
href="'.$_SERVER['PHP_SELF'].'?mostra='.$array[$i].'">'.$array[$i].'</a> |';
// retira os dois ultimos caracteres
$link = substr($link, 0, -2);
return $link;
}
?>


Pablo Gates
Pablo Gates

136 posts
Postado 30 outubro 2012 - 13:05
Boa tarde galera, eu tive muitos problemas para fazer uma paginao sem refresh no meu
ltimo projeto e finalmente consegui resolver ^^
vou colaborar com o forum, mostrando como eu consegui resolver isto.

encontrei o script na internet, e fiz algumas alteraes
crditos: Software livre Acre

Me desculpem o primeiro post, colaborando espero ter postado de forma correta...

chega de papo e vamos l:

index.php

<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Paginao sem refresh</title>
<script type="text/javascript" src="script.js"></script>
</head>

<body>
<?php
//chamando a funo para conectar ao banco de dados
(Sua conexo com o db mysql)
Conectar();

//select com o contador para descobrir quantos
resultados a tabela tem
$result_p = mysql_query("select count(*) as count FROM
sua_tabela");
$row_p = mysql_fetch_array($result_p);

//quantos resultados aparecero por pgina
$quant_resul = 24;
//pgina em que sua paginao comeara
$pagina = 1;

//calcula a quantidade de paginas
$paginas = ceil($row_p['count'] / $quant_resul);

//select com os valores limitados
$result = mysql_query("select *FROM obras limit 0 , " .
$quant_resul);
?>


<div id="dados"><!-- aqui mostrada a paginao -->
<ul>
<?php
while ($row = mysql_fetch_object($result))
{//exemplo de lao
echo'<li>';
echo"<img src='uploads/images/".$row-
>miniatura."' />";
echo'</li>';
};

//incluindo a pgina de ndice ela responsvel
por imprimir os valores das pginas e seus link's.
include 'indice.php';
?>
</ul>
</div>
</body>
</html>

indice.php

<?php
echo "<div id='paginacao'>";
//Verifica se est na primeira pgina, se no estiver exibe o
boto anterior e o numero da pgina inicial
//Se no ele desativa o boto de anterior e seta a primeira pgina
if ($pagina > 1) {
echo '&nbsp;<a class="pg" href="javascript:paginar(' . ($pagina
- 2) . ',' . $paginas . ',' . $quant_resul . ')">&laquo;
anterior</a>&nbsp;';
echo '&nbsp;<a class="pg" href="javascript:paginar(0,' . $paginas
. ',' . $quant_resul . ')">1</a>&nbsp;';
} else {
echo "<font color=#CCCCCC>&laquo; anterior</font>";
echo "&nbsp;<span class='pgoff'>1</span>&nbsp;";
}

//mostrando as demais pginas
for ($i = $pagina; $i <= ($pagina + 1); $i++) {
//imprindo o boto da pgina antes da atual, ela necessita ser
diferente da primeira pgina
if (($i - 1) == ($pagina - 1) and ($i - 1) != 1 and ($i != 1))
{
echo '...&nbsp;<a class="pg" href="javascript:paginar(' .
($i - 2) . ',' . $paginas . ',' . $quant_resul . ')">' . ($i - 1) .
'</a>&nbsp;';
}
//verificando se estamos na primeira pgina ou na ultima se
estiver ele no imprime nada.
if ($i == 1 or $i == $paginas or $i == $paginas) {
echo"";
}
//se a pgina for igual a pgina atual ele seta o indicador na
pgina e desativa o boto
elseif ($pagina == $i) {
echo "&nbsp;<span class='pgoff'>$i</span>&nbsp;";
}
//imprimindo a pgina aps a pgina atual,
elseif ($i < $pagina) {
echo '&nbsp;<a class="pg" href="javascript:paginar(' . $i
- 1 . ',' . $paginas . ',' . $quant_resul . ')">' . $i . '</a>&nbsp;';
}
if (($i + 1) == ($pagina + 1) and ($i + 1) != $paginas and $i
!= $paginas) {
echo '&nbsp;<a class="pg" href="javascript:paginar(' .
($i) . ',' . $paginas . ',' . $quant_resul . ')">' . ($i + 1) .
'</a>&nbsp;...';
}
}
//verificando novamente se existe apenas a primeira pgina, se so
existir ela impresso o boto proximo desativado
if ($paginas == 1) {
echo "";
echo "<font color=#CCCCCC>pr&oacute;ximo &raquo;</font>";
}
//verificando se a pgina atual diferente da ultima pgina se
for diferente ele imprime a ultima pgina e ativa o boto prximo
elseif ($pagina < $paginas) {

echo '&nbsp;<a class="pg" href="javascript:paginar(' .
($paginas - 1) . ',' . $paginas . ',' . $quant_resul . ')">' .
$paginas . '</a>';
echo '&nbsp;<a class="pg" href="javascript:paginar(' .
($pagina) . ',' . $paginas . ',' . $quant_resul .
')"><b>pr&oacute;ximo &raquo;</b></a>&nbsp;';
}
// se o sistema estiver na ultima pgina o indicador setado na
pgina e o boto prximo desativado
else {
echo "&nbsp;<span class='pgoff'>" . $paginas .
"</span>&nbsp;";
echo "<font color=#CCCCCC>pr&oacute;ximo &raquo;</font>";
}
echo "</div>";
?>

op.php

<?php
// recebe conteudo da pagina anterior por post
$pagina = $_POST['pagina'];
$quant_resul = $_POST['quant_result'];
$paginas = $_POST['paginas'];
// calculando onde o limit deve comear no Select
$start = $pagina * $quant_resul;
$pagina++;

//conecta com o banco (Sua conexo com o banco, no meu caso
estou chamando uma funo)
Conectar();

//select com os limites definidos (inicio e quantidade de
resultados)
$result = mysql_query("SELECT * FROM sua_tabela limit " .
$start . " , " . $quant_resul);

//impreso dos valores que sero trocados dentro da DIV dados
echo '<ul>';
while ($row = mysql_fetch_object($result)) {
echo'<li>';
echo"<img src='uploads/images/".$row-
>miniatura."' />";//neste caso como podem ver acima eu escolho a
linha($row) pegando a coluna miniatura
echo'</li>';
};
echo '</ul>';

//incluindo a pgina de ndice ela responsvel por imprimir os
valores das pginas e seus link's.
include 'indice.php';
?>

script.js

este o script ajax, que faz carregar a pgina sem efetuar o refresh/reload a imagem
"carregando.gif" vocs podem utilizar qualquer uma que seja da sua preferncia,
que ser mostrada enquanto a paginao estiver carregando os resultados


function paginar(pagina,paginas, quant_result ){
$("#dados").html("<img src='images/carregando.gif'
class='carregando' />");
$.post("op.php", {pagina:pagina, paginas:paginas,
quant_result:quant_result}, function(data){$("#dados").html(data);},
"html") ;
};