Gustavuh 0 Denunciar post Postado Janeiro 19, 2016 Saudações. Estou com um pequeno problema, tenho uma página de postagens de um blog como index, e essa página sofre paginação (?pagina=). E quando coloco (propositalmente) "index.php?pagina=" na URL, ele me traz erro de banco "Erreur de syntaxe près de '-5, 5' à la ligne 1". Como faço isso? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 19, 2016 A sintaxe da sua SQL possui algum erro de sintaxe Mostre como está montando a consulta Compartilhar este post Link para o post Compartilhar em outros sites
Gustavuh 0 Denunciar post Postado Janeiro 19, 2016 Não, irmão! Ele ta dando esse erro pq a URL não tá tratada. E eu quero trata-la. Em vez de aparecer esse erro, quero jogar pra uma página Error404. Essa é minha ideia. Como faço isso? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Janeiro 20, 2016 O parâmetro 'pagina' deveria ser um valor inteiro, correto? $pagina = (int)$_GET[ 'pagina' ]; if ( !$pagina ) { //pagina inválida... } Compartilhar este post Link para o post Compartilhar em outros sites
Gustavuh 0 Denunciar post Postado Janeiro 20, 2016 Entendi, mas o que acontece é o seguinte. Fiz isso que vc falou e não deu certo! Eu to fazendo isso na index.php, então na hora que acessa(index.php), em vez de carregar as postagens do banco, tá indo direto pra pagina Error404.php. Como faço pra fazer essa validação após o carregamento da página? Ou quem sabe fazer essa validação a partir da paginação=2 em diante? Ou outra ideia pra fazer isso? Pq não posso mostrar esse erro pro usuario, caso ele tente mudar a URL! Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Janeiro 20, 2016 Tchê, sem ver o teu script só se gente adivinhar o que você está fazendo... Compartilhar este post Link para o post Compartilhar em outros sites
Gustavuh 0 Denunciar post Postado Janeiro 20, 2016 <?php $link = DBConnect(); $quantidade = 5; $pagina = (isset($_GET['pagina'])) ? (int)$_GET['pagina'] : 1; $inicio = ($quantidade * $pagina) - $quantidade; $query = @mysqli_query($link, "SELECT p.postagemID, p.titulo, p.conteudo, p.usuario, p.data, c.categoria FROM blog_postagem as p INNER JOIN blog_categoria as c ON p.categoriaID = c.categoriaID WHERE status = 1 ORDER BY data DESC LIMIT $inicio, $quantidade") or die (mysqli_error($link)); $totalquery = mysqli_num_rows($query); if ( !$query ) echo '<h2>Nenhuma postagem encontrada!</h2>'; else while($data = mysqli_fetch_array($query)){ ?> . . . <?php } $postagens = @mysqli_query($link, "SELECT * FROM blog_postagem") or die(mysqli_error($link)); $numTotal = @mysqli_num_rows($postagens); $totalPagina= ceil($numTotal/$quantidade); $anterior = (($pagina - 1) == 0) ? 1 : $pagina - 1; $posterior = (($pagina+1) >= $totalPagina) ? $totalPagina : $pagina+1; if($numTotal > 5){ if($pagina <= 1){ echo "<div style='text-align: right; color: #CC3300;'><a href='?pagina=$posterior' style='color: #CC3300; font-weight:bold;'>Próxima ></a></div>"; }elseif($pagina == $totalPagina){ echo "<div style='text-align: right; color: #CC3300;'><a href='?pagina=$anterior' style='color: #CC3300; font-weight:bold;'>< Anterior</a></div>"; }else{ echo "<div style='text-align: right; color: #CC3300;'><a href='?pagina=$anterior' style='color: #CC3300; font-weight:bold;'>< Anterior</a> | "; echo "<a href='?pagina=$posterior' style='color: #CC3300; font-weight:bold;'>Próxima ></a></div>"; } } DBClose($link); ?> Minha index.php Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Janeiro 20, 2016 Troque: $pagina = (isset($_GET['pagina'])) ? (int)$_GET['pagina'] : 1; Por: $pagina = ($_GET['pagina'] < '1' OR !ctype_digit($_GET['pagina']))?'1':(int)$_GET['pagina']; Compartilhar este post Link para o post Compartilhar em outros sites
Gustavuh 0 Denunciar post Postado Janeiro 20, 2016 Na hora que carrego a pagina index.php, da o seguinte erro "Undefined index: pagina". Quando mexo na URL e coloco index.php?pagina=1 não dá mais o erro. Como poderia consertar isso? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 22, 2016 É só usar isset(), como mostrado aqui Você precisa verificar se $_GET['pagina'] existe antes de fazer qualquer operação com esse valor. Compartilhar este post Link para o post Compartilhar em outros sites
Gustavuh 0 Denunciar post Postado Janeiro 22, 2016 Beraldo, eu acabei usando da seguinte forma: $pagina = (isset($_GET['pagina']) < '1' OR !ctype_digit($_GET['pagina']))?'1':(int)$_GET['pagina']; Funciona mas não é o que eu gostaria, pois se o usuario tentar colocar na URL, por exemplo "index.php?pagina=" ele encaminha pra primeira pagina. Penso que o usuario ficara meio perdido pois não mostra nenhuma mensagem. O desejavel por minha parte se ele alterasse a URL o site encaminhasse ele pra uma pagina ERROR404. Deixa assim, mas se tiver alguma ideia que possa usar, ficarei grato em saber. Por enquanto não marcarei o post como resolvido! Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 22, 2016 Eu faria mais simples. Troque essa linha inteira por algo assim: $pagina = isset($_GET['pagina']) ? (int) $_GET['pagina'] : 0; if ($pagina == 0) { // valor inválido } else { // mostra a página $pagina } O "(int)" força que seja inteiro. Se for 0, vazio ou uma string, ele força o valor a ser 0. Então o if verifica se é 0. Se for, mostra o "erro". Caso contrário, mostra a página Compartilhar este post Link para o post Compartilhar em outros sites