Foros del Web » Programando para Internet » PHP »

como asignarle condiciones a la busqueda de una tabla con datatable

Estas en el tema de como asignarle condiciones a la busqueda de una tabla con datatable en el foro de PHP en Foros del Web. hola tengo una tabla que muestra nas de 5 mil registro con datatable y me toco realizarlo con el metodo 'bProcessing': true, 'bServerSide': true, 'sAjaxSource':consulta.php' ...
  #1 (permalink)  
Antiguo 01/08/2014, 23:45
 
Fecha de Ingreso: noviembre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 2
como asignarle condiciones a la busqueda de una tabla con datatable

hola tengo una tabla que muestra nas de 5 mil registro con datatable y me toco realizarlo con el metodo

'bProcessing': true,
'bServerSide': true,
'sAjaxSource':consulta.php'

tengo dos problemas..
1 nose donde colocar una condicion donde me muestre solo los registros activos por ejemplo los que traigan el titulo de SI cada registro trae un campo que se llama campo16 y tiene que mostras solo losque esten asi campo16='SI' pero aqui si le agrego where no me hace la busqueda...

este archivo es un ejemplo esta igual solo con otro nombre pero me podrian decir... donde coloco el where campo16='SI' aqui??


consulta.php
Código PHP:
<?php
         
     
     
    
/* Array of database columns which should be read and sent back to DataTables. Use a space where
     * you want to insert a non-database field (for example a counter or static image)
     */
    
$aColumns = array ( 'id''product_name''price''taxable_goods''details''category''subcategory''ship_weight''sale_price');
     
    
/* Indexed column (used for fast and accurate table cardinality) */
    
$sIndexColumn "id";
     
    
/* DB table to use */
    
$sTable "products";
     
     
     
     
     
    
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
     
    $gaSql['link'] =  mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password']  ) or
        die( 'Could not open connection to server' );
     
    mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
        die( 'Could not select database '. $gaSql['db'] );
     
     
    /*
     * Paging
     */
    
$sLimit "";
    if ( isset( 
$_POST['iDisplayStart'] ) && $_POST['iDisplayLength'] != '-1' )
    {
        
$sLimit "LIMIT ".mysql_real_escape_string$_POST['iDisplayStart'] ).", ".
            
mysql_real_escape_string$_POST['iDisplayLength'] );
    }
     
     
    
/*
     * Ordering
     */
    
if ( isset( $_POST['iSortCol_0'] ) )
    {
        
$sOrder "ORDER BY  ";
        for ( 
$i=$i<intval$_POST['iSortingCols'] ) ; $i++ )
        {
            if ( 
$_POST'bSortable_'.intval($_POST['iSortCol_'.$i]) ] == "true" )
            {
                
$sOrder .= $aColumnsintval$_POST['iSortCol_'.$i] ) ]."
                    "
.mysql_real_escape_string$_POST['sSortDir_'.$i] ) .", ";
            }
        }
         
        
$sOrder substr_replace$sOrder"", -);
        if ( 
$sOrder == "ORDER BY" )
        {
            
$sOrder "";
        }
    }
     
     
    
/*
 
    $sWhere = "";
    if ( $_POST['sSearch'] != "" )
    {
        $sWhere = "WHERE (";
        for ( $i=0 ; $i<count($aColumns) ; $i++ )
        {
            $sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_POST['sSearch'] )."%' OR ";
        }
        $sWhere = substr_replace( $sWhere, "", -3 );
        $sWhere .= ')';
    }
     
    /* Individual column filtering */
    
for ( $i=$i<count($aColumns) ; $i++ )
    {
        if ( 
$_POST['bSearchable_'.$i] == "true" && $_POST['sSearch_'.$i] != '' )
        {
            if ( 
$sWhere == "" )
            {
                
$sWhere "WHERE ";
            }
            else
            {
                
$sWhere .= " AND ";
            }
            
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string($_POST['sSearch_'.$i])."%' ";
        }
    }
     
     
    
/*
     * SQL queries
     * Get data to display
     */
    
$sQuery "
        SELECT SQL_CALC_FOUND_ROWS "
.str_replace(" , "" "implode(", "$aColumns))."
        FROM   $sTable
        $sWhere
        $sOrder
        $sLimit
    "
;
    
$rResult mysql_query$sQuery$gaSql['link'] ) or die(mysql_error());
     
    
/* Data set length after filtering */
    
$sQuery "
        SELECT FOUND_ROWS()
    "
;
    
$rResultFilterTotal mysql_query$sQuery$gaSql['link'] ) or die(mysql_error());
    
$aResultFilterTotal mysql_fetch_array($rResultFilterTotal);
    
$iFilteredTotal $aResultFilterTotal[0];
     
    
/* Total data set length */
    
$sQuery "
        SELECT COUNT("
.$sIndexColumn.")
        FROM   $sTable
    "
;
    
$rResultTotal mysql_query$sQuery$gaSql['link'] ) or die(mysql_error());
    
$aResultTotal mysql_fetch_array($rResultTotal);
    
$iTotal $aResultTotal[0];
     
     
    
/*
     * Output
     */
    
$sOutput '{';
    
$sOutput .= '"sEcho": '.intval($_POST['sEcho']).', ';
    
$sOutput .= '"iTotalRecords": '.$iTotal.', ';
    
$sOutput .= '"iTotalDisplayRecords": '.$iFilteredTotal.', ';
    
$sOutput .= '"aaData": [ ';
    while ( 
$aRow mysql_fetch_array$rResult ) )
    {
        
$sOutput .= "[";
        for ( 
$i=$i<count($aColumns) ; $i++ )
        {
            if ( 
$aColumns[$i] == "version" )
            {
                
/* Special output formatting for 'version' */
                
$sOutput .= ($aRow$aColumns[$i] ]=="0") ?
                    
'"-",' :
                    
'"'.str_replace('"''\"'$aRow$aColumns[$i] ]).'",';
            }
            else if ( 
$aColumns[$i] != ' ' )
            {
                
/* General output */
                
$sOutput .= '"'.str_replace('"''\"'$aRow$aColumns[$i] ]).'",';
            }
        }
         
        
/*
         * Optional Configuration:
         * If you need to add any extra columns (add/edit/delete etc) to the table, that aren't in the
         * database - you can do it here
         */
         
         
        
$sOutput substr_replace$sOutput"", -);
        
$sOutput .= "],";
    }
    
$sOutput substr_replace$sOutput"", -);
    
$sOutput .= '] }';
     
    echo 
$sOutput;
?>
2- tengo una class que necesito transferir al archivo consulta.php

Código PHP:
        $.template.init();

        
// Table sort - DataTables
        
var table = $('#sorting-advanced');
        
table.dataTable({
            
'aoColumnDefs': [
                { 
'bSortable'false'aTargets': [ 0] }
            ],
            
'sPaginationType''full_numbers',
            
'sDom''<"dataTables_header"lfr>t<"dataTables_footer"ip>',
            
'fnInitComplete': function( oSettings )
            {
                
// Style length select
                
table.closest('.dataTables_wrapper').find('.dataTables_length select').addClass('select blue-gradient glossy').styleSelect();    
                
tableStyled true;
                $(
'input.switch').styleCheckable();
                
            },
            
'bProcessing'true,
            
'bServerSide'true,
            
'sAjaxSource''consulta.php'
            
        
}); 
este $('input.switch').styleCheckable();

me carga bien pero cuando hago una busqueda en el search de datatable me lo bota o cuando hago click en los botones de paginacion como lo paso?


de ante manos gracias..

Última edición por kristhian23; 01/08/2014 a las 23:51
  #2 (permalink)  
Antiguo 02/08/2014, 01:55
 
Fecha de Ingreso: noviembre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: como asignarle condiciones a la busqueda de una tabla con datatable

hola solucione la cuestio de la condicion esto due lo que hize..

cambie esto.
Código PHP:
$sWhere " ";
    if ( 
$_GET['sSearch'] != "" )
    {
        
$sWhere "WHERE (";
        for ( 
$i=$i<count($aColumns) ; $i++ )
        {
            if ( isset(
$_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
            {
                
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string$_GET['sSearch'] )."%' AND campo16='SI' OR ";
            }
        }
        
$sWhere substr_replace$sWhere"", -);
        
$sWhere .= ')';
    } 
por esto
Código PHP:
$sWhere "WHERE campo16='SI'";
    if ( 
$_GET['sSearch'] != "" )
    {
        
$sWhere "WHERE (";
        for ( 
$i=$i<count($aColumns) ; $i++ )
        {
            if ( isset(
$_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
            {
                
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string$_GET['sSearch'] )."%' AND campo16='SI' OR ";
            }
        }
        
$sWhere substr_replace$sWhere"", -);
        
$sWhere .= ')';
    } 
a la variable $sWhere le coloque WHERE campo16='SI'

hoy tengo un regostro en cada tabla que es de disponible o no disponible es un checkbox que lo tengo bien bonito decorado con una class. pero resulta que cuando digo a buscar como la tabla se refresca pierde la class y queda el checkbox tradicional como hago para que no se pierda..

$('input.switch').styleCheckable(); ayudenme porfavor

Etiquetas: datatable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:36.