Pagination alphabétique [Résolu]

Signaler
-
 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

Messages postés
30327
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 novembre 2020
3 024
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://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code



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 ?
Messages postés
30327
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 novembre 2020
3 024
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']

J'ai lu, et relu le code, mais j'arrive pas a comprendre, comment ma variable peut s'appellais "page" ?
Messages postés
30327
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 novembre 2020
3 024
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...

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 :(
Messages postés
30327
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 novembre 2020
3 024
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....

Bonjour,

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