【发布时间】:2012-02-27 21:37:38
【问题描述】:
我在 php 中使用 jQuery Data Tables 服务器端示例来抓取表中的记录,然后显示它们,如下例所示:
http://www.datatables.net/release-datatables/examples/data_sources/server_side.html
我的问题是:如何根据我的 sql 中的 WHERE 子句仅获取特定记录?
请注意,上面的示例获取指定表中的所有记录,允许我们选择列...我们如何做同样的但只选择符合特定条件的某些行...即在示例中,加载数据表时默认仅显示 Firefox 浏览器。以下是通过 jquery 调用以填充数据表的 php 脚本中的代码...我实际上正在尝试修改此脚本以仅获取特定行,即行 WHERE browser like 'Firefox%' ...
* Filtering
* NOTE this does not match the built-in DataTables filtering which does it
* word by word on any field. It's possible to do here, but concerned about efficiency
* on very large tables, and MySQL's regex functionality is very limited
*/
$sWhere = "";
if ( $_GET['sSearch'] != "" )
{
$sWhere = "WHERE (";
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
}
$sWhere = substr_replace( $sWhere, "", -3 );
$sWhere .= ')';
}
/* Individual column filtering */
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
if ( $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' )
{
if ( $sWhere == "" )
{
$sWhere = "WHERE ";
}
else
{
$sWhere .= " AND ";
}
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string($_GET['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];
【问题讨论】:
标签: javascript jquery datatables