cómo formar una consulta de selección por rango
Frecuentes
Visto 95 equipos
0
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.
2 Respuestas
2
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 if
s no se ejecutan si una anterior if
se encuentra ser cierto.
Usando el =
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
1
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
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php mysql variables range or haz tu propia pregunta.
parece que %xyz% solo funciona en combinación con LIKE. así que tuve que dejar estos y funciona. muchas gracias. - hermoso