Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tarlix

[Resolvido] Erro ao pegar index da pagina

Recommended Posts

Bom dia, estou começando agora em php e estou tentando fazer uma paginação, eu até consegui, mas a primeira pagina acontece o seguinte erro: Notice: Undefined index: p in C:\Arquivos de programas\EasyPHP-5.3.8.0\www\Teste\index.php on line 35

 

Esse erro só acontece quando eu abro a pagina e mesmo assim ele puxa os dados do banco perfeitamente e com a formatação que eu pedi, mas depois de clicar no link "primeira pagina ou ultima pagina" a pagina carrega certinho e some o erro.

 

Alguem poderia me auxiliar em como corrigir e por que aparece esse erro?

 

Segue o codigo:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       <title>CompanyName - PageName</title>
       <meta http-equiv="Content-Language" content="en-us" />

       <meta http-equiv="imagetoolbar" content="no" />
       <meta name="MSSmartTagsPreventParsing" content="true" />

       <meta name="description" content="Description" />
       <meta name="keywords" content="Keywords" />
       <meta name="author" content="Enlighten Designs" />

       <style type="text/css" media="all">@import "master.css";</style>
</head>

<body bgcolor="#000000">

       <div id="page-container">


    <div id="content">

 <?php // Selecionar servidor 

$conectar = mysql_connect("localhost", "root", "") or die ("Erro ao logar no BD"); 

// Selecionar BD 
mysql_select_db("Ujoke", $conectar); 

// Pegar a página atual por 


$p = $_GET['p'];   [b]O ERRO OCORRE NESSA LINHA[/b]


// Verifica se a variável tá declarada, senão deixa na primeira página como padrão 
if(isset($p)) { $p = $p; } else { $p = 1; } 
// Defina aqui a quantidade máxima de registros por página. 
$qnt = 5; 

// O sistema calcula o início da seleção calculando:  // (página atual * quantidade por página) - quantidade por página 
$inicio = ($p*$qnt) - $qnt; 

// Seleciona no banco de dados com o LIMIT indicado pelos números acima 
$sql_select = "SELECT * FROM posts where tipo='noticia' LIMIT $inicio, $qnt"; 

// Executa o Query 

$sql_query = mysql_query($sql_select);  

// Cria um while para pegar as informações do BD 

while($array = mysql_fetch_array($sql_query)) { 

// Variável para capturar o campo 'nome' no banco de dados 
$titulo = $array["titulo"]; 
$descricao = $array["descricao"];
$usuario = $array["user"]; 
$data = $array["data"];

// Exibe o nome que está no BD e pula uma linha 

echo "<h1 align='center'> ".$titulo."</h1><p><b>".$descricao."</b>   <p>postado por: ".$usuario."   ".$data."<br /> "; }  // Depois que selecionou todos os nome, pula uma linha para exibir os links(próxima, última...) 
echo "<br />";  // Faz uma nova seleção no banco de dados, desta vez sem LIMIT,  // para pegarmos o número total de registros 

$sql_select_all = "SELECT * FROM posts where tipo = 'noticia'"; 
// Executa o query da seleção acimas 
$sql_query_all = mysql_query($sql_select_all); 

// Gera uma variável com o número total de registros no banco de dados 

$total_registros = mysql_num_rows($sql_query_all); 

// Gera outra variável, desta vez com o número de páginas que será precisa.  
// O comando ceil() arredonda 'para cima' o valor 

$pags = ceil($total_registros/$qnt); 


// Número máximos de botões de paginação 
$max_links = 3; 

// Exibe o primeiro link 'primeira página', que não entra na contagem acima(3) 

echo "<a href='index.php?p=1' target='_self'>primeira pagina</a>"; 

// Cria um for() para exibir os 3 links antes da páginaaa atual 

for($i = $p-$max_links; $i <= $p-1; $i++) { 
// Se o número da página for menor ou igual a zero, não faz nada // (afinal, não existe página 0, -1, -2..) 

if($i <=0) { //faz nada 
// Se estiver tudo OK, cria o link para outra página 
} else { echo "<a href='index.php?p=".$i."' target='_self'>".$i."</a> "; } } 

// Exibe a página atual, sem link, apenas o número 


echo $p." "; 

// Cria outro for(), desta vez para exibir 3 links após a página atual 

for($i = $p+1; $i <= $p+$max_links; $i++) {
// Verifica se a página atual é maior do que a última página. Se for, não faz nada. 
if($i > $pags) { 
//faz nada 
} 
// Se tiver tudo Ok gera os links. 
else { echo "<a href='index.php?p=".$i."' target='_self'>".$i."</a> "; } } 

// Exibe o link "última página" 
echo "<a href='index.php?p=".$pags."' target='_self'>ultima pagina</a> "; ?> 

    </div>



</div>
</body>
</html>

 

 

 

Desde já, obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

$p = $_GET['p'];   [b]O ERRO OCORRE NESSA LINHA[/b]

// Verifica se a variável tá declarada, senão deixa na primeira página como padrão 
if(isset($p)) { $p = $p; } else { $p = 1; } 

 

@tarlix,

 

No fragmento destacado você faz:

 

1. Define a variável $p com o conteúdo de $_GET['p'].

2. Verifica se $p foi definido.

 

Agora veja só:

 

define $p

 

se $p estiver definido {

...

} senao {

...

}

 

Como $p foi definido, a verificação será sempre verdadeira.

 

O problema é que você está utilizando $_GET['p'] sem verificar se ele foi passado e, é justamente ai o erro no seu código.

 

Corrija para:

 

if ( isset( $_GET[ 'p' ] ) ) {
$p = (int) $_GET[ 'p'];

if ( $p < 1 ) {
   	$p = 1;
}
} else {
$p = 1;
}

 

Não vi o restante do seu código, mas faça essa modificação e verifique se está ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po, é isso mesmo!!! valeu cara, funcionou perfeitamente...

Voce poderia me explicar melhor sobre esse _Get? o 'p' seria a variavel que eu criei? por exemplo, se fosse $a seria:

 

$a = (int) $_GET['a'];

 

?

Só mais uma coisa... o que significa esse "isset"?

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.