Votre question

Limite de page

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
14 Octobre 2007 00:25:36

Bonjour,

Je voudrais savoir comment afficher une table sql sur une page php en faisant en sorte que une seule ligne de la page s'affiche et que les autres ligne de la table s'affiche en dessous de celle ci...

genre:

mysql_query('SELECT * FROM la_table ORDER BY id DESC LIMIT 0,1');

Donc ca affichera la dernière ligne ajouté. Comment afficher les ancienne sur une page différente?

J'èspère que j'ai été assez claire, j'arrive pas bien à expliquer. Merci d'avance

Autres pages sur : limite page

14 Octobre 2007 00:26:53

mysql_query('SELECT * FROM la_table ORDER BY id DESC LIMIT 1,10000');
14 Octobre 2007 00:42:47

C'est aussi simple que cela?
Contenus similaires
a c 232 L Programmation
14 Octobre 2007 11:25:36

Tu veux faire une pagination classique ?
Ou juste la première page qui contient 1 news (ou je sais pas ce que tu veux), et la 2ème page qui contient tout le reste ?
14 Octobre 2007 16:16:19

La dernière ajouter sur la première page les autres sur des autres pages (une par parge) et chaque fois en dessous le numéro de la page avec "précédente" "suivante".
a c 232 L Programmation
14 Octobre 2007 16:44:29

Bah c'est de la pagination classique quoi.
Tu regardes n'importe quel script de pagination il te donnera ce que tu veux, tu auras juste besoin de changer le nombre de réponses par page.

Ca reviendrait à une requête du type :
  1. mysql_query('SELECT * FROM la_table ORDER BY id DESC LIMIT '.($page-1).',1');
15 Octobre 2007 03:26:19

Le truc c'est que sur les script de pagination ils font casi 2 pages et je pige pas grand chose. Y'a pas un truc tout simple?
a c 232 L Programmation
15 Octobre 2007 10:23:53

Bah c'est simple...

1) Tu comptes le nombre d'éléments dans ta bdd, ce qui sera le nombre de pages que tu auras
2) tu passes un paramètre $_GET['page'] avec le numéro de la page que tu veux avoir. Si ce paramètre n'existe pas, tu mets $page = 0. Si ce paramètre est plus grand que le nombre de pages que tu as, tu le mets égal au nombre de pages que tu as.
3) tu fais le mysql_query() que je t'ai donné plus haut, avec la variable $_GET['page'], ce qui va te retourner le "$_GET['page']"ième élément (moins un, vu que ça commence à 0) de ta base.
4) les boutons suivants et précédents seront égaux à $_GET['page']+1 et $_GET['page']-1

C'est un algo tout con il me semble :) 
15 Octobre 2007 15:54:21

Oui je sais quand on connais on dirais que les autres son idiot de pas comprendre... :D 

  1. <?php
  2.  
  3. require ('../config.php');
  4. mysql_connect ("$host", "$bdd", "$pass");
  5. mysql_select_db ("$bdd");
  6.  
  7. $retour = mysql_query('SELECT * FROM kit_animaux ORDER BY id DESC LIMIT 0,1');
  8.  
  9. while ($donnees = mysql_fetch_array($retour))
  10. {
  11. echo '...';
  12. }
  13. mysql_close();
  14. ?>


Donc:

Citation :
1) Tu comptes le nombre d'éléments dans ta bdd, ce qui sera le nombre de pages que tu auras


  1. $row = mysql_num_rows($retour);


Citation :
2) tu passes un paramètre $_GET['page'] avec le numéro de la page que tu veux avoir. Si ce paramètre n'existe pas, tu mets $page = 0. Si ce paramètre est plus grand que le nombre de pages que tu as, tu le mets égal au nombre de pages que tu as.


  1. $_GET['page'] = $row;
  2. if ($page == 0) {
  3. echo "0";
  4. }
  5. else {
  6.  
  7. if ($row > &page) {
  8. echo $row;
  9. }
  10. else {


Citation :
3) tu fais le mysql_query() que je t'ai donné plus haut, avec la variable $_GET['page'], ce qui va te retourner le "$_GET['page']"ième élément (moins un, vu que ça commence à 0) de ta base.


  1. $retour = mysql_query('SELECT * FROM kit_animaux ORDER BY id DESC LIMIT '.($page-1).',1');


Citation :
4) les boutons suivants et précédents seront égaux à $_GET['page']+1 et $_GET['page']-1


  1. $suivant = $_GET['page']+1;
  2. $precedent = $_GET['page']-1;
  3.  
  4. echo "<a href=\"$suivant\">Page suivante</a>";


Bon dois avoir des méchante faute mais comme j'ai dis plus haut je suis pas expert! Merci de ton aide omar!
a c 232 L Programmation
15 Octobre 2007 21:37:22

Ok. Désolé de dire que ça me semble simple... mais bon, voilà... quand je vois que tu aides quand même quelques personnes, je trouve ça bizarre que tu ne fasses pas ça (pas pour te dénigrer hein, y'a des choses toutes connes que je ne sais pas faire...) j'ai appris récemment que tu pouvais utiliser { } dans une chaine de caractère pour délimiter une variable.

Exemple :
  1. <? $tab[1]['toto'] = 'tata';
  2. echo "ma variable : {$tab[1]['toto']}"; ?>


Bref, revenons en à nos moutons :D 
Sans tester, j'aurais dit quelque chose du genre :
  1. <?php
  2.  
  3. require ('../config.php');
  4. mysql_connect ("$host", "$bdd", "$pass");
  5. mysql_select_db ("$bdd");
  6.  
  7. $retour = mysql_query('SELECT * FROM kit_animaux ORDER BY id DESC'); // tu peux arranger la requête, on veut juste retourner le nombre d'éléments, pas besoin d'order by, et de select *
  8. $nb_elts = mysql_num_rows($retour); // on récupère le nombre d'éléments
  9.  
  10. if(isset($_GET['page']) && isnumeric($_GET['page']) && $_GET['page'] >= 1) { // on regarde si la variable get page est définie et si c'est un nombre supérieur à 1
  11. // si la valeur est supérieure à la valeur maximale (le nombre d'éléments retourné par la requête divisé par le nombre d'éléments par page (dans ton cas le nombre d'éléments par page est égal à 1, donc ça ne sert pas de le mettre, mais c'est un bout de l'algo si un jour tu veux passer à 2 par page, ou plus)) alors on met la valeur maximale, sinon la valeur passée en GET
  12. $page = ($_GET['page'] > ($nb_elts /1) ? $nb_elts : $_GET['page'];
  13. } else {
  14. $page = 1;
  15. }
  16.  
  17. // maintenant tu as le numéro de page que tu veux, donc tu récupères l'élément de cette page dans la base de données :
  18. $retour = mysql_query('SELECT * FROM kit_animaux ORDER BY id DESC LIMIT '.($page-1).', 1'); // on prend $page-1, comme ça, si le numéro de page est 1, on retourne 0, soit la première ligne, etc...
  19. $row = mysql_fetch_array($retour);
  20.  
  21. // tu as maintenant dans ta variable (de type array) $row toutes les données retournées (une ligne SQL quoi)
  22.  
  23.  
  24. mysql_close();
  25.  
  26. // tu peux afficher ta pagination après :
  27.  
  28. if($page > 1) {
  29. echo '<a href="?page='.$page-1.'">Page précédente</a>';
  30. }
  31.  
  32. if($nb_elts > $page) {
  33. echo '<a href="?page='.$page+1.'">Page suivante</a>';
  34. }
  35.  
  36. ?>


(désolé s'il manque une parenthèse ou un crochet ou que y'a une erreur, mais là j'ai que le bloc notes sous la main, c'est difficile pour se rendre compte)

Et ça devrait le faire théoriquement ^^
15 Octobre 2007 22:09:09

Merci :ange: 

Y'a un ptit problème avec cette ligne

  1. if(isset($_GET['page']) && isnumeric($_GET['page']) && $_GET['page'] >= 1)) {
  2.  
  3. $page = $_GET['page'] > ($nb_elts /1) ? $nb_elts:$_GET['page'];
  4. }
  5. else {
  6. $page = 1;
  7. }


Tu vois une faute?

$nb_elts car j'ai fais un echo et il m'affiche bien le nombr de ligne dans ma table.
a c 232 L Programmation
15 Octobre 2007 23:00:28

y'a pas une parenthèse en trop ? >= 1)) enlève une des deux.

Edit: doit y avoir une autre erreur, ça doit être ça :

  1. if(isset($_GET['page']) && isnumeric($_GET['page']) && $_GET['page'] >= 1) {
  2.  
  3. $page = ($_GET['page'] > ($nb_elts /1)) ? $nb_elts : $_GET['page'];
  4. }
  5. else {
  6. $page = 1;
  7. }
16 Octobre 2007 00:08:38

Plus de page blanche mais ma table s'affiche pas... :??: 

Je vois juste page suivante..
a c 232 L Programmation
16 Octobre 2007 10:24:00

Est-ce que tu as ajouter l'affichage de tes données ? Car je l'ai pas mis moi dans mon code...
T'as tout ce qu'il te faut dans la variable $row
16 Octobre 2007 12:30:20

Donc je fais un while ($row)


???
a c 232 L Programmation
16 Octobre 2007 18:50:35

Bah c'est du PHP, et $row est un array.

Donc, si par exemple dans ta base de données tu as 4 colonnes :
id / nom / toto / tata

Ca donnera :
$row['id'] / $row['nom'] / $row['toto'] / $row['tata']

Et tu utiliseras toutes les données.
a c 232 L Programmation
16 Octobre 2007 22:06:25

Y' apas quelque chose qui te choque dans l'URL ?
animaux.php?page=$page+1

Edit: même en entrant une valeur correcte, ça foire hmm...
Fais voir ton code final
16 Octobre 2007 23:16:16

Bah oui $page n'a pas de valeur...

  1. <?php
  2.  
  3. require ('../config.php');
  4. mysql_connect ("$host", "$bdd", "$pass");
  5. mysql_select_db ("$bdd");
  6.  
  7. $retour = mysql_query('SELECT * FROM kit_animaux');
  8.  
  9. $nb_elts = mysql_num_rows($retour);
  10.  
  11.  
  12. if(isset($_GET['page']) && isnumeric($_GET['page']) && $_GET['page'] >= 1) {
  13.  
  14. $page = ($_GET['page'] > ($nb_elts /1)) ? $nb_elts : $_GET['page'];
  15. }
  16. else {
  17. $page = 1;
  18. }
  19.  
  20.  
  21. $retour2 = mysql_query('SELECT * FROM kit_animaux ORDER BY id DESC LIMIT '.($page-1).', 1');
  22.  
  23. while ($donnees = mysql_fetch_array($retour2))
  24. {
  25. echo '...';
  26. }
  27. mysql_close();
  28.  
  29. if($page > 1) {
  30. echo '<a href="?page=$page-1">Page précédente</a>';
  31. }
  32.  
  33. if($nb_elts > $page) {
  34. echo '<a href="?page=$page+1">Page suivante</a>';
  35. }
  36.  
  37.  
  38. ?>
a c 232 L Programmation
16 Octobre 2007 23:32:00

c'est pas que $page n'a pas de valeur, c'est que $page devrait être interprété par PHP, or vu que tu n'as pas mis ce que j'avais mis pour précédent et suivant, (fallait peut-être ajouter des () pour que ça fonctionne), la variable n'est pas parsée.

Fais des echo de $page pour voir la valeur qu'elle a pris après le else { $page = 1; }
Affiche ta requête aussi, qu'on puisse voir où ça bug.
16 Octobre 2007 23:40:16

Quand je fais echo '$page';

Il m'affiche $page

  1. <?php
  2.  
  3. require ('../config.php');
  4. mysql_connect ("$host", "$bdd", "$pass");
  5. mysql_select_db ("$bdd");
  6.  
  7. $retour = mysql_query('SELECT * FROM kit_animaux');
  8.  
  9. $nb_elts = mysql_num_rows($retour);
  10.  
  11.  
  12. if(isset($_GET['page']) && isnumeric($_GET['page']) && $_GET['page'] >= 1) {
  13.  
  14. $page = ($_GET['page'] > ($nb_elts /1)) ? $nb_elts : $_GET['page'];
  15. }
  16. else {
  17. $page = 1;
  18.  
  19. }
  20.  
  21.  
  22. $retour2 = mysql_query('SELECT * FROM kit_animaux ORDER BY id DESC LIMIT '.($page-1).', 1');
  23.  
  24. while ($donnees = mysql_fetch_array($retour2))
  25. {
  26. echo '<table width="100%">
  27.  
  28. <tr>
  29. <td align="center" colspan="2"><h2>'.$donnees['titre'].'</h2></td>
  30. </tr>
  31. <tr>
  32. <td id="col1"><a href="'.$donnees['img'].'" target="_blank"><img src="'.$donnees['img'].'" width="150px" heigth="112px" alt="'.$donnees['titre'].'" /></a></td>
  33. <td id="col2">'.$donnees['description'].'<br />
  34. <span style="color: #0aaafd">Auteur</span>: '.$donnees['auteur'].'</td>
  35. </tr>
  36. <tr>
  37. <td align="center" colspan="2"><a href="../achat.php?id='.$donnees['id'].'" onclick="window.open(this.href, \'Commentaire\', \'height=500, width=600, top=100, left=100, toolbar=no, menubar=yes, location=no, resizable=no, scrollbars=yes, status=no\'); return false;"><img src="../images/achat.png" width="110px" height="30px" alt="Acheter" /></a></td>
  38. </tr>
  39. </table>
  40. </div>
  41. <div class="meta">
  42. <p class="date">Ajouté le '.$donnees['timestamp'].'</p>
  43. <p class="file"><a href="../comment/add_com.php?id='.$donnees['id'].'" onclick="window.open(this.href, \'Commentaire\', \'height=400, width=500, top=100, left=100, toolbar=no, menubar=yes, location=no, resizable=no, scrollbars=no, status=no\'); return false;">Posté un commentaire</a> | <a href="../comment/view_com.php?id='.$donnees['id'].'" onclick="window.open(this.href, \'Commentaire\', \'height=400, width=500, top=100, left=100, toolbar=no, menubar=yes, location=no, resizable=no, scrollbars=no, status=no\'); return false;">28 Commentaires</a></p>';
  44. }
  45.  
  46. mysql_close();
  47.  
  48. if($page > 1) {
  49. echo '<a href="?page=$page-1">Page précédente</a>';
  50. }
  51.  
  52. if($nb_elts > $page) {
  53. echo '<a href="?page=$page+1">Page suivante</a>';
  54. }
  55.  
  56. ?>
  57. </p>
a c 232 L Programmation
17 Octobre 2007 09:24:34

Bah c'est normal que quand tu fasses echo '$page' il te donne
$page, vu que les simples quotes ne parsent pas les variables...
Il faut faire echo $page ou encore echo "$page"...
17 Octobre 2007 16:24:07

echo $page; m'affiche 1
a c 232 L Programmation
17 Octobre 2007 17:33:23

Ouais, normal.
Et quand tu passes "page" en argument, faudrait voir quelle valeur ça prend, car ça bug.
ça affiche plus rien
17 Octobre 2007 18:19:04

Bon bah je crois que je vais devoir créer une page pour chaque entrée... :( 
a c 232 L Programmation
18 Octobre 2007 00:04:29

Bah non pas la peine ! :o 
Affiche la valeur de $page une fois qu'il est traité par
  1. # if(isset($_GET['page']) && isnumeric($_GET['page']) && $_GET['page'] >= 1) {
  2. #
  3. # $page = ($_GET['page'] > ($nb_elts /1)) ? $nb_elts : $_GET['page'];


qu'on puisse voir la valeur qu'il prend en fonction du paramètre $_GET['page']. C'est bizarre qu'il ne fonctionne pas !
18 Octobre 2007 00:15:31

Il n'affiche rien...
a c 232 L Programmation
18 Octobre 2007 10:21:01

il faut que tu passes le paramètre page dans l'URL.
tonsite.com?page=1 par exemple
a c 232 L Programmation
18 Octobre 2007 18:12:53

Oui j'avais remarqué.
Quelle est la valeur de $page dans ce cas là ? C'est bizarre que ça ne fonctionne pas...
18 Octobre 2007 18:22:22

Valeur de page => rien
a c 232 L Programmation
18 Octobre 2007 18:27:57

bizarre... :( 
je comprend pas...
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS