使用带有顺序,限制和搜索功能的数据表生成动态表

时间:2018-02-06 05:57:58

标签: php mysql database datatable

我正在使用jQuery数据服务器端处理(https://datatables.net)。

首先,我正在分享我的数据库结构,您知道数据存储在数据库中的方式以及如何呈现数据。

Table Row Master:

enter image description here

Table Column Master:

Table Column master

表数据大师:

Table Data master

这是三个表

我正在使用限制和搜索对数据表进行查询但是我无法通过订购任何列来实现它,因为所有数据都保存在一个数据库表格表中(表数据主数据)所以你能不能请提供解决方案,或建议我采取任何其他方式。

$strQuery = "SELECT tc.id as column_id,tr.id as row_id,td.data_value,td.link_type,td.link_value,td.is_new_tab FROM 
                    (
                        SELECT tc.id as column_id,tr.id as row_id,td.data_value,td.link_type,td.link_value,td.is_new_tab 
                        from table_data td  
                            INNER join table_columns tc on tc.id=td.column_id and tc.table_id='1'  
                            INNER join table_rows tr on tr.id=td.row_id and tr.table_id='1' 
                            where td.table_id='1' and td.deletedBy=0   ".$strWhere."
                            GROUP BY td.id  order by tr.isSequence ASC,tc.isSequence ASC 
                    )
                as tdata
                INNER JOIN  table_data td on td.row_id = tdata.row_id
                INNER JOIN  table_rows tr ON tr.id = td.row_id
                INNER JOIN  table_columns tc ON tc.id = td.column_id
GROUP by td.id ORDER BY tr.isSequence asc,tc.isSequence asc ";

$cols = ((int)$_POST['cols']); // number of cols 
$top = 0;
if(isset($_POST['start']))
{
    $top = ($cols) * ((int)$_POST['start']);
}
$limit = $cols *10;
if(isset($_POST['length']))
{
    $limit = $cols * ((int)$_POST['length']);
}
$strQuery .= " LIMIT ".$top.",".$limit." "; 

我想获取10行然后我想要60条记录并将数组准备为row和cols数组

foreach ($list_data['data'] as $tableData) {
            $rowData[$tableData["row_id"]][$tableData["column_id"]] = $tableData;
        }

这就是我获得最终数组的方式,但我没有按功能排序。所以请提供我的建议。

0 个答案:

没有答案