Bouton <Précédent> <Suivant> Pagination [Résolu] - PHP - Programmation
Marsh Posté le 28-07-2009 à 18:51:18
J'avais fait ca pour un site web. Tu peux t'en inspirer.
Ca affiche une barre du type :
<< < ... 5 6 7 8 ... > >> |
<? |
Marsh Posté le 28-07-2009 à 19:03:58
Houlala le gros bout de code
J'vais regarder ça et j'irais surement reposter pour d'éventuelles questions sur des trucs que je pige pas. Merci quand même
Marsh Posté le 28-07-2009 à 20:21:40
Je te l'ai simplifié un peu en virant les variables inutiles et en rassemblant toutes les variables au début.
Marsh Posté le 28-07-2009 à 21:31:14
tu peux caluler le nombre total d'entrer avec SQL_CALC_FOUND_ROWS
$result = $dbh->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM `reponses` ORDER BY `id` ASC LIMIT 0, 10" ); |
Marsh Posté le 28-07-2009 à 23:13:14
$Nmax = 15; // PARTIE 1 try {
$table = $dom->createElement('table');
if($page > 1){ |
Marsh Posté le 28-07-2009 à 23:31:57
Houla, y a plein de truc que je connais pas encore là dedans
Y a rien de plus simple pour faire ce que je veux ? Ou alors c'est moi qui suis ptète un bon gros noob... ce qui n'est pas à exclure
Marsh Posté le 28-07-2009 à 23:41:30
c'est simple la, meme si ca en a par l'air,
le probleme est qu'il faut beaucoup de condition comme te le montre le code de Pascal.
a l'affiche c'est simple, mais deriere ca l'est moins et encore la ca va, y'a 3 grandes partie
1 : connexion + requete
2 : affichage du tableau
3 : la pagination
apres moi j'utilise DomDocument pour generer plus facilement du HTML, mais c'est pas obligé.
Marsh Posté le 28-07-2009 à 23:58:32
1)La connexion + requête ça je l'ai fais
2) affichage je l'ai fais aussi
3) ben à moitié fait en fait
J'avais vu des mecs qui faisait des fonctions mais j'ai encore du mal avec ça et j'sais pas trop comment les intégrer donc...
J'vais essayer de voir son code et de bidouiller un truc
Marsh Posté le 29-07-2009 à 00:10:51
tien je t'ai fait le code en version un peu plus débutant,
<?php
if($page > 1){ |
Marsh Posté le 29-07-2009 à 01:29:53
Whoa c'est super sympa, merci beaucoup
J'vais étudier ça
$page = (int) @$_GET['page'] ? (int) @$_GET['page'] : 1; |
A quoi ça sert de mettre des (int) devant les variables ? C'est une protection ? ça fait penser au C. Le "?" je sais pas non plus à quoi il sert ni le ": 1" à la fin.
Sinon dans l'ensemble y a beaucoup de fonction que je connais pas et que je n'ai jamais utilisé
array_push (ok j'ai pigé en regardant la doc php)
SELECT SQL_CALC_FOUND_ROWS (ça équivaut pas à un COUNT ça ? ²)
sprintf avec les %d (ça me rappel le C ça )
Marsh Posté le 30-07-2009 à 11:03:41
Oui, ca marche aussi en C. C'est pour caster une variable. Ici on force une variable à être un int.
Marsh Posté le 30-07-2009 à 11:32:28
Le (int) permet en effet de s'assurer qu'on a bien un entier.
Sinon, la structure condition ? if : else est une expression qui renvoie if si la condition est remplie, else sinon.
Pour être plus clair ici si $_GET['page'] peut être cast en entier, ça le renvoie, et sinon ça renvoie 1.
Marsh Posté le 30-07-2009 à 11:54:42
ReplyMarsh Posté le 30-07-2009 à 12:01:36
Je crois comprendre que c'est au cas où l'utilisateur fait une connerie.
s'il demande la page liste.php?page=4 on lui donne la 4ème page.
par contre s'il demande la page liste.php?page=coucou, le script a des risques de planter lamentablement, car coucou n'est pas un entier.
C'est pour ça qu'on vérifie que page est bien un entier. Si ce n'est pas le cas, on le renvoie a la première page.
A confirmer...
Marsh Posté le 31-07-2009 à 13:08:58
Re
Bon en fait j'ai trouvé un script de pagination sur internet que j'ai réussi à adapter grâce à la tonne de commentaires qui m'a fait apprendre pas mal de ptits trucs.
Au fait, pour le coup du int, avec ce que j'avais écris tout marche bien et même si on écrit coucou rien ne plante.
if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p'] <= $nbpage) |
Merci de votre aide, j'aurai appris des trucs
Marsh Posté le 28-07-2009 à 17:39:11
Bonjour,
J'ai réussi à faire mon script de pagination qui fonctionne bien. Le problème c'est que depuis hier j'aimerai arriver à faire un bouton suivant et précédent et n'afficher que les 5 ou 10 pages courantes afin de pas me retrouver avec 300pages à afficher.
Edit: J'sais pas si j'ai bien expliqué alors j'fais un ptit dessin : <précédent>...5...6...7...8...<suivant>
Mon code:
<h3>Liste des utilisateur</h3>
<?php
include('../admin/modules/db.php');
$sql = "SELECT COUNT(id_util) AS nbutil FROM utilisateur";
$req = mysql_query($sql);
$data = mysql_fetch_assoc($req);
$nbutil = $data['nbutil'];
$parpage = 2;
$nbpage = ceil($nbutil/$parpage);
if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p'] <= $nbpage)
{
$cpage = $_GET['p'];
}
else
{
$cpage = 1;
}
$sql2 = mysql_query("SELECT nom_util,prenom_util,statut_util,mail
FROM utilisateur
ORDER BY id_util
ASC LIMIT ".(($cpage-1)*$parpage).",$parpage";);
?>
<table>
<tr>
<th>Nom</th>
<th>Prénom</th>
<th>Statut</th>
<th>E-mail</th>
</tr>
<?php
while ($data = mysql_fetch_array($sql2))
{
?>
<tr>
<td><?php echo $data['nom_util'];?></td>
<td><?php echo $data['prenom_util'];?></td>
<td><?php echo $data['statut_util'];?></td>
<td><?php echo $data['mail'];?></td>
</tr>
<?php
}
?>
</table>
<?php
for ($i=1;$i<=$nbpage;$i++)
{
if($i == $cpage)
{
echo "$i |";
}
else
{
echo "<a href="admin.php?m=liste_util&p=$i">$i</a> |";
}
}
?>
Donc j'aimerai dans la mesure du possible un début de piste pour pouvoir me débloquer.
Merci
Edit: J'ai regardé la page avec les scripts les plus demandés et j'ai bien regardé celui sur la pagination mais j'ai pas été inspiré
Message édité par Profil supprimé le 31-07-2009 à 12:50:40