..:: MX Studio Fóruns ::..: Duvida qnt busca + paginação - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Duvida qnt busca + paginação

#1 User is offline   pspaulinhaa 

  • Group: Membros
  • Posts: 1
  • Joined: 01-June 11

Posted 02 June 2011 - 10:39 AM

Olá a todos.

Venho buscando em fóruns e sites alguma forma de soluciona meu problema que, deve ser simples e facil, porem como estou iniciando ainda em php estou com dificuldades.
Já desenvolvi formularios de busca, normal, funcionam. Também já fiz paginação de itens quando puxo do banco, funciona perfeitamente.

Porém, eu estava com uma busca de um banco (utilizo mysql) com muitos dados, aparecendo mais de 200, e eu estava paginando, mostrando 10 por pagina. Quando eu listo todos, ele pagina certinho. Na hora que incluo a opção de fazer uma busca/filtro, a primeira pagina com os 10 estão corretos, ao ir para a segunda eu 'perco' a busca. Na url some a minha busca que estava enviando e eu não consigo arruma o get, deixa que continue nas paginas 2,3,4... aparecendo apenas o que quero buscar.

Eis o código:
(não colocarei o html completo pois é MUITO grande, colocarei o formulario e os codigos php q realizam a busca e paginação, q são os principais)



Formulario:


<table width="30%" border="0" cellpadding="5" cellspacing="0" >
<tr> </tr>
<form name='busca' id='busca' method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>?a=buscar">
<tr>
<td width="104"><strong>Nome</strong></td>
<td><input type='text' name='nome_solicitante' id='nome_solicitante' value=' ' /></td>
</tr>
<tr> </tr>
<tr>
<td width="104"><strong>Nº Protocolo</strong></td>
<td><input type='text' name='id_protocolo' id='id_protocolo' value=' ' /></td>
</tr>
<tr> </tr>
<td><strong><input type='submit' name='buscar' id='buscar' value='Buscar' /></strong></td>
</form>
</table><br/><br/>




O código php de busca:

<?php
// Recuperamos a ação enviada pelo formulário
$a = $_GET['a'];

// Verificamos se a ação é de busca
if ($a == "buscar") {

// Pegamos a palavra do html
$nome_solicitante = trim($_POST['nome_solicitante']);
$id_protocolo = trim($_POST['id_protocolo']);

$maxRows_rs_ListaSetor = 10;
$pageNum_rs_ListaSetor = 0;
if (isset($_GET['pageNum_rs_ListaSetor'])) {
$pageNum_rs_ListaSetor = $_GET['pageNum_rs_ListaSetor'];
}
$startRow_rs_ListaSetor = $pageNum_rs_ListaSetor * $maxRows_rs_ListaSetor;

if (($data_dia) != '') {
mysql_select_db($database_conn_ouvidoria, $conn_ouvidoria);
$query_rs_ListaSetor = "SELECT * FROM protocolo INNER JOIN clientela ON protocolo.id_clientela = clientela.id_clientela INNER JOIN manifestacao ON protocolo.id_manifestacao = manifestacao.id_manifestacao INNER JOIN assunto ON protocolo.id_assunto = assunto.id_assunto INNER JOIN status ON protocolo.status = status.id_status INNER JOIN setor ON protocolo.id_setor = setor.id_setor WHERE protocolo.nome_solicitante LIKE '%".$nome_solicitante."%' AND protocolo.id_protocolo LIKE '%".$id_protocolo."%' ORDER BY protocolo.id_protocolo";
$query_limit_rs_ListaSetor = sprintf("%s LIMIT %d, %d", $query_rs_ListaSetor, $startRow_rs_ListaSetor, $maxRows_rs_ListaSetor);
$rs_ListaSetor = mysql_query($query_limit_rs_ListaSetor, $conn_ouvidoria) or die(mysql_error());
$row_rs_ListaSetor = mysql_fetch_assoc($rs_ListaSetor);

if (isset($_GET['totalRows_rs_ListaSetor'])) {
$totalRows_rs_ListaSetor = $_GET['totalRows_rs_ListaSetor'];
} else {
$all_rs_ListaSetor = mysql_query($query_rs_ListaSetor);
$totalRows_rs_ListaSetor = mysql_num_rows($all_rs_ListaSetor);
}
$totalPages_rs_ListaSetor = ceil($totalRows_rs_ListaSetor/$maxRows_rs_ListaSetor)-1;

$queryString_rs_ListaSetor = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_rs_ListaSetor") == false &&
stristr($param, "totalRows_rs_ListaSetor") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_rs_ListaSetor = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_rs_ListaSetor = sprintf("&totalRows_rs_ListaSetor=%d%s", $totalRows_rs_ListaSetor, $queryString_rs_ListaSetor);
$_SESSION["busca"] = $_POST["busca"];
if ($totalRows_rs_ListaSetor > 0){

echo '<br/><br/><br/>';


?>




<table width="100%" border="1" cellpadding="0" cellspacing="0" bgcolor="#D7DEE8">
<tr bgcolor="#D7DEE8" class="corpo">
<td><strong> </strong></td>
<td><strong>Nº Protocolo </strong></td>
<td><strong>Nome </strong></td>
</tr>

<?php do { ?>



<tr class="corpo">
<td><br/><?php echo $row_rs_ListaSetor['id_protocolo']; ?></td>
<td><br/><?php echo $row_rs_ListaSetor['nome_solicitante']; ?></td>
</tr>

<?php } while ($row_rs_ListaSetor = mysql_fetch_assoc($rs_ListaSetor)); ?>
<?php } // Show if recordset not empty ?>


/////PAGINACAO/////

</table>


<p>
<table border="0" width="50%" align="center">
<tr>
<td width="15%" align="center"><?php if ($pageNum_rs_ListaSetor > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_rs_ListaSetor=%d%s", $currentPage, 0, $queryString_rs_ListaSetor); ?>">Primeiro</a>
<?php } // Show if not first page ?>
</td>
<td width="15%" align="center"><?php if ($pageNum_rs_ListaSetor > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_rs_ListaSetor=%d%s", $currentPage, max(0, $pageNum_rs_ListaSetor - 1), $queryString_rs_ListaSetor); ?>">Anterior</a>
<?php } // Show if not first page ?>
</td>
<td width="15%" align="center"><?php if ($pageNum_rs_ListaSetor < $totalPages_rs_ListaSetor) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_rs_ListaSetor=%d%s", $currentPage, min($totalPages_rs_ListaSetor, $pageNum_rs_ListaSetor + 1), $queryString_rs_ListaSetor); ?>">Pr&oacute;ximo</a>
<?php } // Show if not last page ?>
</td>
<td width="15%" align="center"><?php if ($pageNum_rs_ListaSetor < $totalPages_rs_ListaSetor) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_rs_ListaSetor=%d%s", $currentPage, $totalPages_rs_ListaSetor, $queryString_rs_ListaSetor); ?>">&Uacute;ltimo</a>
<?php } // Show if not last page ?>
</table>

<?php

}
?>










////////////////////////////////////////////////////////////////////////////////////////////////


Posso ter esquecido talvez de fechar algum table, tr, td.. mas é pq eu reduzi MUITO o codigo, pq o filtro é bem maior, desculpem o ramanho, tentei passa a idéia.
Eu passo por get a busca, e quando vai para a página 2 eu perco a busca ><

Obrigada quem puder ajudar e desculpem o tamanho do post, mas estou faz quase 2 semanas nisso e acho q é bobeirinha minha =/
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)