PHP пейджинг l oop нет видимой ссылки - PullRequest
0 голосов
/ 10 июля 2020

Добрый вечер, пытаюсь создать систему подкачки для отображения определенного количества данных на странице. Все работает нормально, за исключением небольшой детали: нет видимой ссылки.

Чтобы быть более точным: у моего пользователя 9 статей на его личной странице. Учитывая, что я хочу иметь 4 статьи на странице, у меня должно быть всего 3 страницы (последняя содержит только 1 статью). Мои ссылки выглядят так: http://127.0.0.1/projet3/mesannonces.php?page=1

При ручном изменении страницы в URL-адресе (page = 2 ..) страница показывает, что именно должно отображаться. Итак, я попытался создать al oop для отображения ссылок вместо использования URL

     <?php  
     for($i=1;$i<=$pagesTotales;$i++)
     { echo '<a href="mesannonces.php?page='.$i.'">'.$i.'</a>' ; }

Этот l oop должен отображать 3 кликабельные ссылки, однако он показывает только 1. Интересно, что я могу делать неправильно, учитывая, что ручная установка URL-адреса на следующую страницу показывает правильную страницу.

Все работает нормально, за исключением того, что видна только ссылка на первую страницу, когда она должна отображаться ровно 3

Если вы Считайте это полезным, вот весь код страницы после удаления ненужных кодов:

<?php
session_start();

$mesannonces=$_SESSION['id'];

//tentative de connexion à la base de donnée 
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=espace_membre;charset=utf8', 'root', '');
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage()); //message d'erreur au cas où la connexion échoue
}

////////////////////////////////////PAGING SYSTEM/////////////////////////////////////

if(isset($_GET['page']) AND !empty($_GET['page']) AND $_GET['page']>0)
{
  $_GET['page']=intval($_GET['page']); //pour qu'on ne puisse pas passer autre chose que des chiffres dans l'URL 
  $pageCourante=$_GET['page'];
}
else
{
  $pageCourante=1; // si l'URL est incomplète, on est redirigé vers la première page 
}


$articleParPage=5; // choisir le nombre d'annonce d'articles par page 
$depart=($pageCourante-1)*$articleParPage ;

 $articleTotalSQL=$bdd->prepare('SELECT * FROM articles WHERE fk_membres_id= ? ORDER BY date_publication DESC LIMIT '.$depart.','.$articleParPage.' ');
 $articleTotalSQL->execute(array($mesannonces));
$articleTotal=$articleTotalSQL->rowCount();
$pagesTotales=ceil($articleTotal/$articleParPage);
//////////////////////////////////////////////////////////////////////////////////////////////
if(isset($_SESSION['id']))
{   echo "ok"; 

}
else
{
  //echo "lol";
  header('location:connexion.php');
} 
?>

<html>

<head>
    <title>Profil de <?php echo $_SESSION['pseudo']?></title>    
    <meta charset='utf-8'>
</head>


<body>
   <div align="center">
         <h3>Tes annonces TROKI</h3>
        <br/>
         <?php 
            if (isset($_SESSION['id'])) 
            {
             ?>
            <h3>les annonces de <?php echo $_SESSION['pseudo']?> </h3>
          pseudo = <?php echo $_SESSION['pseudo']?> <br/>
            
             <?php 
            }
           ?>
  </div>
 <div align="center">
   <ul>
    <?php while($a=$articleTotalSQL->fetch()) { ?>
  
    <!-- this loop shows the articles from the database, everything works fine here-->
    <li>
       <img src="miniature/<?=$a['id']?>.jpg" width=50> <!-- la miniature de l'annonce-->
      <a href="annonce.php?id=<?= $a['id']?>"><?=$a['titre_article']?> <?php echo $a['wilaya']?> <?php echo $a['type_article']?> </a> <a href="modifierannonce.php?edit=<?= $a['id']?> ">     modifier une annonce </a><a href="supprimerannonce.php?=<?= $a['id']?>">      supprimer</a></li>




    <?php } ?>  
   </ul>
 </div>
   <!-- pour changer de page-->
   <div align="center"> 
          <?php  
     for($i=1;$i<=$pagesTotales;$i++) //this loop only shows 1 link instead of 3 
     { 
       echo '<a href="mesannonces.php?page='.$i.'">'.$i.'</a>' ; 
     }
?>
 </div>
</body>
</html>

1 Ответ

0 голосов
/ 10 июля 2020

Расчет суммы вашей страницы неверен. Вы вычисляете на основе количества строк извлеченных , а не количества строк, которые совпали до применения LIMIT. Если вы LIMIT 5, то количество выбранных строк всегда будет меньше или равно 5, независимо от того, сколько строк находится в таблице.

Если вам нужно знать общее количество совпадений, которые у вас есть выполнить вторичный расчет с COUNT(*) и теми же ограничениями WHERE.

...