Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pagination alphanumerique

9 réponses
Avatar
ADB
Bonjour,
J'affiche une liste de publications, classées par ordre alphabétique et
à raison de 100 publications par page.
J'ai un petit bout de code qui me fait l'affichage del a pagination 1 2
3 ....
Je voudrais que cette pagination devienne alphanumérique, genre A1 A2 A3....
Mais je ne vois pas comment faire.
Il faut dsire que je débute un peu en php.
Le code:

<?
//source: http://www.phpcs.com/code.aspx?ID=24067
$nb_results_p_page = 100; // nombre de résultats par page
$nb_avant = 10; // nombre de page avant la page courante
$nb_apres = 10; // nombre de page après la page courante
$premiere = 1; // aficher le lien "première page" (1 ou 0)
$derniere = 0; // afficher le lien "dernière page" (1 ou 0)
$courant = empty($_GET['page']) ? 1 : $_GET['page']; // page
$start = ($courant - 1) * $nb_results_p_page; // start (requete mysql)

// comptage du nombre de lignes de la base
$id_result = mysql_query("SELECT count(id) FROM presse_temp WHERE
typeg!='2'");
if(!$id_result)
{
// redirection erreur
header("location: erreur.php");
exit;
}
$ret = mysql_fetch_array($id_result);
// nombre de lignes
$nb_results = $ret[0];

// exemple de requete
$id_result = mysql_query("SELECT * FROM presse_temp WHERE typeg!='2'
ORDER BY titre LIMIT $start, $nb_results_p_page");

// nombre total de pages
$nb_pages = ceil($nb_results / $nb_results_p_page);
// nombre de pages avant
$avant = $courant > ($nb_pages + 1) ? $nb_avant : $courant - 1;
// nombre de pages après
$apres = $courant <= $nb_pages ? $nb_pages - $courant : $nb_pages -
$courant;

// première page
if($premiere && $courant - $avant > 1)
echo '<a href="' . $_SERVER['SCRIPT_NAME'] .
'">Première</a>&nbsp;&nbsp;';

// page précédente
if($courant > 1)
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant
- 1) . '">Précédente</a>&nbsp;&nbsp;';

//$id_result0 = mysql_query("SELECT titre FROM presse_temp WHERE
typeg!='2' ORDER BY titre LIMIT $start");
//$row=mysql_fetch_array( $id_result0 );
//$ltr = strtoupper(substr($row[titre],0,1));

// affichage des numéros de page
for($i = $courant - $avant; $i <= $courant + $apres; $i++)
{
// page courante
if($i == $courant)
echo '<span style="color: #FF0000;">' . $i . '</span>&nbsp;&nbsp;';
else
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $i .
'">' . $i . '</a>&nbsp;&nbsp;';
}

// page suivante
if($courant < $nb_pages)
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant
+ 1) . '">Suivante</a>&nbsp;&nbsp;';

if($derniere && $courant + $apres < $nb_pages)
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $nb_pages
. '">Dernière</a>&nbsp;&nbsp;';
?>


Merci d'avance pour votre aide
ADB

--
Guide Méditerranée :
http://guidemediterranee.free.fr ou http://guidemediterranee.info

9 réponses

Avatar
Olivier Miakinen

J'affiche une liste de publications, classées par ordre alphabétique et
à raison de 100 publications par page.
J'ai un petit bout de code qui me fait l'affichage del a pagination 1 2
3 ....
Je voudrais que cette pagination devienne alphanumérique, genre A1 A2 A3....
Mais je ne vois pas comment faire.


Je vais peut-être écrire une connerie, mais si c'en est une alors c'est
que je n'ai pas compris ce que tu veux faire, et tu pourrais peut-être
expliquer davantage.

[...]

// page courante
if($i == $courant)
echo '<span style="color: #FF0000;">' . $i .
'</span>&nbsp;&nbsp;';
else
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $i .
'">' . $i . '</a>&nbsp;&nbsp;';


// page courante
if($i == $courant)
echo '<span style="color: #FF0000;">A' . $i .
'</span>&nbsp;&nbsp;';
else
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $i .
'">A' . $i . '</a>&nbsp;&nbsp;';

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
ADB
C pas vraiment une connerie :) En fait, tous les titres des
publications ne commencent pas par A. D'où le problème que je ne sais
pas résoudre.
Il y a 1875 publications, classées alpha.
Ce qu'il faudrait - mais je ne sais pas comment - c récupérer la 1re
lettre de la publication venant en 1, et la placer près du numéro de la
page ; puis la 1re lettre de la publication venant en 101 (puisque
j'affiche 100 publi par page html), et la placer près du numéro de la
page, etc.
Un peu comme la pagination que l'"on trouve sur les sites de listing de
cracks :)
Merci
ADB






Je vais peut-être écrire une connerie, mais si c'en est une alors c'est
que je n'ai pas compris ce que tu veux faire, et tu pourrais peut-être
expliquer davantage.


--

Guide Méditerranée :
http://guidemediterranee.free.fr ou http://guidemediterranee.info

Avatar
Olivier Miakinen

C pas vraiment une connerie :) En fait, tous les titres des
publications ne commencent pas par A. D'où le problème que je ne sais
pas résoudre.
Il y a 1875 publications, classées alpha.
Ce qu'il faudrait - mais je ne sais pas comment - c récupérer la 1re
lettre de la publication venant en 1, et la placer près du numéro de la
page ; [...]


Ok.

Je n'ai pas su deviner dans ton code où se trouvait ce que tu appelles
publication. Mettons que d'une manière ou d'une autre tu arrives à la
placer dans une variable $publication. Dans ce cas, la première lettre
que tu cherches sera substr($publication, 0, 1).
http://www.php.net/manual/fr/function.substr.php

Cordialement,
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
ADB
Je récupère la lettre cela par $ltr qui est $row[titre].
Le problème c d'avoir la lettre différente selon la page.
ADB



C pas vraiment une connerie :) En fait, tous les titres des
publications ne commencent pas par A. D'où le problème que je ne sais
pas résoudre.
Il y a 1875 publications, classées alpha.
Ce qu'il faudrait - mais je ne sais pas comment - c récupérer la 1re
lettre de la publication venant en 1, et la placer près du numéro de la
page ; [...]



Ok.

Je n'ai pas su deviner dans ton code où se trouvait ce que tu appelles
publication. Mettons que d'une manière ou d'une autre tu arrives à la
placer dans une variable $publication. Dans ce cas, la première lettre
que tu cherches sera substr($publication, 0, 1).
http://www.php.net/manual/fr/function.substr.php

Cordialement,



Avatar
Olivier Miakinen

Je récupère la lettre cela par $ltr qui est $row[titre].


C'est bien.

Le problème c d'avoir la lettre différente selon la page.


Et alors ? $ltr change selon la page, ou pas ? Si oui, il te suffit de
recommencer à chaque page, et sinon ton problème est insoluble.

Par ailleurs, merci d'éviter le langage SMS qui est difficile à lire et
ne facilite pas la compréhension de ton problème, et surtout essaye de
ne garder dans les citations que ce qui est utile.

Par exemple, après ta signature tu as cité tout ceci :



C pas vraiment une connerie :) En fait, tous les titres des
publications ne commencent pas par A. D'où le problème que je ne sais
pas résoudre.
Il y a 1875 publications, classées alpha.
Ce qu'il faudrait - mais je ne sais pas comment - c récupérer la 1re
lettre de la publication venant en 1, et la placer près du numéro de la
page ; [...]




... et aussi tout ça :

Ok.

Je n'ai pas su deviner dans ton code où se trouvait ce que tu appelles
publication. Mettons que d'une manière ou d'une autre tu arrives à la
placer dans une variable $publication. Dans ce cas, la première lettre
que tu cherches sera substr($publication, 0, 1).
http://www.php.net/manual/fr/function.substr.php



... sans compter la formule de politesse :

Cordialement,



Voir <http://www.giromini.org/usenet-fr/repondre.html>. Merci.

Cordialement,
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.



Avatar
ADB
Je ne sais pas si $ltr change selon la page. Ce que je sais, c'est que,
même si c'était le cas, il ne viendrait que sur la page courante.
Ce que je veux, c'est que cela s'applique aux pages suivantes et
précédentes, et en fonction de ce qu'il y a dans la page.
ADB

--
Guide Méditerranée :
http://guidemediterranee.free.fr ou http://guidemediterranee.info
Avatar
Olivier Miakinen

Je ne sais pas si $ltr change selon la page. Ce que je sais, c'est que,
même si c'était le cas, il ne viendrait que sur la page courante.
Ce que je veux, c'est que cela s'applique aux pages suivantes et
précédentes, et en fonction de ce qu'il y a dans la page.


Ça y est, j'ai compris !

Eh bien puisque apparemment l'information est dans ta base de données,
lorsque tu l'interroges pour obtenir la page $i, profites-en pour
demander aussi les pages $i-1 et $i+1 : tu ne les afficheras pas, mais
tu pourras en extraire l'initiale recherchée.

Une autre possibilité consisterait à rajouter deux champs dans ta base,
qui contiendront le nom de la page précédente et celui de la page suivante.


<HS>
Sinon, pour ce qui est de la citation, tu es passé d'un extrême (tout
citer) à l'autre (ne rien citer, même pas le nom de ton interlocuteur),
ce qui n'est guère mieux... La première chose à faire consiste à
demander à Thunderbird de « start the reply below the quote » (c'est
comme ça que ça s'appelle dans le Thunderbird anglophone que j'utilise),
puis tu n'auras plus qu'à sélectionner et couper les choses inutiles.
</>

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
ADB
[HS]
Faudrait savoir à s'accorder entre les différents forums ! :)
Pour certains, il faut la réponse avant la question, pour d'(autres,
comme toi, il faut la réponse après.
Et couper un peu - normalement le non intéressant - ou pas ; laisser
l'historique pour les nouveaux entrants, ou le supprimer pour les anciens...
[HS]





Ça y est, j'ai compris !

Eh bien puisque apparemment l'information est dans ta base de données,
lorsque tu l'interroges pour obtenir la page $i, profites-en pour
demander aussi les pages $i-1 et $i+1 : tu ne les afficheras pas, mais
tu pourras en extraire l'initiale recherchée.

La base s'enrichissant en permanence, ou presque, je ne peux pas figer

l'initiale dans un champ, à mon avis.
Quant à demander l'initiale des pages $i +1, etc., c'est le même pb. Il
faudrait que je demande les pages $i + n et $i - n, puis accoler cela à
la ligne d'affichage du numéro de page correspondant.
Je ne sais pas faire. Je vois très bien le principe, qui serait, à mon
sens, de demander l'initiale de l'enregistrement 1, 101, 201, 301, etc.
C'est la syntaxe de ce genre de requête qui m'échappe pour l'instant.
ADB

--
Guide Méditerranée :
http://guidemediterranee.free.fr ou http://guidemediterranee.info

Avatar
Olivier Miakinen
[HS]
Faudrait savoir à s'accorder entre les différents forums ! :)
Pour certains, il faut la réponse avant la question, pour d'(autres,
comme toi, il faut la réponse après.
Et couper un peu - normalement le non intéressant - ou pas ; laisser
l'historique pour les nouveaux entrants, ou le supprimer pour les anciens...


La page que je t'ai signalée est la copie (en couleurs) de la FAQ
« officielle » publiée régulièrement dans fr.usenet.reponses, qui est
donc valable pour tous les groupes de la hiérarchie francophone fr.* :
<http://groups.google.fr/group/fr.usenet.reponses/msg/38099ffb72f8a582>

D'autres hiérarchies (microsoft.* par exemple) peuvent avoir d'autres
usages. Quoi qu'il en soit, si tu veux discuter des usages dans fr.*,
n'hésite pas à participer à <news:fr.usenet.usages>.

[HS]




Eh bien puisque apparemment l'information est dans ta base de données,
lorsque tu l'interroges pour obtenir la page $i, profites-en pour
demander aussi les pages $i-1 et $i+1 : tu ne les afficheras pas, mais
tu pourras en extraire l'initiale recherchée.

La base s'enrichissant en permanence, ou presque, je ne peux pas figer

l'initiale dans un champ, à mon avis.
Quant à demander l'initiale des pages $i +1, etc., c'est le même pb. Il
faudrait que je demande les pages $i + n et $i - n, puis accoler cela à
la ligne d'affichage du numéro de page correspondant.
Je ne sais pas faire. Je vois très bien le principe, qui serait, à mon
sens, de demander l'initiale de l'enregistrement 1, 101, 201, 301, etc.
C'est la syntaxe de ce genre de requête qui m'échappe pour l'instant.


D'accord. Ton problème semble donc n'être pas vraiment lié à PHP.
Si tu cherches juste le « principe » comme tu le dis, c'est-à-dire un
algorithme, tu peux poser la question dans <news:fr.comp.algorithmes>.
Une fois l'algorithme trouvé, si tu cherches la syntaxe SQL exacte,
alors ce sera dans <news:fr.comp.applications.sgbd> que tu devrais
trouver ton bonheur.

Bonne chance !

Cordialement,
--
Olivier