codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
21 mai 2008 à 23:03
DarthKiller
Messages postés1Date d'inscriptiondimanche 24 décembre 2000StatutMembreDernière intervention15 octobre 2008
-
15 oct. 2008 à 14:35
Voila je crois que le titre résume plutot bien ! :)
J'ai un PDOStatement récupéré grace à un $PDO->Query et j'aimerai me rendre à la ligne x.
Comment faire ?
En effet, PDOStatement n'intègre pas un $PDOStatement->seek (x); (ce serait trop beau).
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 mai 2008 à 23:27
Mais si j'ai bien compris la doc, le troisieme parametre, c'est l'offset, donc la valeur du seek ?
Parce que là dans leur cas l'offset à deux valeurs possibles :
PDO::FETCH_ORI_ABS
PDO::FETCH_ORI_REL
Donc difficile d'aller à une ligne précise.
Aurais-je loupé quelque chose ?
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 22 mai 2008 à 07:26
salut
quand je vois un $iPage * $iStep, ca me fait penser a de la pagination.
tu ne peut pas faire ca avec un limit ?
ou avec un WHERE id BETWEEN .... AND ... ?
ca consommerait moins de ressources
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 22 mai 2008 à 10:01
J'y ai pensé, mais le between peux poser des soucis si une valeur à été supprimée (genre 1,2,3,5,6,7,...).
Pour ce qui est du limit, j'avais entendu dire que plus on s'approchait de la fin de la table, plus le traitement était long (car il parcours toute la table avant quand même).
Mais en effet, OUI, c'est pour faire de la pagination ! :)
Et ca me perturbe que PDO n'implémente pas un seek. Comment ils proposent une pagination dans ce cas ? Il faut faire une classe qui implémente un arrayIterator et faire un fetchAll dans cette classe ? ca me parait lourd aussi ! :/
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 22 mai 2008 à 12:42
Non, et j'ai essayé sans succès ce matin. De même que j'ai essayé l'exemple 2 de la doc php.net sur pdostatement::fetch(), sans succès non plus. C'est pourquoi je pense que le driver utilisé ne le permet pas (je n'ai pas dit qu'il en existait un lol, tu noteras : je n'en sais rien).
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 22 mai 2008 à 13:22
L'inconvénient de LIMIT, c'est que ce n'est pas du sql standard. Maintenant, si on n'utilise que mysql (ou les autres bdd l'utilisant, mais les syntaxes sont parfois différentes), pourquoi pas en effet, c'est optimisé.
DarthKiller
Messages postés1Date d'inscriptiondimanche 24 décembre 2000StatutMembreDernière intervention15 octobre 2008 15 oct. 2008 à 14:35
Bonjour à tous !
Il semblerait que tous les drivers PDO ne gèrent pas le seek(), et malheureusement celui de MySQL en fait partie. Un ami et moi-même envisageons comme solution possible de construire nous-même un itérateur à partir de l'interface SeekableIterator, et sur le net vous pourrez trouver les oeuvres d'autres codeurs étant partis de l'interface Iterator. Bon courage ! :D