Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vinicius Ianni

Paginação com php e faux coluns

Recommended Posts

Bom, estou quebrando a cabeça aqui com um detalhe que está me escapando e não consigo resolver:

 

Testando alguns codigos, peguei o exemplo de paginação em php abaixo que funciona perfeitamente, o porém é que exibe o resultado da paginação ao lado da primeira coluna de resultados, e não no final da página como é esperado.

Imagino que seja algo relativo ao css, mas não identifico onde pode estar o problema:

 

código php:

 

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
<title>Projeto Criador</title>
<link rel="stylesheet" type="text/css" href="main.css" />
</head>
<body>
<div id="tudo">
<?php
echo "<div id='wrapper'><div id='header'>";
include ('topo.php');
echo "</div><div id='faux'>";
echo "<div id='leftcolumn'></div>";
echo "<div id='content'>";
echo "<div id='produtos'>";
defined('DSN') or define('DSN', 'mysql:host=localhost;dbname=testes');
defined('USUARIO') or define('USUARIO', 'user');
defined('SENHA') or define('SENHA', '1234');
class Paginacao_PDO
{
 		public $paginador = 'pag';
 		private $solicitador;
 		public $sql;
 		public $limite = 15;
 		public $quantidade = 5;
 		public function __construct()
	  {
		$this->solicitador = $_REQUEST["{$this->paginador}"];
 		}
	private function conexao()
 		{
	$conexao = new Conexao();
	$con = $conexao->conexao;
	return $con;
 		}
 		public function resultado()
	{
	$this->resultado = $this->conexao()->query(str_replace('*', 'COUNT(*)', $this->sql));
	$this->numeroResultados = $this->resultado->fetchColumn();
	return $this->numeroResultados;
 		}
 		public function paginasTotais()
 		{
	$paginasTotais = ceil($this->resultado() / $this->limite);
	return $paginasTotais;
 		}
 		public function paginaAtual()
 		{
	if (isset($this->solicitador) && is_numeric($this->solicitador)) {
  	$this->paginaAtual = (int) $this->solicitador;
	} else {
     	$this->paginaAtual = 1;
	}
	if ($this->paginaAtual > $this->paginasTotais()) {
     	$this->paginaAtual = $this->paginasTotais();
	}
	if ($this->paginaAtual < 1) {
     	$this->paginaAtual = 1;
	}
	return $this->paginaAtual;
 		}
 		private function offset()
 		{
	$offset = ($this->paginaAtual() - 1) * $this->limite;
	return $offset;
 		}
 		public function sql()
 		{
	$sql = $this->sql .  " LIMIT {$this->limite} OFFSET {$this->offset()} ";
	return $sql;
 		}
 public function imprimeBarraNavegacao()
 {
if($this->resultado() > 0) {
     if ($this->paginaAtual() > 1) {
	echo " <a href='?" . $this->paginador . "=1". $this->reconstruiQueryString($this->paginador) . "'>Primeira</a> ";
	$anterior = $this->paginaAtual() - 1;
	echo " <a href='?" . $this->paginador . "=" . $anterior .$this->reconstruiQueryString($this->paginador) . "'>Anterior</a> ";
  }
  for ($x = ($this->paginaAtual() - $this->quantidade); $x <
  (($this->paginaAtual() + $this->quantidade) + 1); $x++) {
	if (($x > 0) && ($x <= $this->paginasTotais())) {
	  if ($x == $this->paginaAtual()) {
		echo " [<b>$x</b>] ";
	  } else {
		echo " <a href='?" . $this->paginador . "=" . $x
		. $this->reconstruiQueryString($this->paginador) . "'>$x</a> ";
	  }
	}
  }
  if ($this->paginaAtual() != $this->paginasTotais()) {
	$paginaProxima = $this->paginaAtual() + 1;
	echo " <a href='?" . $this->paginador . "=" . $paginaProxima
	. $this->reconstruiQueryString($this->paginador) . "'>Próxima</a> ";
	echo " <a href='?" . $this->paginador . "=" . $this->paginasTotais()
	. $this->reconstruiQueryString($this->paginador) . "'>Última</a> ";
  }
}
 }
 public function reconstruiQueryString($valoresQueryString) {
if (!empty($_SERVER['QUERY_STRING'])) {
  $partes = explode("&", $_SERVER['QUERY_STRING']);
  $novasPartes = array();
  foreach ($partes as $val) {
    if (stristr($val, $valoresQueryString) == false)  {
         array_push($novasPartes, $val);
	}
  }
  if (count($novasPartes) != 0) {
	  $queryString = "&".implode("&", $novasPartes);
  } else {
	return false;
  }
  return $queryString; // nova string criada
} else {
     return false;
}
 }
}
class Conexao
{
 private $_usuario;
 private $_senha;
 private $_dsn;
 public function __construct()
 {
$this->defineUsuario(USUARIO);
$this->defineSenha(SENHA);
$this->defineDSN(DSN);
$this->abreConexao();
 }
 public function defineUsuario($usuario)
 {
$this->_usuario = $usuario;
 }
 public function defineSenha($senha)
 {
$this->_senha = $senha;
 }
 public function defineDSN($dns)
 {
$this->_dsn = $dns;
 }
 public function abreConexao()
 {
$this->conexao = new PDO($this->_dsn, $this->_usuario, $this->_senha);
$this->conexao->query("SET NAMES utf8");
 }
 public function fechaConexao()
 {
$this->_conexao = null;
 }
}
$conexao = new Conexao();
$conexao = $conexao->conexao;
$paginacao = new Paginacao_PDO();
$paginacao->sql = "select * from produtos";
//$paginacao->imprimeBarraResultados();
$res = $conexao->query($paginacao->sql());
while($r = $res->fetch(PDO::FETCH_OBJ)) {
print "<div class='cproduto'>";
print "<center><b><a href='detalhe.php?id=".$r->id. "'><img src='imagens/".$r->imgmini."' border=0 width='50%' height='50%'><br>" .$r->nome ."</a></b><br/>".substr($r->descricao, 0, 50)."...</br>";
   print "R$ ".$r->precovenda." <a href='#'><img src='carrinho.png' alt='Adicionar ao carrinho' border='0'></a></center></div><p>";
}
echo "</div>";
$paginacao->imprimeBarraNavegacao();
//echo "</div><div id='rightcolumn'>";
//include ('modulodir.php');
//echo "</div>";
echo "</div><div id='footer'>";
include ('rodape.php');
echo "</div>";
?>
</div>
</body>

 

 

e o css:

 

 

{ padding: 0; margin: 0; }

body {
font-family: Arial, Helvetica, sans-serif;
font-size: 13px;
}
#wrapper { 
margin: 0 auto;
width: 922px;
}
#faux {
margin-bottom: 0px;
overflow: auto;
width: 100%
}
#header {
/*color: #FFC;*/
width: 902px;
padding: 10px;
height: auto;
margin: 0px 0px 0px 0px;
background: #FFF;
float: center;
}
#leftcolumn { 
display: inline;
/*color: #333;*/
margin: 10px;
padding: 0px;
width: 195px;
height: auto;
float: left;
}
#content { 
float: left;
/*color: #333;*/
margin: 10px 13px;
padding: 0px;
width: 510px;
height: auto;
display: inline;
position: relative;
}
#rightcolumn { 
display: inline;
position: relative;
/*color: #333;*/
margin: 10px 10px 10px 0px;
padding: 0px;
width: 195px;
height: auto;
float: right;
}
#footer { 
width: 902px;
clear: both;
/*color: #333;*/
background: #FFF;
margin: 0px 0px 0px 0px;
padding: 10px;
}
.clear { clear: both; background: none; }

#menu ul {
   padding:0px;
   margin:5px;
   width: 100%;
   background-color:#FFF;
   list-style:none;
}
#menu ul li { display: inline; }

#menu ul li a {
   padding: 2px 5px;
   /*float:center;*/
   /* visual do link */
   background-color:#F93;
   color: #030;
   text-decoration: none;
   border-bottom:3px solid #F60;
}

#menu ul li a:hover {
   background-color:#030;
   color: #FFF;
   border-bottom:3px solid #090;
}
.rodape {
 font-size: 10px;
 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
 font-weight: normal;
 padding: 3px;
 color: #CCC;
}
#produtos {
display: block;
width: 100%;
}
.cproduto {
display: block;
Float : Left;
width: 150px;
height: 220px;
}

 

 

imagem de como fica:

exemploc.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe, mas não entendi oq isso tem a ver com Faux Columns.

 

aplique um clear: both na tua paginação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.