Ver Mensaje Individual
  #22 (permalink)  
Antiguo 15/02/2014, 00:28
cesa_r
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 10 años, 10 meses
Puntos: 6
Respuesta: Separar cadena en multiples secciones para crear filtro

Alexis88 si me dio error pero igual lo cambie por array() pero no e probado el codigo actualizado de lolainas probe el tuyo Alexis88 y se que doy mucha lata pero mejor hacerlo bien ahora y no volver a preguntar despues bueno fue magnifico el script pero me surge un inconveniente si un elemento esta vacio por ejemplo grade me lo imprime asi:
Código SQL:
Ver original
  1. WHERE grade IN  AND genre IN (10,8,4,5) AND select_time = 3 AND LANGUAGE = 1
lo cual supongo dara error al hacer la consulta.

El codigo que probe fue:
Código PHP:
Ver original
  1. $grade = !is_null($_GET["grade"]) ? "(" . implode(",", $_GET["grade"]) . ")" : "";
  2.     $genre = !is_null($_GET["genre"]) ? "(" . implode(",", $_GET["genre"]) . ")" : "";
  3.     $select_time = !is_null($_GET["select_time"]) ? $_GET["select_time"] : "";
  4.     $language = !is_null($_GET["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" . strlen($condicion) ? " WHERE $condicion" : "";