예제 #1
0
function sqlite_data_seek($result, $numrow)
{
    if ($numrow == 0) {
        return sql_rewind($result);
    } else {
        return sql_seek($result, $numrow);
    }
}
예제 #2
0
/**
 * Implémentation sécurisée du saut en avant.
 *
 * Ne dépend pas de la disponibilité de la fonction `sql_seek()`.
 * Ne fait rien pour une valeur négative ou nulle de `$saut`.
 * Retourne la position après le saut
 *
 * @see sql_seek()
 *
 * @param resource $res
 *    Ressource issue d'une selection sql_select
 * @param int $pos
 *   position courante
 * @param int $saut
 *   saut demande
 * @param int $count
 *   position maximale
 *   (nombre de resultat de la requete OU position qu'on ne veut pas depasser)
 * @param string $serveur
 *   Nom du connecteur
 * @param bool|string $option
 *   Peut avoir 2 valeurs :
 *   - true -> executer la requete
 *   - continue -> ne pas echouer en cas de serveur sql indisponible
 *
 * @return int
 *    Position apres le saut.
 */
function sql_skip($res, $pos, $saut, $count, $serveur = '', $option = true)
{
    // pas de saut en arriere qu'on ne sait pas faire sans sql_seek
    if (($saut = intval($saut)) <= 0) {
        return $pos;
    }
    $seek = $pos + $saut;
    // si le saut fait depasser le maxi, on libere la resource
    // et on sort
    if ($seek >= $count) {
        sql_free($res, $serveur, $option);
        return $count;
    }
    if (sql_seek($res, $seek)) {
        $pos = $seek;
    } else {
        while ($pos < $seek and sql_fetch($res, $serveur, $option)) {
            $pos++;
        }
    }
    return $pos;
}
예제 #3
0
/**
 * Implementation securisee du saut en avant
 * pour la balise #SAUTER
 *
 * @param resource $res
 * @param int $pos
 * @param int $nb
 * @param int $total
 */
function spip_bonux_sauter(&$res, &$pos, $nb, $total){
	// pas de saut en arriere qu'on ne sait pas faire sans sql_seek
	if (($nb=intval($nb))<=0) return;

	$saut = $pos + $nb;
	// si le saut fait depasser le maxi, on libere et on sort
	if ($saut>=$total) {sql_free($res); return;}

	if (sql_seek($res, $saut))
		$pos += $nb;
	else
		while ($pos<$saut AND sql_fetch($res))
			$pos++;
	return;
}
예제 #4
0
 /**
  * Sauter a une position absolue
  *
  * @param int $n
  * @param null|string $continue
  * @return bool
  */
 public function seek($n = 0, $continue = null)
 {
     if (!sql_seek($this->sqlresult, $n, $this->command['connect'], $continue)) {
         // SQLite ne sait pas seek(), il faut relancer la query
         // si la position courante est apres la position visee
         // il faut relancer la requete
         if ($this->pos > $n) {
             $this->free();
             $this->select();
             $this->valid();
         }
         // et utiliser la methode par defaut pour se deplacer au bon endroit
         // (sera fait en cas d'echec de cette fonction)
         return false;
     }
     $this->row = sql_fetch($this->sqlresult, $this->command['connect']);
     $this->pos = min($n, $this->count());
     return true;
 }