Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Utilisation de la méthode rewind() de jDbResultSet

Posted by axel34 on 07/15/2009 16:11

Bonjour,

J'ai une liste de jDbResultSet renvoyé par une methode select d'un DAO. Je veux afficher cette liste 2 fois dans un template. Or, dans l'affiche pour la seconde fois de la liste, l'enregistrement 0 n'est pas affiché. voici le code

 {while $row = $liste->fetch()}
    {$row->field}<br />
 {/while}
 
 {$liste->rewind()}
 
 {while $row = $liste->fetch()}
    {$row->field}<br />
 {/while}

En regardant le code de jDbResultSet et mysqlDbResultSet, la méthode rewind() fait un appel à la methode fetch() et indirectement à _fetch(). _fetch() fait un appel à mysql_fetch_object. Dans la doc PHP, mysql_fetch_object fait avancer un pointer interne sur l'élément suivant.

Est un bug ou une mauvaise utilisation de rewind() ?

  [Opened] Re: Utilisation de la méthode rewind() de jDbResultSet

Reply #1 Posted by laurentj on 07/15/2009 18:07

salut,

totale mauvaise utilisation de rewind avec fetch. rewind() fait parti de l'interface Iterator qu'implémente jDbResultSet. Il faut donc utiliser les méthodes de Iterator, ou pas du tout.

bon sinon, en utilisant un foreach normalement (qui lui, utilise comme il faut Iterator ;-) )...

   {foreach $liste as $row}
     {$row->field}<br />
   {/foreach}
   
   {$liste->rewind()}
   
   {foreach $liste as $row}
     {$row->field}<br />
   {/foreach}

  [Opened] [RESOLU] Utilisation de la méthode rewind() de jDbResultSet

Reply #2 Posted by axel34 on 07/16/2009 11:18

Merci pour la réponse, ca marche :-)

 
Page
  1. Re: Utilisation de la méthode rewind() de jDbResultSet