Paging system not working - SERVER SIDE

1

This is my file called index.php:

<?php  

$maxlinks = 4;
$paginaAtual = (isset($_GET['paginaAtual'])) ? (int)$_GET['paginaAtual'] : 1;
$maximo = 5;
$inicio = (($maximo * $paginaAtual) - $maximo);

$publicacoesUN = DBRead('publicacao', "ORDER BY id DESC LIMIT $inicio, $maximo");

$post = empty($_GET['post']) ? '' : $_GET['post'];
$pagina = empty($_GET['p']) ? 'home' : $_GET['p'];

if ($post != '' || ($post == '' && $pagina != '')) {

    switch ($pagina):
    case 'home':
        $titulo = '';
        $shareTitulo = '';

        $descricao = '';
        $shareDescricao = '';

        $shareImg = '';
        $keywords = '';

        $ogUrl = '';
        $urlCanonico = '';
        break;

    case 'ultimasnoticias':
        $titulo = '';
        $shareTitulo = '';

        $descricao = '';
        $shareDescricao = '';

        $shareImg = '';
        $keywords = '';

        $ogUrl = '';
        $urlCanonico = '';
        break;

    default:
        $titulo = 'Home';
        $pagina = 'home';
    endswitch;

}

?>


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>

<nav>

    <ul>
        <li>
          <a href="?p=home">Página Inicial</a>
        </li>

        <li>
          <a href="?p=ultimasnoticias">Últimas Notícias</a>
        </li>
    </ul>

</nav>

    <?php
        if (empty($post)) {
        require_once 'page_' . $pagina . '.php';
        } else {
            require_once 'posts/' . $post . '.php';
        }
    ?>

</body>
</html>

This is my file called ultimasnoticias.php:

<div class="container my-3">

    <div class="row">

        <?php foreach ($publicacoesUN as $UN): ?>

           <div class="col-12 col-md-6 col-lg-3 mb-3 mb-md-3">

                <div class="card">

                    <div class="img-container">

                      <a href="index.php?post=<?php echo $UN['title']?>"><img src="<?php echo $UN['capa']?>" alt="<?php echo $UN['alt']?>" class="card-img-top" id="imgUNcover"></a>

                    </div>

                    <div class="card-body">

                      <a href="index.php?post=<?php echo $UN['title']?>" class="card-title cardTitleLink"><h1 class="cardTitleUN"><?php echo $UN['title']?></h1></a>

                      <p class="card-text text-muted"><?php echo $UN['text']?></p>

                      <a href="index.php?post=<?php echo $UN['title']?>" class="btn btn-outline-danger btn-sm">Continue Lendo</a>

                    </div>

                </div>

           </div>

       <?php endforeach; ?>

    </div>

</div>

<?php

  $pdo = new PDO('mysql:host=localhost;dbname=publicacoes', 'root', '');

  $seleciona_2 = $pdo->prepare("SELECT * FROM 'bn_publicacao'");
  $seleciona_2->execute();
  $total = $seleciona_2->rowCount();
  $total_paginas = ceil($total/$maximo);

  if($total > $maximo){

  echo '<a href="?paginaAtual=1">First page</a>';
  for ($i = $paginaAtual - $maxlinks; $i <= $paginaAtual -1; $i++) { 

    if ($i >= 1) {
      echo '<a href="?paginaAtual='.$i.'">'.$i.'</a>';
    }
  }
  echo '<span>'.$paginaAtual.'</span>';
  for ($i= $paginaAtual +1; $i <= $paginaAtual + $maxlinks; $i++) { 
    if ($i <= $total_paginas) {
      echo '<a href="?paginaAtual='.$i.'">'.$i.'</a>';
    }
  }
  echo '<a href="?paginaAtual='.$total_paginas.'">Last page</a>';

  }

?>

When I click the pagination links, 1, 2, 3, first page, last page .. etc, the link redirects me to the main page, which in this case is page_home.php.

If I put the script from the ultimasnoticias.php file inside the index.php file the pagination works perfectly. That is, for a static site this pagination would work, but my site is server side and it is not working, and I could not find a solution.

Does anyone know how to solve it?

    
asked by anonymous 10.09.2018 / 01:22

1 answer

2

Fera, I think it's missing the "p" querystring in paging links.

<?php

  $pdo = new PDO('mysql:host=localhost;dbname=publicacoes', 'root', '');

  $seleciona_2 = $pdo->prepare("SELECT * FROM 'bn_publicacao'");
  $seleciona_2->execute();
  $total = $seleciona_2->rowCount();
  $total_paginas = ceil($total/$maximo);

  if($total > $maximo){

  echo '<a href="?p=ultimasnoticias&paginaAtual=1">First page</a>';
  for ($i = $paginaAtual - $maxlinks; $i <= $paginaAtual -1; $i++) { 

    if ($i >= 1) {
      echo '<a href="?p=ultimasnoticias&paginaAtual='.$i.'">'.$i.'</a>';
    }
  }
  echo '<span>'.$paginaAtual.'</span>';
  for ($i= $paginaAtual +1; $i <= $paginaAtual + $maxlinks; $i++) { 
    if ($i <= $total_paginas) {
      echo '<a href="?p=ultimasnoticias&paginaAtual='.$i.'">'.$i.'</a>';
    }
  }
  echo '<a href="?p=ultimasnoticias&paginaAtual='.$total_paginas.'">Last page</a>';

  }

?>
    
10.09.2018 / 01:40