cómo formar una consulta de selección por rango

hola tengo un motor de búsqueda para mi sitio. Tengo dos campos de selección. Me gustaría dar un ejemplo:

entrada_a: 3 entrada_b: 5

por lo que las consultas deberían verse así:

if ( ($input_a == true) && ($input_b == false) ){
        $filter_orders[] = " `col` LIKE '%$input_a%' ";
    } 
    if ( ($input_a == false) && ($input_b == true) ){
        $filter_orders[] = " `col` LIKE '%$input_b%' ";
    } 
    if ( ($input_a == true) && ($input_b == true) ){
        $filter_orders[] = " `col`= `col`>='%$input_a%' AND `col` = `col`<='%$input_b%' ";

ahora el problema es que no se si la ultima consulta es incorrecta o no. la lógica detrás de eso será que, en el caso de mi ejemplo, se debe encontrar el rango entre 3 y 5.

entonces 1,2 [3,4,5] 6,7,8 ...

si hay alguien que me pueda ayudar se lo agradeceria mucho.

muchas gracias.

preguntado el 03 de mayo de 12 a las 13:05

2 Respuestas

Eso debería ser

$filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' ";

EDITAR: probablemente desee que la declaración completa se vea así:

if ( (!empty($input_a) && is_int($input_a)) && (empty($input_b) || !is_int($input_b)) {
    $filter_orders[] = " `col`='%$input_a%' ";
} 
else if ( (empty($input_b) || !is_int($input_a)) && (!empty($input_b) && is_int($input_b)) ) {
    $filter_orders[] = " `col`='%$input_b%' ";
} 
else if ( !empty($input_a) && !empty($input_b) && is_int($input_a) && is_int($input_b) ) {
    $filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' ";
}

Insertar el else if en lugar de solo if ayuda a asegurarse de que otros ifs no se ejecutan si una anterior if se encuentra ser cierto.

Usando el patrón de velas del = en lugar de LIKE se asegurará de que 3 == 3 y no 3 and 31 or 32

contestado el 03 de mayo de 12 a las 13:05

NO, lamentablemente eso es todo menos correcto. Debería ser algo como esto.

$filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' ";

contestado el 03 de mayo de 12 a las 13:05

parece que %xyz% solo funciona en combinación con LIKE. así que tuve que dejar estos y funciona. muchas gracias. - hermoso

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.