to tentando colocar paginação em um sisteminha de busca...
se eu efetuar a busca sem usar nenhuma palavra, a busca retorna todos os e a paginação funciona corretamente...
o problema é quando eu busco por alguma coisa, 2 exemplos..
se eu procurar cassiano, a busca me retorna 4 registros, na paginação defini 10 registros por página, mas mesmo assim a paginação aparece como se eu tivesse feito a busca sem nenhuma palavra...
a paginação fica assim: 1 2 3 4 ....
como só achou 4 registros, então isso não era pra aparecer...
outro caso é se eu procurar por 2 palavras, por exemplo: cassiano designer
digamos que ele retorne 8 registros, não precisa de paginação, mas mesmo assim ela é exibida...
nesse caso com duas palavras a url fica assim:
admin.php?pg=localizar&busca=cassiano+designer
mas se eu ir para a página 2 aparece assim
admin.php?pg=localizar&busca=cassiano
a 2ª ou mais palavras não aparecem, e aí a busca vai procurar só pela 1ª...
espero ter sido o mais claro possível....
localizar.php
<?php
$busca = $_GET["busca"];
$NumReg = 10;
if(!isset($_GET["pag"])) {
$pag = 0;
}
$inicio = $pag * $NumReg;
$sql = "SELECT * FROM shows WHERE evento LIKE '%$busca%' LIMIT $inicio, $NumReg";
$seleciona = mysql_query($sql);
$total = mysql_num_rows ($seleciona);
if ($total == 0) {
echo "<h2>Nenhum show encontrado...</h2>";
}
else {
echo "<h2>$total shows encontrados</h2>";
}
$sql2 = mysql_query("SELECT * FROM shows");
$tr = mysql_num_rows($sql2);
?>
<?php
echo "<table cellspacing='0' cellpadding='0'>";
while ($exibe = mysql_fetch_array ($seleciona)) {
aqui exibo os dados...
}
echo "</table>";
echo "<br /><br />";
include "paginacao_busca.php";
?>
paginacao_busca.php
<?php
# Número total de páginas
$Npg = ceil($tr / $NumReg);
$Npg++;
# Verifica se esta na primeira página, se não estiver ele libera o link para anterior
if ( $pag > 0) {
echo "<span class='AntProx'><a href=".$PHP_SELF."?pg=" . $_GET["pg"] . "&pag=".($pag-1) ."&busca=" . $_GET["busca"] . " class='ant'>Anterior</a></span>";
}
else {
echo ""; # Caso contrário oculta o link "anterior"
}
# Faz aparecer os numeros das páginas entre os links ANTERIOR e PROXIMA
for($i = 1; $i < $Npg; $i++) {
# Verifica a página que o navegante esta e retira o link do número para identificar visualmente
if($pag == ($i - 1)) {
echo "<span class='pga'>$i</span>";
}
else {
# Acrescenta os links para cada página
$i2 = $i - 1;
echo "<a href=".$PHP_SELF."?pg=" . $_GET["pg"] . "&pag=" . $i2 . "&busca=" . $_GET["busca"] . " class='pg'>$i</a>";
}
}
# Verifica se esta na ultima página, se não estiver ele libera o link para próxima
if (($pag + 2) < $Npg) {
echo "<span class='AntProx'><a href=".$PHP_SELF."?pg=" . $_GET["pg"] . "&pag=".($pag + 1)."&busca=" . $_GET["busca"] . " class='prox'>Próxima</a></span>";
}
else {
echo ""; # Caso contrário oculta o link "próxima"
}
?>
Pergunta
cassianooliver
to tentando colocar paginação em um sisteminha de busca...
se eu efetuar a busca sem usar nenhuma palavra, a busca retorna todos os e a paginação funciona corretamente...
o problema é quando eu busco por alguma coisa, 2 exemplos..
se eu procurar cassiano, a busca me retorna 4 registros, na paginação defini 10 registros por página, mas mesmo assim a paginação aparece como se eu tivesse feito a busca sem nenhuma palavra...
a paginação fica assim: 1 2 3 4 ....
como só achou 4 registros, então isso não era pra aparecer...
outro caso é se eu procurar por 2 palavras, por exemplo: cassiano designer
digamos que ele retorne 8 registros, não precisa de paginação, mas mesmo assim ela é exibida...
nesse caso com duas palavras a url fica assim:
mas se eu ir para a página 2 aparece assima 2ª ou mais palavras não aparecem, e aí a busca vai procurar só pela 1ª...
espero ter sido o mais claro possível....
localizar.php
<?php $busca = $_GET["busca"]; $NumReg = 10; if(!isset($_GET["pag"])) { $pag = 0; } $inicio = $pag * $NumReg; $sql = "SELECT * FROM shows WHERE evento LIKE '%$busca%' LIMIT $inicio, $NumReg"; $seleciona = mysql_query($sql); $total = mysql_num_rows ($seleciona); if ($total == 0) { echo "<h2>Nenhum show encontrado...</h2>"; } else { echo "<h2>$total shows encontrados</h2>"; } $sql2 = mysql_query("SELECT * FROM shows"); $tr = mysql_num_rows($sql2); ?> <?php echo "<table cellspacing='0' cellpadding='0'>"; while ($exibe = mysql_fetch_array ($seleciona)) { aqui exibo os dados... } echo "</table>"; echo "<br /><br />"; include "paginacao_busca.php"; ?>paginacao_busca.php<?php # Número total de páginas $Npg = ceil($tr / $NumReg); $Npg++; # Verifica se esta na primeira página, se não estiver ele libera o link para anterior if ( $pag > 0) { echo "<span class='AntProx'><a href=".$PHP_SELF."?pg=" . $_GET["pg"] . "&pag=".($pag-1) ."&busca=" . $_GET["busca"] . " class='ant'>Anterior</a></span>"; } else { echo ""; # Caso contrário oculta o link "anterior" } # Faz aparecer os numeros das páginas entre os links ANTERIOR e PROXIMA for($i = 1; $i < $Npg; $i++) { # Verifica a página que o navegante esta e retira o link do número para identificar visualmente if($pag == ($i - 1)) { echo "<span class='pga'>$i</span>"; } else { # Acrescenta os links para cada página $i2 = $i - 1; echo "<a href=".$PHP_SELF."?pg=" . $_GET["pg"] . "&pag=" . $i2 . "&busca=" . $_GET["busca"] . " class='pg'>$i</a>"; } } # Verifica se esta na ultima página, se não estiver ele libera o link para próxima if (($pag + 2) < $Npg) { echo "<span class='AntProx'><a href=".$PHP_SELF."?pg=" . $_GET["pg"] . "&pag=".($pag + 1)."&busca=" . $_GET["busca"] . " class='prox'>Próxima</a></span>"; } else { echo ""; # Caso contrário oculta o link "próxima" } ?>Link para o comentário
Compartilhar em outros sites
18 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.