diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php
index e5612f7428d68803752c27a08c0eaf056866e3ab..dc3a8c2594e3f94ce6450b48e38208f726d81ed8 100644
--- a/ecrire/base/abstract_sql.php
+++ b/ecrire/base/abstract_sql.php
@@ -126,6 +126,11 @@ function sql_fetch_all($res, $serveur='', $option=true){
 	return $rows;
 }
 
+function sql_seek($res, $row_number, $serveur='', $option=true) {
+	$f = sql_serveur('seek', $serveur,  $option==='continue' OR $option===false);
+	if (!is_string($f) OR !$f) return false;
+	return $f($res, $row_number, $serveur, $option!==false);
+}
 
 // http://doc.spip.org/@sql_listdbs
 function sql_listdbs($serveur='', $option=true) {
diff --git a/ecrire/req/mysql.php b/ecrire/req/mysql.php
index fd6992187d1172a22d039259b02c7481f243e718..1a75d6ddcf19b5f87fa664bc6184a89ea52193f3 100644
--- a/ecrire/req/mysql.php
+++ b/ecrire/req/mysql.php
@@ -55,6 +55,7 @@ $GLOBALS['spip_mysql_functions_1'] = array(
 		'error' => 'spip_mysql_error',
 		'explain' => 'spip_mysql_explain',
 		'fetch' => 'spip_mysql_fetch',
+		'seek' => 'spip_mysql_seek',
 		'free' => 'spip_mysql_free',
 		'hex' => 'spip_mysql_hex',
 		'in' => 'spip_mysql_in', 
@@ -486,6 +487,10 @@ function spip_mysql_fetch($r, $t='', $serveur='',$requeter=true) {
 	if ($r) return mysql_fetch_array($r, $t);
 }
 
+function spip_mysql_seek($r, $row_number, $serveur='',$requeter=true) {
+	if ($r) return mysql_data_seek($r,$row_number);
+}
+
 
 // http://doc.spip.org/@spip_mysql_countsel
 function spip_mysql_countsel($from = array(), $where = array(),
diff --git a/ecrire/req/pg.php b/ecrire/req/pg.php
index 9f287e717d9d361cc5d274424861b9f7011d74a3..a6e7cc3405d6f15f8b4a1720422d7573c27b411e 100644
--- a/ecrire/req/pg.php
+++ b/ecrire/req/pg.php
@@ -80,6 +80,7 @@ $GLOBALS['spip_pg_functions_1'] = array(
 		'error' => 'spip_pg_error',
 		'explain' => 'spip_pg_explain',
 		'fetch' => 'spip_pg_fetch',
+		'seek' => 'spip_pg_seek',
 		'free' => 'spip_pg_free',
 		'hex' => 'spip_pg_hex',
 		'in' => 'spip_pg_in',
@@ -451,7 +452,7 @@ function spip_pg_select($select, $from, $where='',
 	  . (!$limit ? '' : (" LIMIT $count" . (!$offset ? '' : " OFFSET $offset")));
 
 	// Erreur ? C'est du debug, ou une erreur du serveur
-	// il faudrait mettre ici le déclenchement du message SQL
+	// il faudrait mettre ici le d�clenchement du message SQL
 	// actuellement dans erreur_requete_boucle
 
 	if ($requeter && $GLOBALS['var_mode'] == 'debug') {
@@ -705,6 +706,11 @@ function spip_pg_fetch($res, $t='', $serveur='',$requeter=true) {
 	return $res;
 }
 
+function spip_pg_seek($r, $row_number, $serveur='',$requeter=true) {
+	if ($r) return pg_result_seek($r,$row_number);
+}
+
+
 // http://doc.spip.org/@spip_pg_countsel
 function spip_pg_countsel($from = array(), $where = array(), $groupby=array(),
 			  $having = array(), $serveur='',$requeter=true) 
@@ -724,7 +730,7 @@ function spip_pg_count($res, $serveur='',$requeter=true) {
   
 // http://doc.spip.org/@spip_pg_free
 function spip_pg_free($res, $serveur='',$requeter=true) {
-  // rien à faire en postgres
+  // rien � faire en postgres
 }
 
 // http://doc.spip.org/@spip_pg_delete
diff --git a/ecrire/req/sqlite_generique.php b/ecrire/req/sqlite_generique.php
index 53b9b5af757f0ce1f8b140033d80126487b7a481..f5ca191ed0f0cd7e37a9d5aaf3b86b79980af9d8 100644
--- a/ecrire/req/sqlite_generique.php
+++ b/ecrire/req/sqlite_generique.php
@@ -617,6 +617,27 @@ function spip_sqlite_fetch($r, $t='', $serveur='',$requeter=true) {
 }
 
 
+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);
+			}
+		}
+		else {
+			if ($numrow==0) {
+				return sql_rewind($result);
+			} else {
+				return sql_seek($result, $numrow);
+			}
+		}
+	}
+}
+
+
 // http://doc.spip.org/@spip_sqlite_free
 function spip_sqlite_free(&$r, $serveur='',$requeter=true) {
 	unset($r);
@@ -1363,6 +1384,7 @@ function _sqlite_ref_fonctions(){
 		'error' => 'spip_sqlite_error',
 		'explain' => 'spip_sqlite_explain',
 		'fetch' => 'spip_sqlite_fetch',
+		'seek' => 'spip_sqlite_seek',
 		'free' => 'spip_sqlite_free',
 		'hex' => 'spip_sqlite_hex',
 		'in' => 'spip_sqlite_in',