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

(Resolvido) Problema paginação resultados


guirimst

Pergunta

Boa tarde pessoal, sou novo em PHP e estou com algumas duvidas neste codigo de paginação de resultados. Ele exibe os dois primeiros registros normalmente do banco, mas não esta sendo exibindo os outros registros, os links dos numeros da pagina não esta funcionando e esta aparecendo os seguintes erros:

Notice: Undefined variable: pagina in C:\xampp\htdocs\exemplos\paginacao\index2.php on line 12

if (!$pagina) {

$pagina = 1;

}

Notice: Undefined variable: PHP_SELF in C:\xampp\htdocs\exemplos\paginacao\index2.php on line 51

$next_link = "<a href=\"$PHP_SELF?pagina=$next\">Próxima</a>";

Notice: Undefined variable: PHP_SELF in C:\xampp\htdocs\exemplos\paginacao\index2.php on line 63

$painel .= " <a href=\"$PHP_SELF?pagina=$x\">[$x]</a>";

Notice: Undefined variable: PHP_SELF in C:\xampp\htdocs\exemplos\paginacao\index2.php on line 63

Notice: Undefined variable: PHP_SELF in C:\xampp\htdocs\exemplos\paginacao\index2.php on line 63

Anterior | [1] [2] [3] [4] | Próxima

<? 
// bloco 1 - conecte-se ao banco de dados
$con = mysql_pconnect('localhost','root',''); // host, usuário, senha
mysql_select_db('banco'); // banco de dados


// bloco 2 - defina o número de registros exibidos por página
$num_por_pagina = 2;

// bloco 3 - descubra o número da página que será exibida
// se o numero da página não for informado, definir como 1
if (!$pagina) {
   $pagina = 1;
}


// bloco 4 - construa uma cláusula SQL "SELECT" que nos retorne somente os registros desejados
// definir o número do primeiro registro da página. Faça a continha na calculadora que você entenderá minha fórmula.
$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;

// consulta apenas os registros da página em questão utilizando como auxílio a definição LIMIT. Ordene os registros pela quantidade de pontos, começando do maior para o menor DESC.
$consulta = "SELECT nome, senha, login FROM usuarios LIMIT $primeiro_registro, $num_por_pagina";
// executar query
$res = mysql_query($consulta,$con);


// bloco 5 - exiba os registros na tela
echo "<ul>"; while (list($nome, $login, $senha) = mysql_fetch_array($res)) {
echo "<li> $nome - $login - $senha";
}
echo "</ul>";


// bloco 6 - construa e exiba um painel de navegabilidade entre as páginas
$consulta = "SELECT COUNT(*) FROM usuarios";
list($total_usuarios) = mysql_fetch_array(mysql_query($consulta,$con));

$total_paginas = $total_usuarios/$num_por_pagina;

$prev = $pagina - 1;
$next = $pagina + 1;
// se página maior que 1 (um), então temos link para a página anterior
if ($pagina > 1) {
$prev_link = "<a href=\"$PHP_SELF?pagina=$prev\">Anterior</a>";
} else { // senão não há link para a página anterior
$prev_link = "Anterior";
}

// se número total de páginas for maior que a página corrente, então temos link para a próxima página
if ($total_paginas > $pagina) {
$next_link = "<a href=\"$PHP_SELF?pagina=$next\">Próxima</a>";
} else { // senão não há link para a próxima página
$next_link = "Próxima";
}

// vamos arredondar para o alto o número de páginas que serão necessárias para exibir todos os registros. Por exemplo, se temos 20 registros e mostramos 6 por página, nossa variável $total_paginas será igual a 20/6, que resultará em 3.33. Para exibir os 2 registros restantes dos 18 mostrados nas primeiras 3 páginas (0.33), será necessária a quarta página. Logo, sempre devemos arredondar uma fração de número real para um inteiro de cima e isto é feito com a função ceil().
$total_paginas = ceil($total_paginas);
$painel = "";
for ($x=1; $x<=$total_paginas; $x++) {
  if ($x==$pagina) { // se estivermos na página corrente, não exibir o link para visualização desta página
    $painel .= " [$x] ";
  } else {
    $painel .= " <a href=\"$PHP_SELF?pagina=$x\">[$x]</a>";
  }
}


// exibir painel na tela
echo "$prev_link | $painel | $next_link";
?>

Alguém poderia me ajudar?? Agradeço desde já

Editado por guirimst
Adicionar a tag [code]! *FIT*
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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