Como não sou muito de falar, vamos direto aos codes
class.Geral.php
<?php
class Geral extends MySQL{
function paginacao(){
@$pagina = $_GET['pg']; //Resgata a página em que a paginação esta
parent::connect(); //Conecta ao SQL
@$busca = "SELECT * FROM pessoas"; //Uma simples variavel que indica qual será nosso inicio de query
@$total_reg = "8"; //Quantos registros iremos exibir por página
if (!$pagina) {
@$pc = "1";
} else {
@$pc = $pagina;
}
//Inicia os calculos para saber qual será o delimitador de nossa busca no banco de dados usando operadores matematicos
$inicio = $pc - 1;
$inicio = $inicio * $total_reg;
//Faz a consulta ao SQL
$result = parent::sql("$busca ORDER BY id DESC LIMIT $inicio,$total_reg ");
//Inclui a função para gerar os links Anterior & Próximo
//Só para constar, passamos as variaveis desse jeito
// Total de registros, página que nós encontramos, qual o link, e a query .
echo $this->getLinks($total_reg,$pc,"produtos.php?page=view",$busca);
while($dados = mysql_fetch_array($result)){ //Fazemos um while no banco de dados, para exibirmos a quantidade de registros que delimitamos
$id = $dados['id']; //Puxamos do SQL os dados que nós interessam
$nome = $dados['nome'];
$email = $dados['email'];
//Após isso os exibimos
echo "Olá, eu me chamo $nome, meu email é $email e sou extremamente culto!";
}
}
function getLinks($total_reg,$pc,$link_ex,$busca){
$todos = parent::sql("$busca"); //Conecta ao SQL novamente sem a `baboseira` de ORDER BY e LIMIT
$tr = mysql_num_rows($todos); // Verifica o número total de registros.
$tp = ceil($tr / $total_reg); // Verifica o número total de páginas.
echo "<br /> <br /><div style=\"clear:both; text-align:center;\">";
// Cria os botões "anterior e próximo" utilizando operadores matematicos
$intervalo = 10;
$anterior = $pc -1;
$proximo = $pc +1;
$flag1 = floor($pc/$intervalo); //Para maiores especificações, visite http://br.php.net/floor
$pi = ($flag1 * $intervalo );
$pf = $pi + $intervalo;
if ($pc > 1) {
echo "<a href=\"$link_ex&pg=$anterior\" class=\"pg\"><b>« Anterior</b></a>";
} //Exibimos o link anterior
else{
echo "<span style=\"color:#CCCCCC;\">« Anterior</span>";
}//Caso não exista registros excedentes anteriormente, exibimos apenas texto
echo " ";
for ($pi; $pi < $pf; $pi++) {
// Se número da página for menor que total de páginas.
if ($pi <= $tp) {
if ($pc == $pi) {
// Se página atual for igual a página selecionada.
if ($pi > "0") {
echo " <span class=\"pgoff\">[$pi]</span> ";
}
} else {
// Se for diferente, aparece o link para a página.
if ($pi > "0") {
echo " <a href=\"$link_ex&pg=$pi\" class=\"pg\"><b>$pi</b></a> ";
}
}
}
}
echo " ";
if ($pc < $tp) {
echo "<a href=\"$link_ex&pg=$proximo\" class=\"pg\"><b>Próximo »</b></a>";
} else {//Exibimos o link Próximo
echo "<span style=\"color:#CCCCCC;\">Próximo »</span>";
}//Caso não exista registros posteriores, exibimos apenas texto
echo "</div>";
}
}
?>
class.MySQL.php
<?php
class MySQL{
// Atributos
var $host;
var $user;
var $pass;
var $db;
var $query;
var $link;
var $result;
// Métodos
/**
* @return void
* @desc Contrutor da classe MySql.
*/
function MySql(){
}
/**
* @return void
* @desc Método que conecta ao servidor e seleciona Banco de Dados.
*/
function connect(){
global $host, $user, $pass, $db;
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->db = $db;
$this->link = mysql_connect($this->host,$this->user,$this->pass);
if(!$this->link){
echo "Erro na Conexão.\n"
."MySql retornou:".mysql_error()."\n";
die();
} elseif (!mysql_select_db($this->db,$this->link)){
echo "Erro na Seleção do Bando de Dados.\n"
."MySql retornou:".mysql_error()."\n";
die();
}
}
/**
* @return String
* @param String $query
* @desc Recebe query SQL, executa e retorna resultado, se houver erro retorna 0.
*/
function sql($query){
$this->query = $query;
if($this->result=mysql_query($this->query)){
return $this->result;
} else {
return 0;
}
}
/**
* @return void
* @desc Desconecta do servidor
*/
function disconnect(){
return mysql_close($this->link);
}
}
?>
Config.inc.php
<?php
######################################################
# MYSQL CONFIGURAÇÃO
# Essas variaveis DEVEM ser setadas!
######################################################
// Abaixo variaveis do banco de dados.
// $host = "1";host do bando de dados (ex.: localhost)
// $user = "1";usuario do banco de dados (ex.: root)
// $pass = "1";senha do bando de dados (ex.: pass)
// $db = "1"; banco de dados a ser selecionado (ex.: tabela)
$host = "";
$user = "";
$pass = "";
$db = "";
######################################################
# Instanciando as Classes
######################################################
include("class.MySQL.php");
include("class.Geral.php");
$MySQL = new MySQL();
$Geral = new Geral();
?>
exemplo.php
<?php
require_once("config.inc.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="pt-br" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="MSSmartTagsPreventParsing" content="true" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="Henrique Ramos" />
<link rel="shortcut icon" href="imagens/favicon.ico" type="image/x-icon">
<style type="text/css">
.pgoff {
font-family: Verdana, Arial, Helvetica;
font-size: 11px;
color: #C66666;
text-decoration: none
}
.pg {
font-family: Verdana, Arial, Helvetica;
font-size: 11px;
color: #003366;
text-decoration: none
}
.pg:hover{
font-family: Verdana, Arial, Helvetica;
font-size: 11px;
color: #0066cc;
text-decoration:underline;
}
</style>
</head>
<body>
<?php echo $Geral->paginacao(); ?>
</body>
</html>
Espero que se divirtam. =D