Я использую пример на стороне сервера jQuery Data Tables в php для захвата записей в таблице, а затем отображаю их, как показано в этом примере:
https://www.datatables.net/release-datatables/examples/data_sources/server_side.html
Мой вопрос: как мне получить только определенные записи на основе предложения WHERE в моем sql?
Обратите внимание, что приведенный выше пример получает все записи в указанной таблице, что позволяет нам выбирать столбцы... как нам сделать то же самое, но выбрать только определенные строки, соответствующие определенным критериям... т.е. в примере по умолчанию отображаются только браузеры Firefox при загрузке таблицы данных. Ниже приведен код из php-скрипта, который вызывается через jquery для заполнения таблицы данных... На самом деле я пытаюсь изменить этот скрипт, чтобы получать только определенные строки, т.е. строки, ГДЕ браузер, например "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];