Ver Mensaje Individual
  #10 (permalink)  
Antiguo 14/02/2014, 23:13
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 2 meses
Puntos: 977
Respuesta: Separar cadena en multiples secciones para crear filtro

Analizando bien lo que quieres hacer con los datos, creo que la forma en como los guardaste antes de enviarlos, es incorrecta. Lo ideal sería que guardes los datos en variables que tengan los mismos nombres que los campos en la tabla de la BD y ya con eso, puedes hacer una jugada para hacer la búsqueda únicamente con los datos recibidos.

Veo que tienes estos campos grade, genre, select_time y language, entonces, sería perfecto si mandaras los valores de este modo (los valores son de ejemplo):

Código Javascript:
Ver original
  1. var datos = {
  2.         grade: [2, 5, 9],
  3.         genre: [10, 8, 4],
  4.         select_time: 3,
  5.         language: 1
  6.     };
  7.  
  8. $.ajax({
  9.     url: "ejemplo.php",
  10.     type: "GET",
  11.     data: datos,
  12.     success: function(response){
  13.         //Acá haces algo con la respuesta del servidor
  14.     }
  15. });

Y en el archivo "ejemplo.php", los recibes así:

Código PHP:
Ver original
  1. $grade = "(" . implode(",", $_GET["grade"]) . ")";
  2. $genre = "(" . implode(",", $_GET["genre"]) . ")";
  3. $select_time = $_GET["select_time"];
  4. $language = $_GET["language"];
  5.  
  6. //Acá comprobamos qué datos han llegado para armar la condición en la consulta
  7. $condicion = (isset($grade) ? "grade IN $grade" : "") .
  8.               (isset($genre) ? (isset($grade) ? " AND " : "") . "genre IN $genre" : "") .
  9.               (isset($select_time) ? (isset($grade) || isset($genre) ? " AND " : "") . "select_time = $select_time" : "") .
  10.               (isset($language) ? (isset($grade) || isset($genre) || isset($select_time) ? " AND " : "") . "language = $language" : "");
  11.  
  12. $query = "SELECT * FROM tblmovies WHERE $condicion";

Como veo que "genre" y "grade" pueden tener más de un valor, los envío como arrays con todos los datos que contengan y los convierto en un grupo para buscar con la sub-consulta IN, luego, compruebo que cada dato exista, si es así, voy creando cada una de las condiciones según corresponda y al final, concateno todo a la consulta.

Pruébalo y nos dices cómo te fue, saludos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand