Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/02/2013, 08:33
Avatar de satjaen
satjaen
 
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: Listar resultados de tres consultas.

Cita:
Iniciado por dashtrash Ver Mensaje
No.Me refiero a que no se repite la query entera por cada filtro posible.La query se escribe una vez, y luego se le concatena el filtro calculado.Lo mismo que haces con el order by.

Si ese filtro, además, se puede calcular de forma sencilla, mejor.
En tu php hay 17 queries casi completas.Debería haber 3.
Gracias, mira lo hecho así, pero no me sale:
Código Javascript:
Ver original
  1. <?php  
  2. include("Connections/conexion.php");
  3. if ($_GET["action"] == "listar")
  4. {
  5.     // valores recibidos por POST
  6.     $vte = $_POST['telefonos'];
  7.     $ape = $_POST['apellidos'];
  8.     $name = $_POST['name'];
  9.     $dni = $_POST['dni'];
  10.     $calle = $_POST['calle'];
  11.     $movil = $_POST['movil'];
  12.     $loca = $_POST['localidad'];
  13.    
  14. $vars=array("vte"=>"U.telefonos",
  15.                        "movil"=>"U.movil",
  16.                        "calle"=>"D.calle",
  17.                        "loca"=>"D.localidad"
  18.                       );
  19.    foreach($vars as $key=>$value)
  20.    {
  21.           if(isset($$key))
  22.             $filters[]=$value." like '%".($$key)."%'";          
  23.    }   
  24. $sql = "(SELECT U.id_aviso,U.telefonos,U.name,U.apellidos,D.localidad,D.calle
  25. FROM clientes U,dir_clientes D
  26. WHERE  U.id_aviso=D.id_aviso AND D.calle != '' AND ".implode(" AND ",$filters).";)
  27. UNION ALL
  28. (SELECT id_aviso,telefonos,name,apellidos,localidad,calle FROM  avisos  WHERE ".implode(" AND ",$filters).";)
  29. UNION ALL
  30. (SELECT U.id_aviso,U.telefonos,U.name,U.apellidos,D.localidad,D.calle
  31. FROM usuarios U,dir_usuarios D
  32. WHERE  U.id_aviso=D.id_aviso AND D.calle != '' AND ".implode(" AND ",$filters).";)";
  33.  
  34.  
  35.     // Ordenar por
  36.     $vorder = $_POST['orderby'];
  37.      
  38.     if($vorder != ''){
  39.         $sql .= " ORDER BY ".$vorder;
  40.     }
  41.      
  42.     $query = mysql_query($sql);
  43. if (mysql_num_rows($query) > 0) {
  44.          
  45.   $datos = array();
  46.      
  47.     while($row = mysql_fetch_array($query))
  48.     {
  49.         $datos[] = array(
  50.             'id_aviso'          => $row['id_aviso'],
  51.             'telefonos'          => $row['telefonos'],
  52.             'name'      => utf8_encode($row['name']),
  53.             'apellidos'       => utf8_encode($row['apellidos']),
  54.             'calle'       => utf8_encode($row['calle']),
  55.             'localidad'        => utf8_encode($row['localidad'])
  56.            
  57.         );
  58.     }
  59.     // convertimos el array de datos a formato json
  60.     echo json_encode($datos);
  61. /* Tienes resultados. */
  62.  }
  63. }
  64. ?>