Paginação de Resultados - Com classe de conexão em anexo

Started by Magrinho Loko, 14 de September , 2007, 12:42:14 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Magrinho Loko

Como não sou muito de falar, vamos direto aos codes


class.Geral.php
<?php
class Geral extends MySQL{

function 
paginacao(){

@
$pagina $_GET['pg'&#93;; //Resgata a página em que a paginação esta

parent&#58;&#58;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&#58;&#58;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 &#46;
echo $this->getLinks($total_reg,$pc,"produtos&#46;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'&#93;; //Puxamos do SQL os dados que nós interessam
  
$nome   $dados['nome'&#93;; 
  
$email  $dados['email'&#93;;

//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&#58;&#58;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&#46;
$tp ceil($tr $total_reg); // Verifica o número total de páginas&#46; 

echo "<br /> <br /><div style=\"clear&#58;both; text-align&#58;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&#58;//br&#46;php&#46;net/floor
$pi = ($flag1 $intervalo );
$pf $pi $intervalo;
if (
$pc 1) {
echo 
"<a href=\"$link_ex&pg=$anterior\" class=\"pg\"><b>&laquo; Anterior</b></a>";
//Exibimos o link anterior
else{
echo "<span style=\"color&#58;#CCCCCC;\">&laquo; 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&#46;
if ($pi <= $tp) {
if (
$pc == $pi) {
// Se página atual for igual a página selecionada&#46;
if ($pi "0") {
echo 
" <span class=\"pgoff\">[$pi&#93;</span> ";
}
} else {
// Se for diferente, aparece o link para a página&#46;
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 &raquo;</b></a>";
} else {
//Exibimos o link Próximo
echo "<span style=\"color&#58;#CCCCCC;\">Próximo &raquo;</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&#46;
*/
function MySql(){
}
/**
* @return void
* @desc Método que conecta ao servidor e seleciona Banco de Dados&#46;
*/
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&#46;\n"
&#46;"MySql retornou&#58;"&#46;mysql_error()&#46;"\n";
die();
} elseif (!mysql_select_db($this->db,$this->link)){
echo "Erro na Seleção do Bando de Dados&#46;\n"
&#46;"MySql retornou&#58;"&#46;mysql_error()&#46;"\n";
die();
}
}
/**
* @return String
* @param String $query
* @desc Recebe query SQL, executa e retorna resultado, se houver erro retorna 0&#46;
*/
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&#46;
// $host = "1";host do bando de dados (ex&#46;&#58; localhost)
// $user = "1";usuario do banco de dados (ex&#46;&#58; root)
// $pass = "1";senha do bando de dados (ex&#46;&#58; pass)
// $db = "1";  banco de dados a ser selecionado (ex&#46;&#58; tabela)
$host "";
$user "";
$pass "";
$db "";

######################################################
#  Instanciando as Classes
######################################################

include("class&#46;MySQL&#46;php");
include(
"class&#46;Geral&#46;php");

$MySQL = new MySQL();
$Geral = new Geral();

?>



exemplo.php
<?php
require_once("config&#46;inc&#46;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
Saudades do antigo Darkers.