0

Paginação codigo duvida

criado por Diego em 28/10/2009 5:46pm
poderia me ajudar não está dando certo quando clico no proximo volta para a pagina inicial da busca com resultado em branco se puder me dizer onde está o erro fico muito grato estou realmente com duvida.

busca.php
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Palavra:<input type="text" name="palavra" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>
<br>

<br />
<?php

//######### INICIO Paginação
$numreg = 6; // Quantos registros por página vai ser mostrado
if (!isset($pg)) {
$pg = 0;
}

$inicial = $_GET['pg'] * $numreg;

//######### FIM dados Paginação

if(!empty($HTTP_POST_VARS[palavra])) {

$busca = explode(' ', $HTTP_POST_VARS['palavra']);

foreach($busca as $palavra){

// Faz o Select pegando o registro inicial até a quantidade de registros para página
$sql = mysql_query("select * from img WHERE tag LIKE '%".$palavra."%' LIMIT $inicial, $numreg");

// Serve para contar quantos registros você tem na sua tabela para fazer a paginação
$sql_conta = mysql_query("SELECT * FROM img WHERE tag LIKE '%".$palavra."%'");

$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação

// conta quantos registros encontrados com a nossa especificação
if ($quantreg == 0) {
echo "Nenhum resultado para $palavra!<br><br>";
}

// se houver um resultado diz que existe um resultado
if ($quantreg == 1) {
echo "$quantreg resultado encontrado para $palavra!<br><br>";
}

// se houver um resultado diz que existe um resultado
if ($quantreg > 1) {
echo "$quantreg resultados encontrados para $palavra!<br><br>";
}

include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>

echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo

while ($aux = mysql_fetch_array($sql)) {

 ?>

 <table width="400" border="0" align="center">
  <tr align="left">


    <td><? echo "<a href=\"imagem.php?link=".$aux[imagem]."\"><img src='/upload/$aux[imagem]' width=100 height=100 border=0/></a><br>" ?></td>
    <td><?= $aux['tag']."<br>"; ?></td>
  </tr>
 </table>
 
 <?
 }
 }
 }
 ?>

paginacao.php
<style type="text/css">
<!--
.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}
a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}
a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}
-->
</style>
<?php
        $quant_pg = ceil($quantreg/$numreg);
        $quant_pg++;

        // Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
        if ( $pg > 0) {
                echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg>&laquo; anterior</a>";
        } else {
                echo "<font color=#CCCCCC>&laquo; anterior</font>";
        }
        // Aqui começa a alteração
        // faz o controle da quantidade de paginas irá mostrar em números na paginação
        if (($pg - 3) < 1 ){
        $ant = 1;
        } else {
        $ant = $pg - 3;
        }
        if (($pg + 6) > $quant_pg ) {
        $pos = $quant_pg;
        } else {
        $pos = $pg + 6;
        }

        // Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
        for($i_pg=$ant;$i_pg < $pos;$i_pg++) {
        // Aqui termina a alteração
                // Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
                if ($pg == ($i_pg-1)) {
                        echo " <span class=pgoff>[$i_pg]</span> ";
                } else {
                        $i_pg2 = $i_pg-1;
                        echo " <a href=".$PHP_SELF."?pg=$i_pg2 class=pg>$i_pg</a> ";
                }
        }

        // Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
        if (($pg+2) < $quant_pg) {
                echo "<a href=".$PHP_SELF."?pg=".($pg+1)." class=pg>próximo &raquo;</a>";
        } else {
                echo "<font color=#CCCCCC>próximo &raquo;</font>";
        }
?>

Lista de Respostas:

0
30/10/2009 4:31pm
(~15 anos atrás)
BOZO respondeu:
Voce tem que passar a query na url, ou coloca-la numa SESSION


tenta trocar

$busca = explode(' ', $HTTP_POST_VARS['palavra']);
por
$busca = explode(' ', $_REQUEST['palavra']);


e nos links da paginacao vc insere a query

"<a href=".$PHP_SELF."?busca=$busca&pg=".($pg+1)."


0
31/10/2009 2:25pm
(~15 anos atrás)
Diego respondeu:
Mesmo apos mudanca continua retornando na paginação a clicar com resultado em branco retorna para a pagina busca sem nenhum resultado

0
31/10/2009 9:44pm
(~15 anos atrás)
Diego respondeu:
alterei o meu codigo mesmo assim não passa a paginação a busca e paginação contada certinho mais não passa a paginação se puder analisar meu codigo para o possivel erro nele por não continuar seque logo abaixo.

busca.php
[CODE]
$palavra = $_POST['palavra'];

if (!isset($_GET['pag'])){ //------- Se a página actual não estiver definida
$pag = 1; //------- Passa a estar, e é apresentada como sendo a 1ª.
}else{ //------- Se já estiver definida.
$pag = $_GET['pag']; //------- Usa-se a página que é.
}

$linhas_por_pag = 6; //-------Estamos a dizer quantos registos serão apresentados por página.

/*Definimos um principio para a busca na Base de Dados.
Que será a página($pag) X a quantidade de registo por página($linhas_por_pag) menos a mesma quantidade($linhas_por_página)*/
$inicio = (($pag*$linhas_por_pag) - $linhas_por_pag);

if (!empty($palavra)) {

//Fazemos a busca à base de dados limitando (LIMIT) a busca com $inicio e $linhas_por_pag préviamente definidos
$sql = mysql_query("SELECT * FROM img WHERE tag LIKE '%".$palavra."%' ORDER BY visitas DESC LIMIT $inicio, $linhas_por_pag");

?>
<table width="400" border="0" align="center" height="23">
<tr align="left">


<td height="19" width="104">Imagem</td>
<td height="19" width="282">
<p align="left">Descrição</p>
</td>
</tr>
</table>
<br>
<?

//Vamos buscar os dados à base de dados e adicionamos à tabela criada
while($row = mysql_fetch_array($sql)){


?>

<table width="400" border="0" align="center">
<tr align="left">


<td height="68" width="104"><? echo "<a href=imagem.php?link=$row[imagem]><img src='/upload/$row[imagem]' width=100 height=100 border=0/></a>" ?></td>
<td><p align="left"><? echo $row['tag']?></p></td>
</tr>
</table>

<?

}

$total_res = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM img WHERE tag LIKE '%".$palavra."%'"), 0);

echo "<br><br>";

// conta quantos registros encontrados com a nossa especificação
if ($total_res == 0) {
echo "Nenhum resultado para $palavra!<br><br>";
}

// se houver um resultado diz que existe um resultado
if ($total_res == 1) {
echo "Encontrado $total_res resultado encontrado para $palavra!<br><br>";
}

// se houver um resultado diz que existe um resultado
if ($total_res > 1) {
echo "Encontrados $total_res resultados encontrados para $palavra!<br><br>";
}

echo "<br><br>";

$quant_pg = ceil($total_res/$linhas_por_pag);

// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( $pg > 0) {
echo "<a href=busca.php?palavra=$palavra&pg=".($pg-1) ." class=pg>&laquo; anterior</a>";
} else {
echo "<font color=#CCCCCC>&laquo; anterior</font>";
}

// Aqui começa a alteração
// faz o controle da quantidade de paginas irá mostrar em números na paginação
if (($pg - 3) < 1 ){
$ant = 1;
} else {
$ant = $pg - 3;
}
if (($pg + 6) > $quant_pg ) {
$pos = $quant_pg;
} else {
$pos = $pg + 6;
}

// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=$ant;$i_pg < $pos;$i_pg++) {
// Aqui termina a alteração
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if ($pg == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=busca.php?palavra=$palavra&pg=$i_pg2 class=pg>$i_pg</a> ";
}
}

// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if (($pg+2) < $quant_pg) {
echo "<a href=busca.php?palavra=$palavra&pg=".($pg+1)." class=pg>próximo &raquo;</a>";
} else {
echo "<font color=#CCCCCC>próximo &raquo;</font>";
}
}


?>
[/CODE]

0
01/11/2009 9:33am
(~15 anos atrás)
Diego,

tenta esse codigo.

busca.php

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Palavra:<input type="text" name="palavra" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>
<br>

<br />
<?php

$con = mysql_connect("localhost","root","87252447");
mysql_select_db("projeto", $con);

//######### INICIO Paginação
$numreg = 1; // Quantos registros por página vai ser mostrado
if (!isset($_GET['pg'])) {
$pg = 0;
} else {
$pg = $_GET['pg'];
}

$inicial = $_GET['pg'] * $numreg;

//######### FIM dados Paginação

if(!empty($_REQUEST[palavra])) {

$busca = explode(' ', $_REQUEST['palavra']);

foreach($busca as $palavra){

// Faz o Select pegando o registro inicial até a quantidade de registros para página
$sql = mysql_query("select * from wm_muralderecados WHERE recado LIKE '%".$palavra."%' LIMIT $inicial, $numreg");

// Serve para contar quantos registros você tem na sua tabela para fazer a paginação
$sql_conta = mysql_query("SELECT * FROM wm_muralderecados WHERE recado LIKE '%".$palavra."%'");

$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação

// conta quantos registros encontrados com a nossa especificação
if ($quantreg == 0) {
echo "Nenhum resultado para $palavra!<br><br>";
}

// se houver um resultado diz que existe um resultado
if ($quantreg == 1) {
echo "$quantreg resultado encontrado para $palavra!<br><br>";
}

// se houver um resultado diz que existe um resultado
if ($quantreg > 1) {
echo "$quantreg resultados encontrados para $palavra!<br><br>";
}

include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>

echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo

while ($aux = mysql_fetch_array($sql)) {

?>

<table width="400" border="0" align="center">
<tr align="left">
<td><?php echo $aux['recado']; ?></td>
</tr>
</table>

<?
}
}
}
?>

paginacao.php

<style type="text/css">
<!--
.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}
a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}
a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}
-->
</style>
<?php
$quant_pg = ceil($quantreg/$numreg);
$quant_pg++;

// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( $pg > 0) {
echo "<a href=".$PHP_SELF."?palavra=$palavra&pg=".($pg-1) ."class=pg>&laquo; anterior</a>";
} else {
echo "<font color=#CCCCCC>&laquo; anterior</font>";
}
// Aqui começa a alteração
// faz o controle da quantidade de paginas irá mostrar em números na paginação
if (($pg - 3) < 1 ){
$ant = 1;
} else {
$ant = $pg - 3;
}
if (($pg + 6) > $quant_pg ) {
$pos = $quant_pg;
} else {
$pos = $pg + 6;
}

// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=$ant;$i_pg < $pos;$i_pg++) {
// Aqui termina a alteração
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if ($pg == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=".$PHP_SELF."?palavra=$palavra&pg=$i_pg2 class=pg>$i_pg</a> ";
}
}

// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if (($pg+2) < $quant_pg) {
echo "<a href=".$PHP_SELF."?palavra=$palavra&pg=".($pg+1)." class=pg>próximo &raquo;</a>";
} else {
echo "<font color=#CCCCCC>próximo &raquo;</font>";
}
?>

0
01/11/2009 1:06pm
(~15 anos atrás)
Melhor Diego.


busca.php

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Palavra:<input type="text" name="palavra" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>
<br>

<br />
<?php

$con = mysql_connect("localhost","root","87252447");
mysql_select_db("projeto", $con);

//######### INICIO Paginação
$numreg = 1; // Quantos registros por página vai ser mostrado
if (!isset($_GET['pg'])) {
$pg = 0;
} else {
$pg = $_GET['pg'];
}

$inicial = $_GET['pg'] * $numreg;

//######### FIM dados Paginação

if(!empty($_REQUEST[palavra])) {

$busca = explode(' ', $_REQUEST['palavra']);

foreach($busca as $palavra){

// Faz o Select pegando o registro inicial até a quantidade de registros para página
mysql_query("select * from img WHERE tag LIKE '%".$palavra."%' LIMIT $inicial, $numreg");

// Serve para contar quantos registros você tem na sua tabela para fazer a paginação
$sql_conta = mysql_query("SELECT * FROM wm_muralderecados WHERE recado LIKE '%".$palavra."%'");

$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação

// conta quantos registros encontrados com a nossa especificação
if ($quantreg == 0) {
echo "Nenhum resultado para $palavra!<br><br>";
}

// se houver um resultado diz que existe um resultado
if ($quantreg == 1) {
echo "$quantreg resultado encontrado para $palavra!<br><br>";
}

// se houver um resultado diz que existe um resultado
if ($quantreg > 1) {
echo "$quantreg resultados encontrados para $palavra!<br><br>";
}

include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>

echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo

while ($aux = mysql_fetch_array($sql)) {

?>
<table width="400" border="0" align="center">
<tr align="left">


<td><? echo "<a href=\"imagem.php?link=".$aux[imagem]."\"><img src='/upload/$aux[imagem]' width=100 height=100 border=0/></a><br>" ?></td>
<td><?= $aux['tag']."<br>"; ?></td>
</tr>
</table>

<?
}
}
}
?>

paginacao.php

<style type="text/css">
<!--
.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}
a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}
a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}
-->
</style>
<?php
$quant_pg = ceil($quantreg/$numreg);
$quant_pg++;

// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( $pg > 0) {
echo "<a href=".$PHP_SELF."?palavra=$palavra&pg=".($pg-1) ."class=pg>&laquo; anterior</a>";
} else {
echo "<font color=#CCCCCC>&laquo; anterior</font>";
}
// Aqui começa a alteração
// faz o controle da quantidade de paginas irá mostrar em números na paginação
if (($pg - 3) < 1 ){
$ant = 1;
} else {
$ant = $pg - 3;
}
if (($pg + 6) > $quant_pg ) {
$pos = $quant_pg;
} else {
$pos = $pg + 6;
}

// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=$ant;$i_pg < $pos;$i_pg++) {
// Aqui termina a alteração
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if ($pg == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=".$PHP_SELF."?palavra=$palavra&pg=$i_pg2 class=pg>$i_pg</a> ";
}
}

// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if (($pg+2) < $quant_pg) {
echo "<a href=".$PHP_SELF."?palavra=$palavra&pg=".($pg+1)." class=pg>próximo &raquo;</a>";
} else {
echo "<font color=#CCCCCC>próximo &raquo;</font>";
}
?>

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)