我在 php 中使用 jQuery 数据表服务器端示例来抓取表中的记录,然后显示它们,如本例所示:
http://www.datatables.net/release-datatables/examples/data_sources/server_side.html
我的问题是:如何根据我的 sql 中的 WHERE 子句仅获取特定记录?
请注意,上面的示例获取指定表中的所有记录,允许我们选择列...我们如何做同样的事情但只选择符合特定条件的特定行...即在示例中,加载数据表时默认仅显示 Firefox 浏览器。以下是通过 jquery 调用以填充数据表的 php 脚本中的代码...我实际上是在尝试修改此脚本以仅获取特定行,即行 WHERE 浏览器如“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];
最佳答案
如果您遵循 PHP 中的 CRUD 示例,则 $_GET 键匹配数据表的选项设置键,例如“sSearch”代表您的位置,“iDisplayStart”和“iDisplayLength”代表限制等
关于javascript - 如何选择服务器端 jQuery 数据表中的特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472682/