Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/04/2017, 17:36
Avatar de Fernarey1810
Fernarey1810
 
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Datatables busqueda de datos con dos tablas

Tengo las siguientes dos tablas:

COMPRAS
idcompra-idcliente-observacion-fecha_ingreso
1 1
2 1
3 2
4 2
...
CLIENTES
idcliente-nombre-apellido-direccion-telefono-movil-dni
1
2
3
4
...

Este es el codigo que inicia datatables:
Código Javascript:
Ver original
  1. $('#pagos').DataTable({
  2.          "bProcessing": true,
  3.          "serverSide": true,
  4.          "ajax":{
  5.             url :"server_processing.php",
  6.             type: "post"          
  7.           }
  8.         });

Esta es la tabla HTML
Código HTML:
Ver original
  1. <table class="table datatable-basic" id="pagos">
  2.                     <thead>
  3.                         <tr>
  4.                             <th>Cliente</th>
  5.                             <th>Producto</th>
  6.                             <th>Kilo</th>
  7.                             <th>Precio</th>
  8.                             <th>Entrega</th>
  9.                             <th>Fecha ingreso</th>
  10.                             <th>Acción</th>
  11.                         </tr>
  12.                     </thead>
  13.                  </table>

Este es el archivo server_processing.php que busca los datos server side:
Código PHP:
Ver original
  1. <?php
  2. $hostname = 'localhost';        
  3. $dbname   = 'ap_formato';
  4. $dbusername = 'root';
  5. $dbpassword = '';
  6.  
  7.    
  8. $connection = mysql_connect($hostname, $dbusername, $dbpassword);
  9. if(!$connection) {
  10.     die("database connecction failed." . mysql_error());
  11. }
  12.  
  13. $db_select = mysql_select_db($dbname, $connection);
  14. if(!$db_select) {
  15.     die("database selection failed." . mysql_error());
  16. }
  17.  
  18. // initilize all variable
  19. $params = $columns = $totalRecords = $data = array();
  20.  
  21. $params = $_REQUEST;
  22.  
  23. $where = $sqlTot = $sqlRec = "";   
  24.  
  25. if( !empty($params['search']['value']) ) {  
  26.         //$where .=" WHERE ( nombre LIKE '%".$params['search']['value']."%' )";    
  27.         /*$where .=" OR employee_salary LIKE '".$params['search']['value']."%' ";
  28.         $where .=" OR employee_age LIKE '".$params['search']['value']."%' )";*/
  29. }
  30.  
  31. $sql = "SELECT * FROM compras ";
  32. $sqlTot .= $sql;
  33. $sqlRec .= $sql;
  34.    
  35. if(isset($where) && $where != '') {
  36.     $sqlTot .= $where;
  37.     $sqlRec .= $where;
  38. }
  39.  
  40. $sqlRec .=  " ORDER BY fecha_ingreso DESC LIMIT ".$params['start']." ,".$params['length']; //" ORDER BY ". $columns[$params['order'][0]['column']]."   ".$params['order'][0]['dir'].
  41.  
  42. $queryTot = mysql_query($sqlTot, $connection) or die("database error:". mysql_error($conn));
  43.  
  44. $totalRecords = mysql_num_rows($queryTot);
  45.    
  46. $queryRecords = mysql_query($sqlRec, $connection);
  47.    
  48. while( $row = mysql_fetch_array($queryRecords) ) {
  49.      $tmp = array();         
  50.      $sqlcli = "select * from clientes where idcliente = '$row[idcliente]'";
  51.      $rescli = mysql_query($sqlcli);
  52.      $tempc = mysql_fetch_array($rescli);
  53.      $nombre = ucwords($tempc['nombre'].' '.$tempc['apellido']);
  54.      $tmp[0] = $nombre;  
  55.              
  56.      $data[] = $tmp;
  57.  }     
  58.  
  59. $json_data = array(
  60.         "draw"            => intval( $params['draw'] ),  
  61.         "recordsTotal"    => intval( $totalRecords ),  
  62.         "recordsFiltered" => intval($totalRecords),
  63.         "data"            => $data  
  64.         );
  65.  
  66. echo json_encode($json_data);
  67. ?>

El problema es que al tomar los datos via server side, tengo que generar la consulta SQL para los datos que aparecen en cada columna y no puedo hacerlo porque estan en otras tablas, ej:

Código PHP:
Ver original
  1. if( !empty($params['search']['value']) ) {  
  2.         //$where .=" WHERE ( nombre LIKE '%".$params['search']['value']."%' )";    
  3.         /*$where .=" OR employee_salary LIKE '".$params['search']['value']."%' ";
  4.         $where .=" OR employee_age LIKE '".$params['search']['value']."%' )";*/
  5. }
Hay alguna manera de que una vez se carguen todos los datos usar el buscador sin tener que generar una consulta server side ?