miércoles, 26 de noviembre de 2008

Paginate, paginate, paginate


Paginate your queries, be happy, be hippie...


<?

$docs=10;

if (empty($_GET[pg])) { $_GET[pg]=1; }
if ($_GET[pg] < 1) { $pg=0; } else { $pg=$_GET[pg]-1; }

$ini=$pg*$docs;
$fin=$ini+$docs;

$sel_docs="SELECT id_doc,titulo FROM docs ORDER BY id_doc DESC ";
if (isset($_GET[query]) && $_GET[query]!='') {
$sel_docs.="WHERE titulo LIKE '%".$_GET[query]."%'";
}
$sel_docs.=" LIMIT $ini,$fin";

$qdocs=mysql_query($sel_docs);

while ($rdocs=mysql_fetch_array($qdocs)) {
/// do your stuff
}


echo "<p align='center'>";
/////////////
$sql_count="SELECT id_doc FROM docs ";
if (isset($_GET[query]) && $_GET[query]!='') { $sel_docs.="WHERE titulo LIKE '%".$_GET[query]."%'"; }
$q_count=mysql_query($sql_count);
$num=mysql_num_rows($q_count); // cuántos artículos hay

$anterior=$_GET[pg]-1;
$siguiente=$_GET[pg]+1;
$pg_max=ceil($num/$docs); // número máximo de páginas

$num_list=24; // número de páginas listadas -- de 0 a $num_list

if ($pg!=0) {
echo "<a href='index.php?p=".$_GET[p]."&pg=".$anterior."&query=".$_GET[query]."'>Anterior</a> ";
}

/// define desde que página inicia la numeración
if (empty($_GET[query])) {
if ($_GET[pg]<=10) {
$start_at=1;
} else if ($_GET[pg]>($pg_max-$num_list)) {
$start_at=$pg_max-$num_list;
} else {
$start_at=$_GET[pg]-10;
}
}

$pg_tmp=$start_at;
if ($num_list>$pg_max) { $num_list=$pg_max; }

//////////// paginado
for ($i = 0; $i < $num_list; $i++) {
if ($pg_tmp==$_GET[pg]) { echo "<b>$pg_tmp</b> | ";
} else {
echo "<a href='index.php?p=".$_GET[p]."&pg=".$pg_tmp."&query=".$_GET[query]."'>".$pg_tmp."</a> | "; }
$pg_tmp++;
}

if ($_GET[pg]!=$pg_max) {
echo "<a href='index.php?p=".$_GET[p]."&pg=".$siguiente."&query=".$_GET[query]."'>Siguiente</a> ";
}

echo "</p>";


?>


sorry for the spanglish...

1 comentarios:

Erick dijo...

pos no entendí ni madres