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

Paginação De Resultados


Guest - Calaça -

Pergunta

Guest - Calaça -

Sei que existem muitos exemplos de paginação no fórum, mas não consegui acertar nenhum, por isso peço ajuda para o seguinte script:

<?
include "conecta.php";
?>

<html>
  <head>
    <title>Pesquisa dos Nomes</title>
  </head>

  <body bgcolor="#FFFFFF" text="#000000">

      <br>
      <table width="60%" border="0" cellspacing="0" cellpadding="0" align="center">
             <tr>
             <td height="60">
             <div align="center"><font face="Arial" size="4"><b>Pesquisa dos Nomes</b></font></div></td>
             </tr>
      </table>

      <br>
      <form name="frm_pesq" method="post" action="<?echo $PHP_SELF?>">
            <table width="75%" border="0" cellspacing="1" cellpadding="0" align="center">
            <tr bgcolor="#6699CC">
                <td colspan="2">
                <div align="center"><font face="Arial" size="2"><b>Pesquisa</b></font></div></td>
            </tr>

            <tr bgcolor="ebebeb">
                <td width="32%"><font face="Arial" size="2">Nome a ser procurado:</font></td>
                <td width="68%"> <font face="Arial" size="2">
                <input type="text" name="pesq" size="30">
                <input type="submit" value="Pesquisar &gt;&gt;">
                <input type="hidden" name="pesquisar" value="sim"></font></td>
            </tr>
            </table>
      </form>
  <?
  $sql_cliente = mysql_query("SELECT * FROM tbnomes WHERE nom_nome LIKE '%$pesq%'");
  $total = mysql_num_rows($sql_cliente);
  if ($pesquisar <> 'sim')
    echo "O Banco de Dados possui ".$total." nomes catalogados";
  ?>
  <br>
  <?
  if($pesquisar == 'sim'){

    $sql=mysql_query("SELECT * FROM tbnomes WHERE nom_nome LIKE '%$pesq%'");
    $total=mysql_num_rows($sql);
    if($pagina=="") {
      $pagina="1";
    }
    $maximo="10";
    $inicio=$pagina-1;
    $inicio=$maximo*$inicio;
    $query=mysql_query("SELECT * FROM tbnomes WHERE nom_nome LIKE '%$pesq%'LIMIT $inicio,$maximo");

    if(mysql_num_rows($sql) > 0) {
      if ($total >1) {
        echo "Foram encontrados ".$total." nomes semelhantes a ".$pesq;
      }
      Else {
        echo "Foi encontrado ".$total." nome semelhante a ".$pesq;
      }
      ?>
      <table width="95%" border="0" cellspacing="1" cellpadding="0" align="center">
               <tr bgcolor="#6699CC">
                   <td colspan="5">
                   <div align="center"><font face="Arial" size="2"><b><font color="#FFFFFF">Nomes Cadastrados</font></b></font></div>
                   </td>
               </tr>
               <tr bgcolor="cccccc">
                   <td width="19%">
                       <div align="center"><b><font face="Arial" size="2">Nome</font></b></div>
                   </td>
                   <td width="63%">
                       <div align="center"><b><font face="Arial" size="2">Significado</font></b></div>
                   </td>
                   <td width="23%">
                       <div align="center"><b><font face="Arial" size="2">Fonte</font></b></div>
                   </td>
               </tr>
               <?while($array_cliente = mysql_fetch_array($query)) {?>
                 <tr bgcolor="ebebeb">
                   <td width="19%" height="25"><font face="Arial" size="2">
                       <?echo $array_cliente['nom_nome'];?></font>
                   </td>
                   <td width="33%" height="25"><font face="Arial" size="2">
                       <?echo $array_cliente['nom_sign'];?></font>       </td>
                   </td>
                 </tr>
               <?} /* fecha while */ ?>
      </table>
    <?}/* fecha mysql_num_rows > 0 */
    else{
      echo "<br><br><div align=center><font face=Arial size=2>
        Desculpe, mas não achei nada<br><br></font></div>";
    }

    $menos=$pagina-1;
    $mais=$pagina+1;
    $p_ini=$mais-1;
    $p_ini=$maximo*$p_ini;
    $p_query=mysql_query("SELECT * FROM tbnomes WHERE nom_nome LIKE '%$pesq%'LIMIT $p_ini,$maximo");
    $p_total=mysql_num_rows($p_query);
    if($menos>0) {
      echo "<a href=\"?pagina=$menos\"><< Anterior</a> ";
    }
    if($p_total>0) {
      echo  "<a href=\"?pagina=$mais\">Próxima >></a>";
    }
  } //fecha pesquisar =="sim"

  ?>
  <br><div align=center><font face=Arial size=2>
      <a href='index.htm'>[ Voltar ]</a></font></div>
  </body>
</html>

Primeiro ele mostra a quantidade de registros existentes no BD e depois que se pede uma busca ele mostra, digamos, 50 registros que atendem a busca.

Quaro mostrar de 10 em 10 registros mas depois que mostra a 1ª página as páginas seguites não são mostradas.

O script acima, peguei no portal e adaptei mas não funcionou. Alguém pode ajudar?

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

ae cara da uma olhadinha nesse script aqui.

<?

include ("../config.php");

// Nome da tabela a ter os registros paginados

$tabela="NomeDaTabela";

// Maximo de registros por pagina

$maximo="10";

// Total de registros

$sql = mysql_query("SELECT * FROM $tabela");

$total = mysql_num_rows($sql);

if ($total == "0") {

echo "<script>

alert(\"Não há informações disponiveis.");

window.location = 'javascript:history.back(-1)';

</script>";

} else {

echo "";

}

// Declaração da pagina inicial

$pagina = $_GET[pagina];

if($pagina=="") {

$pagina="1";

}

// Calculando o registro inicial

$inicio=($pagina*$maximo)-$maximo;

// Query no qual o script se basea

$busca=mysql_query("SELECT * FROM $tabela LIMIT $inicio,$maximo");

?>

<? while ($valor = mysql_fetch_array($busca)){ ?>

  .

  . //ae tu coloca os resultados aqui.

  .

<? } ?>

// Inicio da paginação

<?

     

$sql1 = mysql_query("Select * from $tabela");

$linhas = mysql_num_rows($sql1);

$paginas = ceil($linhas / $maximo);

//anterior

if($pagina>1) {

$anterior = $pagina - 1;

echo "<a href=\"?pagina=$anterior\" style=\"color: #FF9900;\">Anterior</a>  ";

}

?>

        <font color="#FFFFFF">...</font><strong><font color="#000000">&quot; \</font><font color="#FF0000">o</font><font color="#000000">/&quot;

        <font color="#FFFFFF">...</font></font></strong>

        <?

//proxima

if($pagina < ($paginas - 1)) {

$proxima = $pagina + 1;

echo "  <a href=\"?pagina=$proxima\" style=\"color: #FF9900;\">Próxima</a>";

}

?>

        <strong>&gt;</strong>&gt;<br>

        <?

ECHO ("| ");

FOR ($valor = 1; $valor < ($paginas) + 0; $valor++) { // Abre distribue

$DISTRIBUE_BLOCOS = $DISTRIBUE * $QUANTIDADE;

#-------------------------------------------------

# Aqui ele mostrará em negrito o bloco atual!

IF ($pagina=="$valor"){

ECHO (" <A HREF=\"?pagina=$valor\" style=\"color: #FF0000;\"><B>[$valor]</B></A> |");

} ELSE {

ECHO (" <A HREF=\"?pagina=$valor\" style=\"color: #FF9900;\">$valor</A> |");

}

#-------------------------------------------------

} // Fecha distribue

?>

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Calaça -

Obrigado Galeguim, mas deu erro neste bloco:

if ($total == "0") {
echo "<script>
alert(\"Não há informações disponiveis.");
window.location = 'javascript:history.back(-1)';
</script>";
} else {
echo "";
}

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Calaça -

Gladisom, desculpe este código deve ser seu mesmo. Estava disponível em algum lugar. Só que ele pagina todos os ítens do BD e só só quero alguns por isso tentei adaptá-lo mas não deu certo.

Link para o comentário
Compartilhar em outros sites

  • 0

Ops foi meu amigo nem vi esquci de colocar uma barra ae.

if ($total == "0") {

echo "<script>

alert(\"Não há informações disponiveis.\");

window.location = 'javascript:history.back(-1)';

</script>";

} else {

echo "";

}

Qualquer coisa posta ae.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Readaptação no codigo da paginação.

descobri um erro no codigo da paginação q eu postei. ela tava dechando pra traz o ultimo resultado do banco.

ae vai o codigo arrumado. em vermelho é onde foi arrumado.

<?

include ("../config.php");

// Nome da tabela a ter os registros paginados

$tabela="NomeDaTabela";

// Maximo de registros por pagina

$maximo="10";

// Total de registros

$sql = mysql_query("SELECT * FROM $tabela");

$total = mysql_num_rows($sql);

if ($total == "0") {

echo "<script>

alert(\"Não há informações disponiveis.\");

window.location = 'javascript:history.back(-1)';

</script>";

} else {

echo "";

}

// Declaração da pagina inicial

$pagina = $_GET[pagina];

if($pagina=="") {

$pagina="1";

}

// Calculando o registro inicial

$inicio=($pagina*$maximo)-$maximo;

// Query no qual o script se basea

$busca=mysql_query("SELECT * FROM $tabela LIMIT $inicio,$maximo");

?>

<? while ($valor = mysql_fetch_array($busca)){ ?>

  .

  . //ae tu coloca os resultados aqui.

  .

<? } ?>

// Inicio da paginação

<?

     

$sql1 = mysql_query("Select * from $tabela");

$linhas = mysql_num_rows($sql1);

$paginas = ceil($linhas / $maximo);

//anterior

if($pagina>1) {

$anterior = $pagina - 1;

echo "<a href=\"?pagina=$anterior\" style=\"color: #FF9900;\">Anterior</a>  ";

}

?>

        <font color="#FFFFFF">...</font><strong><font color="#000000">&quot; \</font><font color="#FF0000">o</font><font color="#000000">/&quot;

        <font color="#FFFFFF">...</font></font></strong>

        <?

//proxima

if($pagina < ($paginas)) {

$proxima = $pagina + 1;

echo "  <a href=\"?pagina=$proxima\" style=\"color: #FF9900;\">Próxima</a>";

}

?>

        <strong>&gt;</strong>&gt;<br>

        <?

ECHO ("| ");

FOR ($valor = 1; $valor < ($paginas) + 1; $valor++) { // Abre distribue

$DISTRIBUE_BLOCOS = $DISTRIBUE * $QUANTIDADE;

#-------------------------------------------------

# Aqui ele mostrará em negrito o bloco atual!

IF ($pagina=="$valor"){

ECHO (" <A HREF=\"?pagina=$valor\" style=\"color: #FF0000;\"><B>[$valor]</B></A> |");

} ELSE {

ECHO (" <A HREF=\"?pagina=$valor\" style=\"color: #FF9900;\">$valor</A> |");

}

#-------------------------------------------------

} // Fecha distribue

?>

Qualquer coisa posta ae.

Abraços.

Editado por GaleguiN
Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Calaça -

Oi pessoal!

Ainda não resolvi o problema de paginação. O script acima funciona bem quando quero listar todos os dados do banco.

O problema é que quando quero listar apenas alguns dados tipo, só nomes que contenham a variável $pesq, assim:

$busca=mysql_query("SELECT * FROM $tabela WHERE nome LIKE '%$pesq%' LIMIT $inicio,$maximo");

Todos os scripts que testei e adaptei com a cláusula WHERE não deram certo.

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...