Пример #1
0
/**
 * Prépare une clause WHERE pour SQLite
 *
 * Retourne une chaîne avec les bonnes parenthèses pour la 
 * contrainte indiquée, au format donnée par le compilateur
 * 
 * @param array|string $v
 *     Description des contraintes
 *     - string : Texte du where
 *     - sinon tableau : A et B peuvent être de type string ou array,
 *       OP et C sont de type string :
 *       - array(A) : A est le texte du where
 *       - array(OP, A) : contrainte OP( A )
 *       - array(OP, A, B) : contrainte (A OP B)
 *       - array(OP, A, B, C) : contrainte (A OP (B) : C)
 * @return string
 *     Contrainte pour clause WHERE
 */
function _sqlite_calculer_where($v)
{
    if (!is_array($v)) {
        return $v;
    }
    $op = array_shift($v);
    if (!($n = count($v))) {
        return $op;
    } else {
        $arg = _sqlite_calculer_where(array_shift($v));
        if ($n == 1) {
            return "{$op}({$arg})";
        } else {
            $arg2 = _sqlite_calculer_where(array_shift($v));
            if ($n == 2) {
                return "({$arg} {$op} {$arg2})";
            } else {
                return "({$arg} {$op} ({$arg2}) : {$v['0']})";
            }
        }
    }
}
Пример #2
0
function _sqlite_calculer_where($v){
	if (!is_array($v))
	  return $v ;

	$op = array_shift($v);
	if (!($n=count($v)))
		return $op;
	else {
		$arg = _sqlite_calculer_where(array_shift($v));
		if ($n==1) {
			  return "$op($arg)";
		} else {
			$arg2 = _sqlite_calculer_where(array_shift($v));
			if ($n==2) {
				return "($arg $op $arg2)";
			} else return "($arg $op ($arg2) : $v[0])";
		}
	}
}