[Résolu]PEAR : DB_Pager : Paginer une requete Mysql

PEAR : DB_Pager : Paginer une requete Mysql [Résolu] - PHP - Programmation

Marsh Posté le 09-04-2005 à 10:41:51    

Bonjour à tous,  
 
j'éssaye d'utiliser DB_Pager de PEAR mais la requete n'est pas paginé.  
Voici le code source du script :  

Code :
  1. require 'DB/Pager.php';
  2. $par_page = 2;
  3. $offset = intval($_GET['offset']);
  4.  
  5. $fiche = $dbh->query("SELECT id,titre,corp,date FROM blog ORDER by id" ); 
  6.  
  7. $fiche2 = new DB_Pager($fiche, $offset, $par_page);
  8. $donnees = $fiche2->build();
  9. while($fiche2 = $fiche->fetchRow()) {
  10.   print "<h2>".$fiche2[1]."</h2>".$fiche2[3]."<p>".$fiche2[2]."</p>";
  11.   }


 
La suite pour indiquer les pages restantes, etc... fonctionne bien. Mais à n'importe quel $offset, j'ai toute ma requete qui s'affiche et non, les deux premières.
 
Où est l'erreur ?  
Merci
 
EDIT : ortaugraf  :ange:


Message édité par yoyo354 le 10-04-2005 à 17:23:53

---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

Marsh Posté le 09-04-2005 à 10:41:51   

Reply

Marsh Posté le 09-04-2005 à 23:39:18    

Le petit up du samedi Soir :p


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

Marsh Posté le 10-04-2005 à 14:26:28    

Apparent, mon sujet n'attire pas les foules...
 
Pour info, mon script vien de "PHP en action" aux éditions O`Reilly.
 
J'ai fais quelques modifications qui me donne le même résultat :  

Code :
  1. require 'DB/Pager.php';
  2. $par_page = 1;
  3. $offset = intval($_GET['offset']);
  4. $fiche = $dbh->query("SELECT id,titre,corp,date FROM blog" ); 
  5. $fiche2 = new DB_Pager($fiche, $offset, $par_page);
  6. $donnees = $fiche2->build();
  7. while($fiche2 = $fiche->fetchRow()) {
  8. $date = strtr($fiche2[3],"-"," " );
  9.   print "<h2>".htmlentities($fiche2[1])."</h2>\n".htmlentities($date)."\n<p>".str_replace("%%", "<br />", htmlentities($fiche2[2]))."</p>\n";
  10.   }       
  11. // un lien vers la page précédente
  12. printf('<a href="blog-page-%s.html">&lt;&lt;Pr&eacute;c&eacute;dente</a>', $donnees['prev']);
  13. // un lien directs vers chaque page
  14. settype($donnees, 'array');
  15. foreach ($donnees['pages'] as $page => $debut) {
  16.   printf(' <a href="blog-page-%s.html">%s</a>|',$debut,$page);
  17. }   
  18. // un lien vers la page suivante  
  19. printf(' <a href="blog-page-%s.html">Suivante&gt;&gt;</a>',$donnees['next']);
  20. // Affche le nméro des enregistrements de la page courante
  21. printf("<br />(%d -%d de %d)", $donnees['from'],$donnees['to'],$donnees['numrows']);


 
Si vous avez des idées, je suis preneur.


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

Marsh Posté le 10-04-2005 à 17:00:25    

Comme apparement, DB_Pager ne vous inspire pas. Quel moyen propre et efficace existe t'il pour paginer simplement une requete mysql ?


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

Marsh Posté le 10-04-2005 à 17:25:50    

Merci pour votre aide  :kaola:  
 
J'ai finalment réussi ( du moin, je suis en bonne voie actuellement). Jevais quand même poster le code source qui pourrait servir :

Code :
  1. require 'DB/Pager.php';
  2. $par_page = 1;
  3. $offset = intval($_GET['offset']);
  4. $fiche = $dbh->query("SELECT id,titre,corp,date FROM blog ORDER BY id" ); 
  5. $pager = new DB_Pager($fiche, $offset, $par_page);
  6. $donnees = $pager->build();
  7. #settype($fiche2, 'array');
  8. while($v = $pager->fetchRow()) {
  9.   print "<h2>".htmlentities($v[1])."</h2>\n".htmlentities(strtr($v[3],"-"," " ))."\n<p>".str_replace("%%", "<br />", htmlentities($v[2]))."</p>\n";
  10.   }       
  11.  
  12. // un lien vers la page précédente
  13. printf('<a href="blog-page-%s.html">&lt;&lt;Pr&eacute;c&eacute;dente</a>', $donnees['prev']);
  14. // un lien directs vers chaque page
  15. settype($donnees, 'array');
  16. foreach ($donnees['pages'] as $page => $debut) {
  17.   printf(' <a href="blog-page-%s.html">%s</a>|',$debut,$page);
  18. }   
  19. // un lien vers la page suivante  
  20. printf(' <a href="blog-page-%s.html">Suivante&gt;&gt;</a>',$donnees['next']);
  21. // Affche le nméro des enregistrements de la page courante
  22. printf("<br />(%d -%d de %d)", $donnees['from'],$donnees['to'],$donnees['numrows']);


 


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed