0
我正在使用Datables创建DataTables JQuery.I能够查看我的数据正常。我遇到的问题是我无法搜索表,当我有我的查询GROUP BY。我收到错误1064.任何输入赞赏。DataTables PHP服务器处理
<?php
$aColumns = array('accountname', 'accountAddress1', 'accountAddress2', 'accountCity', 'accountState', 'accountZip', 'accountphone', 'accountemail', 'accountWebSite', 'accountFax','tasktitle');
$sIndexColumn = "accountname";
$sTable = "accounts";
$sJoin = "LEFT JOIN tasks on accounts.accountname = tasks.taskresource GROUP BY accounts.accountname";
$gaSql['user'] = "xxxx";
$gaSql['password'] = "xxxx";
$gaSql['db'] = "xxx";
$gaSql['server'] = "localhost";
/*
* Local functions
*/
function fatal_error ($sErrorMessage = '')
{
header($_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error');
die($sErrorMessage);
}
/*
* MySQL connection
*/
if (! $gaSql['link'] = mysql_pconnect($gaSql['server'], $gaSql['user'], $gaSql['password'] ))
{
fatal_error('Could not open connection to server');
}
if (! mysql_select_db($gaSql['db'], $gaSql['link']))
{
fatal_error('Could not select database ');
}
/*
* Paging
*/
$sLimit = "";
if (isset($_GET['iDisplayStart']) && $_GET['iDisplayLength'] != '-1')
{
$sLimit = "LIMIT ".intval($_GET['iDisplayStart']).", ".
intval($_GET['iDisplayLength']);
}
/*
* Ordering
*/
$sOrder = "";
if (isset($_GET['iSortCol_0']))
{
$sOrder = "ORDER BY ";
for ($i=0 ; $i<intval($_GET['iSortingCols']) ; $i++)
{
if ($_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == "true")
{
$sOrder .= "`".$aColumns[ intval($_GET['iSortCol_'.$i]) ]."` ".
($_GET['sSortDir_'.$i]==='asc' ? 'asc' : 'desc') .", ";
}
}
$sOrder = substr_replace($sOrder, "", -2);
if ($sOrder == "ORDER BY")
{
$sOrder = "";
}
}
/*
* 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 (isset($_GET['sSearch']) && $_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 (isset($_GET['bSearchable_'.$i]) && $_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
$sJoin
$sWhere
$sOrder
$sLimit
";
// $sQuery2 = "
// SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $aColumns))."`
// FROM $sTable
// $sWhere
// $sOrder
// $sLimit
// ";
$rResult = mysql_query($sQuery, $gaSql['link']) or fatal_error('MySQL Error: ' . mysql_error());
/* Data set length after filtering */
$sQuery = "
SELECT FOUND_ROWS()
";
$rResultFilterTotal = mysql_query($sQuery, $gaSql['link']) or fatal_error('MySQL Error: ' . mysql_errno());
$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 fatal_error('MySQL Error: ' . mysql_errno());
$aResultTotal = mysql_fetch_array($rResultTotal);
$iTotal = $aResultTotal[0];
/*
* Output
*/
$output = array(
"sEcho" => intval($_GET['sEcho']),
"iTotalRecords" => $iTotal,
"iTotalDisplayRecords" => $iFilteredTotal,
"aaData" => array()
);
while ($aRow = mysql_fetch_array($rResult))
{
$row = array();
//$row[] = $OpenAccountTasks;
$row[] = '<img src="assets/advanced-datatable/examples/examples_support/details_open.png">';
for ($i=0 ; $i<count($aColumns) ; $i++)
{
if ($aColumns[$i] == "accountname")
{
/* Special output formatting for 'version' column */
//$row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ];
$row[] = '<a href="AccountProfile.php?acctname=' .$aRow[ $aColumns[$i] ].'">' . $aRow[$aColumns[$i]] . '</a>';
}
else if ($aColumns[$i] =="tasktitle")
{
$taskRow = mysql_query("SELECT count(*) FROM tasks WHERE taskresource = '$aRow[accountname]' && taskstatus = 'Active'");
$taskCountResult = mysql_result($taskRow, 0);
if ($taskCountResult == 0) {
$row[] = '<span class="label label-success label-mini">'.$taskCountResult.'</span>';
}
else{
$row[] = '<span class="label label-danger label-mini">'.$taskCountResult.'</span>';
}
}
else if ($aColumns[$i] != ' ')
{
/* General output */
$row[] = $aRow[ $aColumns[$i] ];
}
}
$output['aaData'][] = $row;
}
echo json_encode($output);
?>