Pagination alphabétique

Résolu/Fermé
lesfullsetteursps1 - 11 nov. 2020 à 22:05
 lesfullsetteursps1 - 17 nov. 2020 à 20:34
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

jordane45 Messages postés 38262 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 octobre 2024 4 693
11 nov. 2020 à 22:27
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
lesfullsetteursps1
11 nov. 2020 à 23:05
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
jordane45 Messages postés 38262 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 octobre 2024 4 693
11 nov. 2020 à 23:10
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
lesfullsetteursps1
12 nov. 2020 à 16:58
J'ai lu, et relu le code, mais j'arrive pas a comprendre, comment ma variable peut s'appellais "page" ?
0
jordane45 Messages postés 38262 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 octobre 2024 4 693
12 nov. 2020 à 17:57
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
lesfullsetteursps1
12 nov. 2020 à 18:51
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
jordane45 Messages postés 38262 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 octobre 2024 4 693
12 nov. 2020 à 19:27
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lesfullsetteursps1
17 nov. 2020 à 20:34
Bonjour,

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