From de8894efc5cf127747810e09fd2b3316be4983bb Mon Sep 17 00:00:00 2001 From: Matthieu Marcillaud <marcimat@rezo.net> Date: Sun, 10 May 2009 21:13:37 +0000 Subject: [PATCH] =?UTF-8?q?-=20donner=20=C3=A0=20sqlite2=20des=20sql=5Fsee?= =?UTF-8?q?k()=20fonctionnels=20-=20donner=20=C3=A0=20sqlite3=20des=20sql?= =?UTF-8?q?=5Fseek()=20fonctionnels=20aussi,=20mais=20lui,=20c'est=20tr?= =?UTF-8?q?=C3=A8s=20tordu,=20une=20nouvelle=20fois=20=C3=A0=20cause=20des?= =?UTF-8?q?=20limitations=20de=20la=20classe=20PDO...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/req/sqlite_generique.php | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/ecrire/req/sqlite_generique.php b/ecrire/req/sqlite_generique.php index f5ca191ed0..10f9222756 100644 --- a/ecrire/req/sqlite_generique.php +++ b/ecrire/req/sqlite_generique.php @@ -621,18 +621,25 @@ function spip_sqlite_seek($r, $row_number, $serveur='',$requeter=true) { if ($r){ $link = _sqlite_link($serveur); if (_sqlite_is_version(3, $link)){ - if ($numrow==0) { - return $r->rewind(); - } else { - return $r->seek($numrow); + // encore un truc de bien fichu : PDO ne PEUT PAS faire de seek ou de rewind... + // je me demande si pour sqlite 3 il ne faudrait pas mieux utiliser + // les nouvelles fonctions sqlite3_xx (mais encore moins presentes...) + + // 1. on refait la requete = remise a zero + // 2. on boucle a n-1 d'ou on souhaite aller... + // (oui oui, c'est beau !) + $requete = new sqlite_traiter_requete($r->queryString, $serveur); + // pas besoin de traduire, ca a deja ete fait... + # $requete->traduire_requete(); // mysql -> sqlite + # if (!$requeter) return $requete->query; + $requete->executer_requete(); + while ($row_number--) { + $x = $r->fetch(); } + return true; } else { - if ($numrow==0) { - return sql_rewind($result); - } else { - return sql_seek($result, $numrow); - } + return sqlite_seek($r, $row_number); } } } @@ -1610,6 +1617,9 @@ class sqlite_traiter_requete{ if ($this->link){ if ($this->sqlite_version == 3) { $r = $this->link->query($this->query); + // sauvegarde de la requete (elle y est deja dans $r->queryString) + # $r->spipQueryString = $this->query; + // comptage : oblige de compter le nombre d'entrees retournees // par une requete SELECT // aucune autre solution ne donne le nombre attendu :( ! -- GitLab