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

Paginacao


§tRuTe®

Pergunta

então não é? ow...eu sei q vocês vai me xingar e tal.....

mas tipo....

eu já usei a busca...e já achei varios script de paginacao e tal...

mas ta ligado, eu não entendi praticamente nada...só as partes de conexao com o BD......q é o q eu sei de cabeca aqui...só isso....hehe....

tipo..se num for pedir demais.....tem jeito de alguém me eplicar +ou- como se faz uma paginacao ?

sendo q eu já teno a conexao, e o while q distribui tudo de uma vez na pagina..

vlw....falow!!!!

Link para o comentário
Compartilhar em outros sites

25 respostass a esta questão

Posts Recomendados

  • 0

Bom, vou mostrar um sisteminha de paginação pra consultas em banco de dados:

Primeiro, define a variável que conterá o registro inicial a ser mostrado (será uma query string):

$begin = @$_GET['begin'];

if (!$begin) { $begin = 0; }

Depois pega o total de registros que serão exibidos:

$query = "SELECT * FROM tabela";

$resultado = mysql_query($query,$conexao);

$total = mysql_num_rows($resultado);

Estas linhas são opcionais, mas é legal colocar:

Total de registros: <b><? echo $total; ?></b><br />

Exibindo de <b><? echo $begin+1; ?></b> a <b><? echo $begin+10; ?></b>

Exibe os resultados num intervalo que inicia na variável $begin + os próximos 10 registros:

$query = "SELECT * FROM tabela ORDER BY data DESC LIMIT $begin,10";

$resultado = mysql_query($query,$conexao);

while ($linha = mysql_fetch_array($resultado)) {

   echo ...

   echo ...

   echo ...

}

E, por último, os botões "<< anteriores | próximos >>":

if ($total != "0") {

    if (($begin > 0) and ($begin <= 10)) {

        $anteriores = '<a href="busca.php?begin=0"><b>Anteriores</b></a>';

    } elseif (($begin > 0) and ($begin > 10)) {

        $anteriores = '<a href="busca.php?begin=' . ($begin-10) . '"><b>Anteriores</b></a>';

    } else {

        $anteriores = '<b>Anteriores</b>';

    }

    if (($begin < $total) and (($begin+10) >= $total)) {

        $proximas = '<b>Próximas</b>';

    } else {

        $proximas = '<a href="busca.php?begin=' . ($begin+10) . '"><b>Próximas</b></a>';

    }

    echo $anteriores . " | " . $proximas;

}

Falou!

Link para o comentário
Compartilhar em outros sites

  • 0

hehe....eu aceito uma explicacao...eu axo q eu entendi ateh a parte do while....

mas depois...mesmo não tendo muitas funcoes, na parte dos botoes, eu não entendi muito bem ow...........

tem jeito de dar uma explicadinha?

ah...só mais uma coisa....aqui na query

$query = "SELECT * FROM tabela ORDER BY data DESC LIMIT $begin,10";

se eu colocasse

LIMIT 0,10";

ele ia pegar apenas esse 11 registros? contando com o 0?

ae se eu colocasse 20, 30 ele iria pegar os registros de 20 a 30 apenas?

vlw....falow!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Po ta dando erro olha como deixei ele:

<?

$sql = mysql_connect("localhost", "root", "");

$bd = "classificados";

$conexao = mysql_select_db ($bd, $sql);

$begin = @$_GET['begin'];

if (!$begin) { $begin = 0; }

$query = "SELECT * FROM dados";

$resultado = mysql_query($query,$sql);

$total = mysql_num_rows($resultado);

echo "Total de registros: <b><? echo $total; ?></b><br />";

echo "Exibindo de <b><? echo $begin+1; ?></b> a <b><? echo $begin+10; ?></b>";

$query = "SELECT * FROM tabela ORDER BY data DESC LIMIT $begin,10";

$resultado = mysql_query($query,$sql);

while ($linha = mysql_fetch_array($resultado)) {

}

if ($total != "0") {

    if (($begin > 0) and ($begin <= 10)) {

        $anteriores = '<a href="busca.php?begin=0"><b>Anteriores</b></a>';

    } elseif (($begin > 0) and ($begin > 10)) {

        $anteriores = '<a href="classificados.php?begin=' . ($begin-10) . '"><b>Anteriores</b></a>';

    } else {

        $anteriores = '<b>Anteriores</b>';

    }

    if (($begin < $total) and (($begin+10) >= $total)) {

        $proximas = '<b>Próximas</b>';

    } else {

        $proximas = '<a href="classificados.php?begin=' . ($begin+10) . '"><b>Próximas</b></a>';

    }

    echo $anteriores . " | " . $proximas;

}

?>

ERRO: Total de registros:

Exibindo de a

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\root\classficados\pagina.php on line 15

Anteriores | Próximas

o que fazer?

Link para o comentário
Compartilhar em outros sites

  • 0

olha ai

$sql = mysql_connect("localhost", "root", "");

$bd = "classificados";

$conexao = mysql_select_db ($bd, $sql);

$begin = @$_GET['begin'];

if (!$begin) { $begin = 0; }

$query = "SELECT * FROM dados";

$resultado = mysql_query($query,$sql);

$total = mysql_num_rows($resultado);

"Total de registros: <b><? echo $total; ?></b><br />";

"Exibindo de <b><? echo $begin+1; ?></b> a <b><? echo $begin+10; ?></b>";

$query = "SELECT * FROM dados ORDER BY data DESC LIMIT $begin,10";

$resultado = mysql_query($query,$sql);

while ($linha = mysql_fetch_array($resultado)) {

}

if ($total != "0") {

    if (($begin > 0) and ($begin <= 10)) {

        $anteriores = '<a href="classificados.php?begin=0"><b>Anteriores</b></a>';

    } elseif (($begin > 0) and ($begin > 10)) {

        $anteriores = '<a href="classificados.php?begin=' . ($begin-10) . '"><b>Anteriores</b></a>';

    } else {

        $anteriores = '<b>Anteriores</b>';

    }

    if (($begin < $total) and (($begin+10) >= $total)) {

        $proximas = '<b>Próximas</b>';

    } else {

        $proximas = '<a href="classificados.php?begin=' . ($begin+10) . '"><b>Próximas</b></a>';

    }

    echo $anteriores . " | " . $proximas;

}

Erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\root\classficados\classificados.php on line 70

Valeu.

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que isso tá certo... não precisa mudar. você deixou em branco aquele comando "while" ??

while ($linha = mysql_fetch_array($resultado)) {

}

É dentro dele que você vai imprimir os dados que recuperar do banco de dados.

Link para o comentário
Compartilhar em outros sites

  • 0

você vai chamar os dados pelo nome dos campos, entendeu?

Supondo que você tenha os campos "nome", "sobrenome" e "idade":

while ($linha = mysql_fetch_array($resultado)) {

    echo "Nome: " . $linha['nome'] . "<br />";

    echo "Sobrenome: " . $linha['sobrenome'] . "<br />";

    echo "Idade: " . $linha['idade'] . "<br />";

}

Entendeu? Ele vai imprimir os registros do banco com paginação de 10...

Falou!

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi, agora ficou assim meu script:

<?

/* Este script foi desenvolvido por:

Tulio Ricardo P. Audujas

MSN: suporte@navegahost.com.br

icq: 179719912

site: www.navegahost.com.br

Por Favor mantenha os direitos autorais.

*/

echo"

<table width=500 cellspacing=1 cellpadding=2 align=center bgcolor=#BBBBBB>

<tr align=\"center\" valign=\"middle\">

<td bgcolor=#DDDDDD colspan=\"4\"><font face=verdana size=2><b>Lista de Anuncios</b></font></td>

</tr>

<tr>

<td bgcolor=#DDDDDD>

<b><font face=verdana size=1>Marca</td>

<td bgcolor=#DDDDDD>

<b><font face=verdana size=1>Modelo</td>

<td bgcolor=#DDDDDD>

<b><font face=verdana size=1>Ano</td>

<td bgcolor=#DDDDDD>

<b><font face=verdana size=1>UF</td>

</b>

</tr>

";

include "config.php";

$begin = @$_GET['begin'];

if (!$begin) { $begin = 0; }

$result = mysql_query ("SELECT * FROM dados ORDER BY marca ASC");

$total = mysql_num_rows($result);

"Total de registros: <b><? echo $total; ?></b><br />";

"Exibindo de <b><? echo $begin+1; ?></b> a <b><? echo $begin+10; ?></b>";

while ($row = mysql_fetch_array($result)){

$id = $row["id"];

$modelo = $row["modelo"];

$nome = $row["nome"];

$marca = $row["marca"];

$ano = $row["ano"];

$uf = $row["uf"];

        echo"

        <tr>

        <td bgcolor=EEEEEE><font face=verdana size=1>

        $marca</td>

        <td bgcolor=EEEEEE><font face=verdana size=1>

        <a href=ver.php?id=$id>$modelo</a></td>

        <td bgcolor=EEEEEE><font face=verdana size=1>

        $ano</td>

        <td bgcolor=EEEEEE><font face=verdana size=1>

        $uf

        </tr>";

}

    if ($total != "0") {

    if (($begin > 0) and ($begin <= 10)) {

        $anteriores = '<a href="classificados.php?begin=0"><b>Anteriores</b></a>';

    } elseif (($begin > 0) and ($begin > 10)) {

        $anteriores = '<a href="classificados.php?begin=' . ($begin-10) . '"><b>Anteriores</b></a>';

    } else {

        $anteriores = '<b>Anteriores</b>';

    }

    if (($begin < $total) and (($begin+10) >= $total)) {

        $proximas = '<b>Próximas</b>';

    } else {

        $proximas = '<a href="classificados.php?begin=' . ($begin+10) . '"><b>Próximas</b></a>';

    }

    echo $anteriores . " | " . $proximas;

}

echo "

</table>

<br><br><br><br>

<center><font face=verdana size=2>

<a href=anunciar.php>Incluir Novo Cadastro</a></center>

";

?>

não deu erro nenhum, porem esta sem link as palavras anterior e proximo.

Link para o comentário
Compartilhar em outros sites

  • 0

Mudei para 4 registros, porem ele não exibi os proximos 4 fica a mesma coisa na tela, mas o begin ele muda o numero em cima no bronwser so não exibi. o que pode ser?

<?

/* Este script foi desenvolvido por:

Tulio Ricardo P. Audujas

MSN: suporte@navegahost.com.br

icq: 179719912

site: www.navegahost.com.br

Por Favor mantenha os direitos autorais.

*/

echo"

<table width=500 cellspacing=1 cellpadding=2 align=center bgcolor=#BBBBBB>

<tr align=\"center\" valign=\"middle\">

<td bgcolor=#DDDDDD colspan=\"4\"><font face=verdana size=2><b>Lista de Anuncios</b></font></td>

</tr>

<tr>

<td bgcolor=#DDDDDD>

<b><font face=verdana size=1>Marca</td>

<td bgcolor=#DDDDDD>

<b><font face=verdana size=1>Modelo</td>

<td bgcolor=#DDDDDD>

<b><font face=verdana size=1>Ano</td>

<td bgcolor=#DDDDDD>

<b><font face=verdana size=1>UF</td>

</b>

</tr>

";

include "config.php";

$begin = @$_GET['begin'];

if (!$begin) { $begin = 0; }

$result = mysql_query ("SELECT * FROM dados ORDER BY marca ASC");

$total = mysql_num_rows($result);

"Total de registros: <b><? echo $total; ?></b><br />";

"Exibindo de <b><? echo $begin+1; ?></b> a <b><? echo $begin+4; ?></b>";

while ($row = mysql_fetch_array($result)){

$id = $row["id"];

$modelo = $row["modelo"];

$nome = $row["nome"];

$marca = $row["marca"];

$ano = $row["ano"];

$uf = $row["uf"];

        echo"

        <tr>

        <td bgcolor=EEEEEE><font face=verdana size=1>

        $marca</td>

        <td bgcolor=EEEEEE><font face=verdana size=1>

        <a href=ver.php?id=$id>$modelo</a></td>

        <td bgcolor=EEEEEE><font face=verdana size=1>

        $ano</td>

        <td bgcolor=EEEEEE><font face=verdana size=1>

        $uf

        </tr>";

}

    if ($total != "0") {

    if (($begin > 0) and ($begin <= 4)) {

        $anteriores = '<a href="classificados.php?begin=0"><b>Anteriores</b></a>';

    } elseif (($begin > 0) and ($begin > 4)) {

        $anteriores = '<a href="classificados.php?begin=' . ($begin-4) . '"><b>Anteriores</b></a>';

    } else {

        $anteriores = '<b>Anteriores</b>';

    }

    if (($begin < $total) and (($begin+4) >= $total)) {

        $proximas = '<b>Próximas</b>';

    } else {

        $proximas = '<a href="classificados.php?begin=' . ($begin+4) . '"><b>Próximas</b></a>';

    }

    echo $anteriores . " | " . $proximas;

}

echo "

</table>

<br><br><br><br>

<center><font face=verdana size=2>

<a href=anunciar.php>Incluir Novo Cadastro</a></center>

";

?>

Link para o comentário
Compartilhar em outros sites

  • 0

include "config.php";

$begin = @$_GET['begin'];

if (!$begin) { $begin = 0; }

$result = mysql_query ("SELECT * FROM dados ORDER BY marca ASC");

$total = mysql_num_rows($result);

"Total de registros: <b><? echo $total; ?></b><br />";

"Exibindo de <b><? echo $begin+1; ?></b> a <b><? echo $begin+10; ?></b>";

$result = mysql_query ("SELECT * FROM dados ORDER BY marca ASC LIMIT $begin, 10");

while ($row = mysql_fetch_array($result)){

Túlio, você apagou uma linha que tinha antes... no primeiro select, você conta todos os registros... no segundo, você pega só o necessário pra exibir na página atual.

Onde tá "10", é o número de resultados que serão exibidos por página.

Falou!

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,2k
×
×
  • Criar Novo...