userFeliz 1 Denunciar post Postado Abril 2, 2013 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
Alaerte Gabriel 662 Denunciar post Postado Abril 2, 2013 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
rockrgo 138 Denunciar post Postado Abril 2, 2013 Além de faltar o LIMIT como nosso amigo Alaerte disse, para esse script funcionar corretamente vc deve substituir a $pg por $_GET['pg']. Compartilhar este post Link para o post Compartilhar em outros sites
userFeliz 1 Denunciar post Postado Abril 2, 2013 é 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
rockrgo 138 Denunciar post Postado Abril 2, 2013 é 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
Alaerte Gabriel 662 Denunciar post Postado Abril 2, 2013 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
userFeliz 1 Denunciar post Postado Abril 3, 2013 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 14Notice: 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
rockrgo 138 Denunciar post Postado Abril 3, 2013 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
Alaerte Gabriel 662 Denunciar post Postado Abril 3, 2013 o correto é: $_SERVER['PHP_SELF']; Compartilhar este post Link para o post Compartilhar em outros sites
userFeliz 1 Denunciar post Postado Abril 3, 2013 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
Alaerte Gabriel 662 Denunciar post Postado Abril 3, 2013 "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
rockrgo 138 Denunciar post Postado Abril 3, 2013 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
userFeliz 1 Denunciar post Postado Abril 3, 2013 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 Compartilhar este post Link para o post Compartilhar em outros sites
rockrgo 138 Denunciar post Postado Abril 3, 2013 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. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 3, 2013 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
userFeliz 1 Denunciar post Postado Abril 4, 2013 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
Alaerte Gabriel 662 Denunciar post Postado Abril 4, 2013 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
userFeliz 1 Denunciar post Postado Abril 4, 2013 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óximo »</b></a>"; } else { echo "<font color=#CCCCCC>próximo »</font>"; } Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 4, 2013 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óximo »</b></a>'; } else { echo '<font color="#CCCCCC">próximo »</font>'; } Compartilhar este post Link para o post Compartilhar em outros sites
userFeliz 1 Denunciar post Postado Abril 5, 2013 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