Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia a todos, este é meu primeiro post, me desculpem se estiver no lugar errado mas acho q é aqui mesmo,
Estou com um problema em meu codigo de paginação, é um site de imoveis q é exibido 1 imovel por linha e 3 imoveis por pagina, quando tem mais de 3 imoveis por categoria aparece o botão proximo, porem quando eu clico no botão proximo ele vai para a proxima pagima mas não exibe os proximos imoveis aparece apenas a mensagem nenhum(a) encontrado.
Esse é o codigo:
pesqporcat.php
</head>
<body onselectstart='return false'>
<table background="imagens/fundo_pags.jpg" width="529" height="683" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top"><p> </p> <p>
<?php
$max = 3; //DEFINE A QUANTIDADE DE LINHAS
if($pagina=="")
{
$pagina = 1;
}
$inicio = $pagina -1;
$inicio = $max * $inicio;
include "conectar.inc";
$categoria = $_POST['categoria'];
$consulta = "SELECT * FROM imoveis WHERE categoria LIKE '$categoria' ";
$query = mysql_query("$consulta LIMIT $inicio,$max");
$resultado = mysql_query($consulta);
$linhas = mysql_num_rows($resultado);
if($linhas == 0)
{
echo "Nenhum(a) <b>" . $categoria . "</b> encontrado.";
}
else
{
$tp = $linhas / $max;
$regLinha = 1; //NUMERO DE REGISTROS POR LINHA
$i = ceil($regLinha / $max);
$j = 1;
$z = 0;
echo "<font color=\"#0000FF\"><b><u>Encontrados: </b>(" . $linhas . ")</u></font><table width=510px cellspacing=0 cellpadding=0 border=2 bordercolor=#0000FF bordercolordark=#0000ff bordercolorlight=#0000ff>";
while($mostrar = mysql_fetch_object($query))
{
echo "<tr><td><table border=0><td width=150px height=112 rowspan=2 align=center valign=middle border=0><img src='imagens/imoveis/img_abertura/" . $mostrar->foto . "'alt='Imagem' width='150' /></td><td width=350px align=center><b><u>". $mostrar->nome . "</td></tr><tr><td align=left valign=middle>" . $mostrar->descricao. "</td></tr><tr><td colspan=2 align=center><a href='" . $mostrar->id . "'>Detalhes</a></td></tr></table>";
$z++;
if($z == $reglinha and $j <$i)
{
echo "</tr><tr>";
$z = 0;
$j++;
}
if($z == $regLinha and $j == $i)
{
echo "</tr>";
}
}
echo "</table>";
$prox = $pagina +1;
$ante = $pagina -1;
if($pagina > 1)
{
echo "<a href='?pagina=$ante'>Anterior</a>";
}
echo "|";
if($pagina < $tp)
{
echo "<a href='?pagina=$prox'>Próxima</a>";
}
}
?>
</p></td>
</tr>
</table>
</body>
</html>>
Primeiro dá uma pesquisada em OFFSET para adicionar no SQL. Pode te ajudar
Tipo:
/ Pag 1 /
SELECT * FROM imoveis WHERE categoria LIKE '$categoria' Limit 3 Offset 0
/ Pag 2/
SELECT * FROM imoveis WHERE categoria LIKE '$categoria' Limit 3 Offset 3
Vi sobre isso Wesley, porem não resolveu, o codigo esta funcionando exibindo os itens do SQL encima tem uma parte q mostra quantos resultados foram encontrados e isso tambem funciona, o problema é na hora de clicar no botão proximo q ao inves de ir para uma proxima página e mostrar os outros imoveis ele vai para proxima pagina e da uma mensagem de Nenhum encontrado.
Sabem o que pode estar errado no código?
Obrigado e aguardo respostas assim que possivel.
Outras vez o mesmo problema. Dois no mesmo dia.
Da uma olhada aqui e veja se resolve: :seta:Clique aqui
Fiz algumas alterações, porem continua com o mesmo problema, ao clicar em proximo ele vai para proxima pagina porem n mostra nenhum resultado.
<?php
include "conectar.inc";
$total_reg = "3"; //DEFINE A QUANTIDADE DE LINHAS
$pagina = $_GET["pagina"];
if($pagina == "") {
$pagina = "1";
}
$inicio = $pagina - 1;
$inicio = $total_reg * $inicio;
$categoria = $_GET['categoria'];
$consulta = "SELECT * FROM imoveis WHERE categoria LIKE '$categoria' ";
$query = mysql_query("$consulta LIMIT $inicio,$total_reg");
$resultado = mysql_query($consulta);
$linhas = mysql_num_rows($resultado);
if($linhas == 0)
{
echo "Nenhum(a) <b>" . $categoria . "</b> encontrado.";
}
else
{
$tp = $linhas / $total_reg;
$regLinha = "1"; //NUMERO DE REGISTROS POR LINHA
$i = ceil($total_reg / $regLinha);
$j = "1";
$z = "0";
echo "<font color=\"#0000FF\"><b><u>Encontrados: </b>(" . $linhas . ")</u></font><table width=510px cellspacing=0 cellpadding=0 border=2 bordercolor=#0000FF bordercolordark=#0000ff bordercolorlight=#0000ff>";
while($mostrar = mysql_fetch_object($query))
{
echo "<tr><td><table border=0><td width=150px height=112 rowspan=2 align=center valign=middle border=0><img src='imagens/imoveis/img_abertura/" . $mostrar->foto . "'alt='Imagem' width='150' /></td><td width=350px align=center><b><u>". $mostrar->nome . "</td></tr><tr><td align=left valign=middle>" . $mostrar->descricao. "</td></tr><tr><td colspan=2 align=center><a href='" . $mostrar->id . "'>Detalhes</a></td></tr></table>";
$z++;
if($z == $regLinha and $j < $i)
{
echo "</tr><tr>";
$z = 0;
$j++;
}
if($z == $regLinha and $j == $i)
{
echo "</tr>";
}
}
echo "</table>";
$menos = $pagina - 1;
$mais = $pagina + 1;
$pgs = ceil($linhas / $total_reg);
if($pgs > 1 ) {
echo "<br />";
// Mostragem de pagina
if($menos > 0) {
echo "<a href=".$_SERVER['PHP_SELF']."?pagina=$menos>anterior</a> ";
}
// Listando as paginas
for($i=1;$i <= $pgs;$i++) {
if($i != $pagina) {
echo " <a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a> | ";
} else {
echo " <strong>".$i."</strong> | ";
}
}
if($mais <= $pgs) {
echo " <a href=".$_SERVER['PHP_SELF']."?pagina=$mais>próxima</a>";
}
}}
?>Até o momento nada, né possivel, será que isso é uma situação tão complexa assim, nunca imaginei dessa forma achei apenas que eu n tinha conhecimento o bastante para resolver, mas até agora ja postei o mesmo problema em 3 foruns diferentes e niguem achou uma solução.
Mais alguma opinião, estou neste problema a varios dias e preciso resolve-lo até esse final de semana, porem ta complicado isso.
Deem uma olhada melhor no problema talves assim possam entender melhor
Entrem no site www.fernandoduarteimoveis.com depois na pesquisa rapida escolham Sitios e Granjas e clique em pesquisar, repare q vai aparecer emcima escrito encontrados 4 até ai tudo bem, embaixo vai aparecer 3 imóveis pois eu limitei para aparecer 3 por pagina, até ai tambem esta tudo bem, cliquem no botão proximo, ai vem o problema era pra aparecer o 4º imóvel, porem não aparece.
Foi o primeiro site que fiz, é meio antigo, mas recentemente o cliente apareceu com imóveis novos, ai tive de adaptar a paginação para o site
Por q não aparece? O que esta de errado com o código?
aqui esta o formulario da pesquisa rapida que fica dentro do arquivo index.php
<form method="POST" action="pesqporcat.php" target="conteudo" enctype="multipart/form-data">
<select name="categoria">
<option selected value="fazenda">Fazendas
<option value="sitio ou granja">Sítios e Granjas
<option value="casa">Casas
<option value="apartamento">Apartamentos
</select>
Aqui esta o arquivo de paginação pesqporcat.php
<body onselectstart='return false'>
<table background="imagens/fundo_pags.jpg" width="529" height="683" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top"><p> </p> <p>
<?php
$max = 3; //DEFINE A QUANTIDADE DE LINHAS
if($pagina=="")
{
$pagina = 1;
}
$inicio = $pagina -1;
$inicio = $max * $inicio;
include "conectar.inc";
$categoria = $_POST['categoria'];
$consulta = "SELECT * FROM imoveis WHERE categoria LIKE '$categoria' ";
$query = mysql_query("$consulta LIMIT $inicio,$max");
$resultado = mysql_query($consulta);
$linhas = mysql_num_rows($resultado);
if($linhas == 0)
{
echo "Nenhum(a) <b>" . $categoria . "</b> encontrado.";
}
else
{
$tp = $linhas / $max;
$regLinha = 1; //NUMERO DE REGISTROS POR LINHA
$i = ceil($regLinha / $max);
$j = 1;
$z = 0;
echo "<font color=\"#0000FF\"><b><u>Encontrados: </b>(" . $linhas . ")</u></font><table width=510px cellspacing=0 cellpadding=0 border=2 bordercolor=#0000FF bordercolordark=#0000ff bordercolorlight=#0000ff>";
while($mostrar = mysql_fetch_object($query))
{
echo "<tr><td><table border=0><td width=150px height=112 rowspan=2 align=center valign=middle border=0><img src='imagens/imoveis/img_abertura/" . $mostrar->foto . "'alt='Imagem' width='150' /></td><td width=350px align=center><b><u>". $mostrar->nome . "</td></tr><tr><td align=left valign=middle>" . $mostrar->descricao. "</td></tr><tr><td colspan=2 align=center><a href='" . $mostrar->id . "'>Detalhes</a></td></tr></table>";
$z++;
if($z == $reglinha and $j <$i)
{
echo "</tr><tr>";
$z = 0;
$j++;
}
if($z == $regLinha and $j == $i)
{
echo "</tr>";
}
}
echo "</table>";
$prox = $pagina +1;
$ante = $pagina -1;
if($pagina > 1)
{
echo "<a href='?pagina=$ante'>Anterior</a>";
}
echo "|";
if($pagina < $tp)
{
echo "<a href='?pagina=$prox'>Próxima</a>";
}
}
?>
</p></td>
</tr>
</table>
</body>
</html>
Levem em conta q n entendo muito sobre PHP, ficarei muito agradecido se puderem me ajudar, Obrigado.
tenta assim mano
<?
$pag = "$_GET[pag]";
if($pag >= '1'){
$pag = $pag;
}else{
$pag = '1';
}
$maximo = '10';
$inicio = ($pag * $maximo) - $maximo;
include "conectar.inc";
$categoria = $_POST['categoria'];
$Query = mysql_query("select id,foto,descricao,none FROM imoveis WHERE categoria LIKE '$categoria' LIMIT $inicio, $maximo");
for($i=0;$i<mysql_num_rows($Query);$i++) {
$rank = $i+1;
$exibir = mysql_fetch_row($Query);
if($i % 2)
?>
<?=$exibir[1];?>
<?=$exibir[2];?>
<?=$exibir[3];?>
<? } ?>
<?
$sql_res = mysql_query("SELECT * FROM materias imoveis WHERE categoria LIKE '$categoria'");
$total = mysql_num_rows($sql_res);
$paginas = ceil($total/$maximo);
$links = '10';
echo "<a href='imoveis.php?pag=1'>Primeira Página</a> ";
for ($i = $pag-$links; $i <= $pag-1; $i++){
if ($i <= 0){
}else{
echo"<a href='imoveis.php?pag=$i'>$i</a> ";
}
}echo "$pag ";
for($i = $pag +1; $i <= $pag+$links; $i++){
if($i > $paginas){
}else{
echo "<a href='imoveis.php?pag=$i'>$i</a> ";
}
}
echo "<a href='imoveis.php?pag=$paginas'>Última página</a> ";
?>Nada ainda
Uma coisa que percebi é o seguinte,
NO FINAL ONDE ESTA A LINHA
if($mais <= $pgs) {
echo " <a href=".$_SERVER['PHP_SELF']."?pag=$mais>pr車xima</a>";
}
SE EU SUBSTITUIR O
<a href=".$_SERVER['PHP_SELF']."?pag=$mais>
POR
<a href='index.php?pag=$mais'>
ele abre a pagina index.php, acho q pode ser ai o erro, pois quando coloco o $_SERVER ele apenas abre uma pagina em branco dizendo nenhum encontrado
o q tenho de colocar no lugar do .$_SERVER['PHP_SELF']. ja q n esta funcionando, se coloco desse jeito n funciona, se coloco index.php abre a pagina inicial, se coloco pesqporcat.php tambem n funciona.
Aqui esta o arquivo para poderem analizar, fiz algumas alterações, porem ainda n esta funcionando
pesqporcat.php
<?php
include "conectar.inc";
$total_reg = "3"; //DEFINE A QUANTIDADE DE LINHAS
$pag = $_GET["pag"];
if($pag == "") {
$pag = "1";
}
$inicio = $pag- 1;
$inicio = $total_reg * $inicio;
$categoria = $_GET['categoria'];
$consulta = "SELECT * FROM imoveis WHERE categoria LIKE '$categoria' ";
$query = mysql_query("$consulta LIMIT $inicio,$total_reg");
$resultado = mysql_query($consulta);
$linhas = mysql_num_rows($resultado);
if($linhas == 0)
{
echo "Nenhum(a) <b>" . $categoria . "</b> encontrado.";
}
else
{
$tp = $linhas / $total_reg;
$regLinha = "1"; //NUMERO DE REGISTROS POR LINHA
$i = ceil($total_reg / $regLinha);
$j = "1";
$z = "0";
echo "<font color=\"#0000FF\"><b><u>Encontrados: </b>(" . $linhas . ")</u></font><table width=510px cellspacing=0 cellpadding=0 border=2 bordercolor=#0000FF bordercolordark=#0000ff bordercolorlight=#0000ff>";
while($mostrar = mysql_fetch_object($query))
{
echo "<tr><td><table border=0><td width=150px height=112 rowspan=2 align=center valign=middle border=0><img src='imagens/imoveis/img_abertura/" . $mostrar->foto . "'alt='Imagem' width='150' /></td><td width=350px align=center><b><u>". $mostrar->nome . "</td></tr><tr><td align=left valign=middle>" . $mostrar->descricao. "</td></tr><tr><td colspan=2 align=center><a href='" . $mostrar->id . "'>Detalhes</a></td></tr></table>";
$z++;
if($z == $regLinha and $j < $i)
{
echo "</tr><tr>";
$z = 0;
$j++;
}
if($z == $regLinha and $j == $i)
{
echo "</tr>";
}
}
echo "</table>";
$menos = $pag - 1;
$mais = $pag + 1;
$pgs = ceil($linhas / $total_reg);
if($pgs > 1 ) {
echo "<br />";
// Mostragem de pagina
if($menos > 0) {
echo "<a href=".$_SERVER['PHP_SELF']."?pag=$menos>anterior</a> ";
}
// Listando as paginas
for($i=1;$i <= $pgs;$i++) {
if($i != $pag) {
echo " <a href=".$_SERVER['PHP_SELF']."?pag=".($i).">$i</a> | ";
} else {
echo " <strong>".$i."</strong> | ";
}
}
if($mais <= $pgs) {
echo " <a href=".$_SERVER['PHP_SELF']."?pag=$mais>pr車xima</a>";
}
}}
?>Problema resolvido
fiz em 2 paginas
listar_imoveis.php
<?php
include "conectar.inc";
$numreg = 3;
if (!isset($pg)) {
$pg = 0;
}
$inicial = $_GET['pg']*$numreg;
$categoria = $_GET['categoria'];
$consulta = mysql_query("SELECT * FROM imoveis WHERE categoria LIKE '$categoria' LIMIT $inicial, $numreg ");
$sql_conta = mysql_query("SELECT categoria FROM imoveis WHERE categoria='$categoria'");
$quantreg = mysql_num_rows($sql_conta);
include("paginacao.php");
echo "<br><br>";
while($mostrar = mysql_fetch_object($consulta))
{
echo "<tr><td><table border=0><td width=150px height=112 rowspan=2 align=center valign=middle border=0><img src='imagens/imoveis/img_abertura/" . $mostrar->foto . "'alt='Imagem' width='150' /></td><td width=350px align=center><b><u>". $mostrar->nome . "</td></tr><tr><td align=left valign=middle>" . $mostrar->descricao . "</td></tr><tr><td colspan=2 align=center><a href='" . $mostrar->id . "'>Detalhes</a></td></tr></table>";
}
?>
paginação.php
<style type="text/css">
<!--
.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #0000FF; text-decoration: none}
a.pg {font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #003366; text-decoration: none}
a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #0066cc; text-decoration:underline}
-->
</style>
<?php
$quant_pg = ceil($quantreg/$numreg);
$quant_pg++;
if (@$_GET['pg']>0) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']-1)."&categoria=$categoria class=pg>« anterior </a>";
} else {
echo "<font color=#cccccc>« anterior </font>";
}
if ((@$_GET['pg']+2)<$quant_pg) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']+1)."&categoria=$categoria class=pg>Proximo »</a>";
} else {
echo "<font color=#cccccc> proximo »</font>";
}
?>
Primeiro dá uma pesquisada em OFFSET para adicionar no SQL. Pode te ajudar
Tipo:
/ Pag 1 /
SELECT * FROM imoveis WHERE categoria LIKE '$categoria' Limit 3 Offset 0
/ Pag 2/
SELECT * FROM imoveis WHERE categoria LIKE '$categoria' Limit 3 Offset 3