Pagination alphabétique

Résolu
lesfullsetteursps1 -  
 lesfullsetteursps1 -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Pour comprendre... tu devrais déjà faire un
    var_dump($_GET);
    


    Au début de ton script ...

    Tu verras alors que le nom de ta variable c'est "page" et non pas "l"

    Et au passage, un peu de lecture histoire d'améliorer un peu l'écriture de ton code
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    0
  2. lesfullsetteursps1
     
    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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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
  3. lesfullsetteursps1
     
    J'ai lu, et relu le code, mais j'arrive pas a comprendre, comment ma variable peut s'appellais "page" ?
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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
  4. lesfullsetteursps1
     
    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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lesfullsetteursps1
     
    Bonjour,

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