Ir para conteúdo

POWERED BY:

Arquivado

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

userFeliz

Problemas com Script de paginação

Recommended Posts

Olá.

 

 

Encontrei um script de paginição por um membro aqui do fórum mesmo :

 

http://forum.imasters.com.br/topic/192785-script-para-paginacao-bem-simples/

 

apliquei no meu caso, mas me acusa um erro :

 

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0, 5' at line 1

 

segue os códigos :

 

function getPosts() {	
	$numreg = 5; // Quantos registros por página vai ser mostrado
	if (!isset($pg)) {
		$pg = 0;
	}
	$inicial = $pg * $numreg; 


	$query = mysql_query("SELECT * FROM posts ORDER BY ID DESC $inicial, $numreg") or die(mysql_error());
	$sql_conta = mysql_query("SELECT * FROM posts") or die(mysql_error());
	$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação
	$query2 = mysql_query("SELECT Title FROM categories ") or die(mysql_error());
	$post2 = mysql_fetch_assoc($query2);
	

	
	while($post = mysql_fetch_assoc($query)) {
		echo " tinha um puta código aqui, acho que é desnecessário, rs ";	
	}
		include("paginacao.php");
	}

 

o arquivo paginacao.php, esta igual ao original

Compartilhar este post


Link para o post
Compartilhar em outros sites
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0, 5' at line 1

Te diz algo ?

 

Seu problema está aqui:

 

 

 

mysql_query("SELECT * FROM posts ORDER BY ID DESC $inicial, $numreg")

Não lhe falta algo aí ? tipo um LIMIT...

Compartilhar este post


Link para o post
Compartilhar em outros sites

é verdade, kkkkkk, passou por despercebido....

 

quando eu coloco o :

 

$pg = $_GET['pg'];

 

me volta um erro da sintaxe :

 

Notice: Undefined index: pg in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\Site final\includes\functions.php on line 5

Compartilhar este post


Link para o post
Compartilhar em outros sites

é verdade, kkkkkk, passou por despercebido....

 

quando eu coloco o :

 

$pg = $_GET['pg'];

 

me volta um erro da sintaxe :

 

Notice: Undefined index: pg in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\Site final\includes\functions.php on line 5

 

vc deve substituir desta forma

 

function getPosts() {	
	$numreg = 5; // Quantos registros por página vai ser mostrado
	if (!isset($_GET['pg'])) {
		$_GET['pg'] = 0;
	}
	$inicial = $_GET['pg'] * $numreg; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é necessário tudo isso, faça a verificação com isset e informe ao PHP de onde vem o valor da var $pg. Ficando assim:

 

 

function getPosts() {
    $numreg = 5; // Quantos registros por página vai ser mostrado

    $pg = (!isset($_GET['pg'])) ? (int)0 : $_GET['pg'];

    $inicial = $pg * $numreg;


    $query = mysql_query("SELECT * FROM posts ORDER BY ID DESC LIMIT $inicial, $numreg") or die(mysql_error());
    $sql_conta = mysql_query("SELECT * FROM posts") or die(mysql_error());
    $quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação
    $query2 = mysql_query("SELECT Title FROM categories ") or die(mysql_error());
    $post2 = mysql_fetch_assoc($query2);



    while($post = mysql_fetch_assoc($query)) {
        echo " tinha um #@?$%~ código aqui, acho que é desnecessário, rs ";
    }
        include("paginacao.php");
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora esta me dando o seguinte erro :

 

Notice: Undefined variable: PHP_SELF in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\Site final\includes\paginacao.php on line 14

Notice: Undefined variable: PHP_SELF in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\Site final\includes\paginacao.php on line 26



Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora esta me dando o seguinte erro :

 

Notice: Undefined variable: PHP_SELF in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\Site final\includes\paginacao.php on line 14

 

Notice: Undefined variable: PHP_SELF in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\Site final\includes\paginacao.php on line 26

 

 

 

posta o código do arquivo paginacao.php nas linhas 14 e 26.

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o código do arquivo paginacao.php nas linhas 14 e 26.

 

 

ai :
echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>";

echo " <a href=".$PHP_SELF."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";

 

 

 

 

 

o correto é: $_SERVER['PHP_SELF'];

 

Cara, eu mudei pra isso, mas o link fica assim no meu local host : http://127.0.0.1/my

 

e obvio, da error 404, antes quando tava apenas com $PHP_SELF, funcionava, porém ficava com aqueles erros na pagina....

Compartilhar este post


Link para o post
Compartilhar em outros sites

"O CORRETO" é isso aqui querido:

 

echo "<a href=".$_SERVER['PHP_SELF']."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>";

'PHP_SELF'

 

Conceito:

 

O nome do arquivo do script que está executando, relativa à raiz do documento. Por exemplo, $_SERVER['PHP_SELF'] em um script no endereço http://example.com/test.php/foo.bar seria /test.php/foo.bar. A constante __FILE__ contém o caminho completo e nome do atual arquivo (i.e. incluído). Se estiver rodando o PHP em linha de comando, esta variável contém o nome do script desde o PHP 4.3.0. Anteriormente ela não estava disponível.

 

:seta: http://www.php.net/manual/pt_BR/reserved.variables.server.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

substitui por

 

echo "<a href=".$_SERVER['PHP_SELF']."?pg=".($_GET['pg']-1) ."><b>« anterior</b></a>";

echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

substitui por

 



echo "<a href=".$_SERVER['PHP_SELF']."?pg=".($_GET['pg']-1) ."><b>« anterior</b></a>";

echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";

 

Não é necessário o uso do $_GET['pg'], uma vez que esta já sofreu verificação anterior e foi setada para $pg.

 

Foi exatamente isto que eu fiz, porém quando eu clico para ir para a próxima pagina, ele me manda para http://127.0.0.1/my

 

Amigo, dê uma estudada no link que te passei para que você entenda o efeito de PHP_SELF.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara posta todo o código da paginação e do seu arquivo onde vai a paginação (somente a parte do php) para ver se ha algo mais de errado.

function getPosts() {	
	    $numreg = 5; // Quantos registros por página vai ser mostrado

    $pg = (!isset($_GET['pg'])) ? (int)0 : $_GET['pg'];

    $inicial = $pg * $numreg;


	$query = mysql_query("SELECT * FROM posts ORDER BY ID DESC LIMIT $inicial, $numreg") or die(mysql_error());
	$sql_conta = mysql_query("SELECT * FROM posts") or die(mysql_error());
	$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação
	$query2 = mysql_query("SELECT Title FROM categories ") or die(mysql_error());
	$post2 = mysql_fetch_assoc($query2);
	

	
	while($post = mysql_fetch_assoc($query)) {
		echo "...";	
	}
		echo '<br /><br />';
		echo '<br /><br />';
		include("../paginacao.php");
	}

 

paginacao.php

<style type="text/css">
<!--
.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}
a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}
a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}
-->
</style>
<?php
	$quant_pg = ceil($quantreg/$numreg);
	$quant_pg++;
	
	// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
	if ( $pg > 0) { 
		echo "<a href=".$_SERVER['PHP_SELF']."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>";
	} else { 
		echo "<font color=#CCCCCC>« anterior</font>";
	}
	
	// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
	for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { 
		// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
		if ($pg == ($i_pg-1)) { 
			echo " <span class=pgoff>[$i_pg]</span> ";
		} else {
			$i_pg2 = $i_pg-1;
			echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";
		}
	}
	
	// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
	if (($pg+2) < $quant_pg) { 
		echo "<a href=".$_SERVER['PHP_SELF']."?pg=".($pg+1)." class=pg><b>próximo »</b></a>";
	} else { 
		echo "<font color=#CCCCCC>próximo »</font>";
	}
?>

 

----------------------

 

 

 

 

Não é necessário o uso do $_GET['pg'], uma vez que esta já sofreu verificação anterior e foi setada para $pg.

 

 

Amigo, dê uma estudada no link que te passei para que você entenda o efeito de PHP_SELF.

 

Eu li cara, até dei uma pesquisada a mais, e não cheguei a uma conclusão do por que esta acontecendo isto... eu sou novato no PHP ainda.

 

------

 

se eu colocar apenas o $_PHP_SELF, o script funciona normal... porém fica apresentando aqueles erros, não teria como eu apenas ocultar os erros ? caso eu não consiga resolver isto de oura forma...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então pronto, ao invés de : $_SERVER['PHP_SELF'] coloque o nome de sua página mesmo.

 

 

 

echo "<a href=index.php?pg=".($pg-1) ."class=pg><b>« anterior</b></a>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou :D

 

PORÉM(sim), ficou um " *\ " do lado.... Ficou exatamente assim :

 

*/ « anterior [1] 2 3 próximo »

 

​n sei por que... sera que eu concatenei errado ? segue o código :

 

	$quant_pg = ceil($quantreg/$numreg);
	$quant_pg++;
	
	// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
	if ( $pg > 0) { 
		echo "<a href=\"games.php?pg=".($pg-1) ."\"class=pg><b>« anterior</b></a>";
	} else { 
		echo "<font color=#CCCCCC>« anterior</font>";
	}
	
	// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
	for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { 
		// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
		if ($pg == ($i_pg-1)) { 
			echo " <span class=pgoff>[$i_pg]</span> ";
		} else {
			$i_pg2 = $i_pg-1;
			echo " <a href=\"games.php?pg=".$i_pg2."\" class=pg><b>$i_pg</b></a> ";
		}
	}
	
	// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
	if (($pg+2) < $quant_pg) { 
		echo "<a href=\"games.php?pg=".($pg+1)."\" class=pg><b>pr&oacuteximo »</b></a>";
	} else { 
		echo "<font color=#CCCCCC>pr&oacuteximo »</font>";
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK, questão de organização em seu código, vejamos:

 

 

 

 

$quant_pg = ceil($quantreg/$numreg);
$quant_pg++;

// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( $pg > 0) {
echo '<a href="games.php?pg='.($pg-1) .'" class="pg"><b>« anterior</b></a>';
} else {
echo '<font color="#CCCCCC">« anterior</font>';
}

// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=1;$i_pg<$quant_pg;$i_pg++) {
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if ($pg == ($i_pg-1)) {
echo ' <span class="pgoff">['.$i_pg.']</span> ';
} else {
$i_pg2 = $i_pg-1;
echo ' <a href="games.php?pg='.$i_pg2.' class="pg"><b>'.$i_pg.'</b></a> ';
}
}

// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if (($pg+2) < $quant_pg) {
echo '<a href="games.php?pg='.($pg+1).'" class="pg"><b>pr&oacuteximo »</b></a>';
} else {
echo '<font color="#CCCCCC">pr&oacuteximo »</font>';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito....

 

Outra duvida, eu tenho a parte que separa os posts por categorias... E eu coloquei este mesmo código, para o arquivo de categorias, porém não esta funcionando, esta bugando o ID das categorias....

 

Quando eu clico em determinada categoria, ele abre a pagina com os posts da categoria normal, o link fica lá categoria.php?id= ai o id da categoria... porém quando eu passo a pagina, ele já da erro na sintaxe, apontando para a linha que recupera o id das categorias.

 

segue os códigos :

 

categoria.php

    $numreg = 5; // Quantos registros por página vai ser mostrado

    $pg = (!isset($_GET['pg'])) ? (int)0 : $_GET['pg'];

    $inicial = $pg * $numreg;

 $id = $_GET['id']; // recupera o id das categorias


	$query = mysql_query("SELECT * FROM posts WHERE Category_ID = '$id' ORDER BY ID DESC LIMIT $inicial, $numreg "); 
	$sql_conta = mysql_query("SELECT * FROM posts") or die(mysql_error());
	$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação
	$query2 = mysql_query("SELECT Title FROM categories ") or die(mysql_error());
	$post2 = mysql_fetch_assoc($query2);
	while($post = mysql_fetch_assoc($query)) {
		echo "...";	
	}
	echo '<br /><br />';
	echo '<br /><br />';
	include("includes/paginacaoCat.php");

 

o arquivo paginacao.php, esta igual ao outro, porém feito para a pagina de categoria....

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.