Ir para conteúdo
Fórum Script Brasil
  • 0

(resolvido) Paginação em uma busca do MySql


ZS Online

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

pois é até percebi isso e tentei fazer passar os parametros parece uma gambiarra mais até que funcionou porem se eu passo a página os parametros se perde novamente n to entendendo é nada

olha o codigo:


//registrando as variáveis (n sei se esta certo isso tentei td)
$area = $_GET["area"];
$palavra = $_GET["palavra"];
$categoria = $_GET["categoria"];
$bairro = $_GET["bairro"];
$sub_categoria = $_GET["sub_categoria"];

if($_REQUEST["Submit"]<>"")//verifica quais campos foi selecionado
{
// Tratamento das variaveis.
$area = $_REQUEST["area"];
$palavra = $_REQUEST["palavra"];
$categoria = $_REQUEST["categoria"];
$bairro = $_REQUEST["bairro"];
$sub_categoria = $_REQUEST["sub_categoria"];
}

// Declaração da pagina inicial
$pagina = $_GET["pagina"];
if($pagina == "") {
$pagina = "1";
}

// Maximo de registros por pagina
$maximo = 3;

// Calculando o registro inicial
$inicio = $pagina - 1;
$inicio = $maximo * $inicio;




$campos_query = "*"; //query da sql

//---------------Inicio das condições do formulario------------------------

if (($palavra) and (!$categoria) and (!$bairro) and (!$sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND nome LIKE '%".$palavra."%'";}

elseif (($palavra) and (!$categoria) and ($bairro) and (!$sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND bairro=$bairro AND nome LIKE '%".$palavra."%'";}

elseif ((!$palavra) and (!$categoria) and ($bairro) and (!$sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND bairro=$bairro";}

elseif ((!$palavra) and ($categoria) and (!$bairro) and (!$sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND categoria=$categoria";}

elseif (($palavra) and ($categoria) and (!$bairro) and (!$sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND nome LIKE '%".$palavra."%' AND categoria='$categoria'";}

elseif ((!$palavra) and ($categoria) and ($bairro) and (!$sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND bairro=$bairro AND categoria=$categoria";}

elseif (($palavra) and ($categoria) and ($bairro) and (!$sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND nome LIKE '%".$palavra."%' AND bairro=$bairro AND categoria=$categoria";}

elseif ((!$palavra) and ($categoria) and (!$bairro) and ($sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND categoria=$categoria AND sub_categoria=$sub_categoria";}

elseif (($palavra) and ($categoria) and (!$bairro) and ($sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND nome LIKE '%".$palavra."%' AND categoria=$categoria AND sub_categoria=$sub_categoria";}

elseif ((!$palavra) and ($categoria) and ($bairro) and ($sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND bairro=$bairro AND categoria=$categoria AND sub_categoria=$sub_categoria";}

elseif (($palavra) and ($categoria) and ($bairro) and ($sub_categoria)){
$sql = "FROM empresas WHERE area=$area AND bairro=$bairro AND nome LIKE '%".$palavra."%' AND categoria=$categoria AND sub_categoria=$sub_categoria";}

elseif ((!$palavra) and (!$categoria) and (!$bairro) and (!$sub_categoria)){
$sql = "FROM empresas WHERE area=$area";}

//---------------fim das condições------------------------------

// Conta os resultados no total da minha query
$strCount = "SELECT COUNT(*) AS 'num_registros' $sql";
$query = mysql_query($strCount);
$row = mysql_fetch_array($query);
$total = $row["num_registros"];

if($total<=0) {
$err = "<center>Nenhum registro encontrado.</center>";
} else {
$strQuery = "SELECT $campos_query $sql LIMIT $inicio,$maximo"; //fazendo a consulta de acordo com as variaveis
$query = mysql_query($strQuery);
}
//--------------------fim da consulta sql-----------------------------------




//------------------------Aqui faz a paginação---------------------------(esta um pouco bagunçado pois to fuçando muito)

<? // Calculando pagina anterior
$menos = $pagina - 1;

// Calculando pagina posterior
$mais = $pagina + 1;

$pgs = ceil($total / $maximo);
if($pgs > 1 ) {
// Mostragem de pagina
if($menos > 0) {
echo "<a href=\"?pagina=$menos&&&area=$_POST[area]&&palavra=$_POST[palavra]&&categoria=$_POST[categoria]&&bairro=$_POST[bairro]&&sub_categoria=$_POST[sub_categoria]\" class='txt_preto'>anterior</a> ";
}
// Listando as paginas
for($i=1;$i <= $pgs;$i++) {
if($i != $pagina) {
echo " <a href=\"?pagina=".($i)."&&area=$_POST[area]&&palavra=$_POST[palavra]&&categoria=$_POST[categoria]&&bairro=$_POST[bairro]&&sub_categoria=$_POST[sub_categoria]\" class='txt_preto'>$i</a>";
} else {
echo " <strong lass='texto_paginacao_pgatual'>".$i."</strong>";
}
}
if($mais <= $pgs) {
echo " <a href=\"?pagina=$mais&&area=$_POST[area]&&palavra=$_POST[palavra]&&categoria=$_POST[categoria]&&bairro=$_POST[bairro]&&sub_categoria=$_POST[sub_categoria]\" class='txt_preto'>pr&oacute;xima</a>";
}
} ?>
//-------------------------fim do comando de paginação--------------------------
[/codebox]

é isso cara se puder me ajudar ae agradeço porque n sei onde esta o erro

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiro, pra que isso?

//registrando as variáveis (n sei se esta certo isso tentei td)
$area = $_GET["area"];
$palavra = $_GET["palavra"];
$categoria = $_GET["categoria"];
$bairro = $_GET["bairro"];
$sub_categoria = $_GET["sub_categoria"];

if($_REQUEST["Submit"]<>"")//verifica quais campos foi selecionado
{
// Tratamento das variaveis.
$area = $_REQUEST["area"];
$palavra = $_REQUEST["palavra"];
$categoria = $_REQUEST["categoria"];
$bairro = $_REQUEST["bairro"];
$sub_categoria = $_REQUEST["sub_categoria"];
}

Se uma hora os dados vão ser passados por POST e outras por GET, não precisa especificar $_GET e depois, logo abaixo, $_REQUEST, afinal de contas o $_REQUEST permite receber o $_GET e o $_POST

Segundo,

if($menos > 0) {
echo "<a href=\"?pagina=$menos&&&area=$_POST[area]&&palavra=$_POST[palavra]&&categoria=$_POST[categoria]&&bairro=$_POST[bairro]&&sub_categoria=$_POST[sub_categoria]\" class='txt_preto'>anterior</a> ";
}
// Listando as paginas
for($i=1;$i <= $pgs;$i++) {
if($i != $pagina) {
echo " <a href=\"?pagina=".($i)."&&area=$_POST[area]&&palavra=$_POST[palavra]&&categoria=$_POST[categoria]&&bairro=$_POST[bairro]&&sub_categoria=$_POST[sub_categoria]\" class='txt_preto'>$i</a>";
} else {
echo " <strong lass='texto_paginacao_pgatual'>".$i."</strong>";
}
}
if($mais <= $pgs) {
echo " <a href=\"?pagina=$mais&&area=$_POST[area]&&palavra=$_POST[palavra]&&categoria=$_POST[categoria]&&bairro=$_POST[bairro]&&sub_categoria=$_POST[sub_categoria]\" class='txt_preto'>pr&oacute;xima</a>";
}[/codebox]

Ai você só está recebendo o que vier pelo método POST, se uma hora vai ser POST e outra GET, substitua os $_POST por $_REQUEST...

E a menos que o seu sistema seja muito restrito, é interessante você utilizar o mysql_real_escape_string para te dar alguma proteção, pois simplesmente pegar algum dado e colocar numa query é expor o seu banco de dados a qualquer espertinho de plantão...

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,4k
    • Posts
      652,2k
×
×
  • Criar Novo...