Pagination alphabétique

Résolu
Bonjour,

J'essaye de faire une pagination alphabétique, affichage de l'alphabet en haut de ma page, et quand on clique sur une lettre, seul les enregistrement de ma table voulu commençant par la lettre séléctionner s'affiche.

Je suis perdu dans mon code, il m'affiche toujours la totalité de ma table.

Qu'est ce que j'ai pus oublier ?

<?php
 
$bdd = new PDO ("mysql:host=localhost;dbname=bd", "root", "");
// on crée un array contenant l'alphabet et un 0-9
$list = range('A', 'Z');
array_unshift($list, '0-9');
 
// Si $_GET['l'] existe et qu'il se trouve dans l'array
if(isset($_GET['l']) AND in_array($_GET['l'], $list)){
 if($_GET['l'] == '0-9') /* si $_GET['l'] est égale à: 0-9 on fera un REGEX */
  $where = "ma_colonne REGEXP '^[0-9]'";
 else /* sinon on selectionnera les premiere lettres commençant par le $_GET */
  $where = "LEFT(ma_colonne, 1)='".$_GET['l']."'";
}
// sinon pas de $_GET ou n'est pas dans l'array
else
 $where = 1; // on seletionne tout
 
 
// on fait une boucle pour afficher les liens
foreach($list as $l){
 if(isset($_GET['l']) AND $_GET['l'] == $l)
  echo '<a href="index.php?page='.$l.'" style="font-weight: bold; color: #FF0000;">'.$l.'</a> ';
 else
  echo '<a href="index.php?page='.$l.'">'.$l.'</a> ';
}
 
 
 
$requete = $bdd->query('SELECT * FROM ma_table WHERE '.$where.'  ORDER BY titre ASC');
while($resultat = $requete->fetch())
{
}
 
 
?>


Merci d'avance de votre aide

Configuration: Windows / Firefox 81.0

5 réponses

  1. En faisant un
    var_dump ($_GET);


    J'obtiens ceci :

    array(1) { ["page"]=> string(1) "H" }

    donc il reconnais bien la lettre H présente dans, l'url du navigateur, donc pourquoi cela n'affiche pas que les entrée commençant par la lettre H ?
    0
    1. Modérateur
      Visiblement... tu n'as pas bien lu ce que je t'ai marqué....

      Toi.. tu essaies de récupérer le contenu de la variable
      $_GET['l']
      

      Sauf que ta variable... elle ne s'appelle pas "l" ... mais "page"
      $_GET['page']
      
      0
  2. J'ai lu, et relu le code, mais j'arrive pas a comprendre, comment ma variable peut s'appellais "page" ?
    0
    1. Modérateur
      Ben... par ce que c'est le nom que tu as donné à ta variable dans l'url qui te permet de changer de page
      echo '<a href="index.php?page='.$l.'" style="font-weight: bold; color: #FF0000;">'.$l.'</a> ';
      

      Tu crois que le ?page= qui se trouve dans l'url il sert à quoi ??

      Et puis, tu vois bien que dans ton var_dump .. c'est bien la variable page qui est présente...
      Donc.. c'est bien cette variable qu'il faut utiliser...
      Je ne vois pas ce que tu cherches à comprendre d'autre...
      0
  3. Je vois pas du tout ou l'utiliser cette variable ? dans mon url ?

    C'est pourtant ce que je fais :
    http://127.0.0.1/mon_site/page.php?page=0-9

    Je suis complètement larguer :(
    0
    1. Modérateur
      oh purée....

      Tu as , dans ton code
      ici =>
      if(isset($_GET['l']) AND in_array($_GET['l'], $list)){
       if($_GET['l'] == '0-9') /* si $_GET['l'] est égale à: 0-9 on fera un REGEX */
        $where = "ma_colonne REGEXP '^[0-9]'";
       else /* sinon on selectionnera les premiere lettres commençant par le $_GET */
        $where = "LEFT(ma_colonne, 1)='".$_GET['l']."'";
      }
      

      ecrit à plusieurs endroits:
      $_GET['l']
      

      au lieu de
      $_GET['page']
      


      .... il suffit donc de modifier ces quelques lignes de code pour utiliser la bonne variable...
      ce n'est pourtant pas compliqué à comprendre....
      0
  4. Bonjour,

    Super, j'ai réussi a trouver les variables.
    Vraiment merci pour ton aide, et surtout merci de ta patience :)
    0