Не работают функции в DataTable
у меня есть mysql бд, в которой 1000+ записей, несколько таблиц и тд. Мне нужно ее корректно отобразить, я выбрал для этого DataTable,вроде бы все корректно подключил, но функции сортировки столбцов не работают, поиск не работает, отображение по 10,20,30.... записей не работает, что я сделал неверно?
php файл, где я обращаюсь к базе данных и записываю данные в массив (getData.php)
<?php
include $_SERVER['DOCUMENT_ROOT']."/config.php";
$sql= "select * from in_main where Sheet=1 order by id";
$result = mysqli_query($conn,$sql);
$i=0;
while ($data = mysqli_fetch_array($result)){
$DocumentName[$i] = $data['DocumentName'];
$DocumentNumber[$i] = $data['DocumentNumber'];
$DocumnetFormat[$i] = $data['DocumnetFormat'];
$OriginalInventoryNumber[$i] = $data['OriginalInventoryNumber'];
$OriginalDataSupplay[$i] = $data['OriginalDataSupplay'];
$DuplicationInventoryNumber[$i] = $data['DuplicationInventoryNumber'];
$DuplicationDataSupplay[$i] = $data['DuplicationDataSupplay'];
$sql= "select ForMarks from in_additionaly where DocumentNumber='$DocumentNumber'";
$result2 = mysqli_query($conn,$sql);
$data = mysqli_fetch_array($result2);
$ForMarks[$i] = $data['ForMarks'];
$sql= "select DesignationApplicability,CypherApplicability from in_applicability where DocumentNumber='$DocumentNumber' AND Sheet=1 order by DateApplicability";
$result2 = mysqli_query($conn,$sql);
$data = mysqli_fetch_array($result2);
$DesignationApplicability[$i] = $data['DesignationApplicability'];
$CypherApplicability[$i] = $data['CypherApplicability'];
$i++;
}
?>
Файл, где я подключаю DataTable, файл с загруженными данными (getData) и рисую таблицу
<?php
include 'getData.php';
?>
<html>
<head>
<title>Картотека архива</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="ru">
<link rel="stylesheet" href=../css/All_style.css>
<link rel="stylesheet" type="text/css" href="../../../../DataTables/datatables.css">
<script type="text/javascript" charset="utf8" src="../../../../DataTables/datatables.js"></script>
<script>
$(document).ready( function () {
$('#table_id').DataTable({
responsive: true
});
} );
</script>
</head>
<body>
<div align="center">
<h1>Картотека архива(таблица)</h1>
<a href="mysql_table.php"><input type="submit" value="Обновить" /></a>
<form action="../Service_program.php"><button>Выход</button></form>
<br><br>
<table id="table_id" class="display">
<thead>
<tr>
<td rowspan="2"><b>Наименование</b></td>
<td rowspan="2"><b>Номер документа</b></td>
<td rowspan="2"><b>Формат</b></td>
<td colspan="2"><b>Подлинник</b></td>
<td colspan="2"><b>Дубликат</b></td>
<td colspan="2"><b>Применяемость</b></td>
<td rowspan="2"><b>Для отметок</b></td>
</tr>
<tr>
<td><b>Инвентарный номер</b></td>
<td><b>Дата поступления</b></td>
<td><b>Инвентарный номер</b></td>
<td><b>Дата поступления</b></td>
<td><b>Обозначение</b></td>
<td><b>Шифр индекса изделия</b></td>
</tr>
</thead>
<tfoot>
<tr>
<td rowspan="2"><b>Наименование</b></td>
<td rowspan="2"><b>Номер документа</b></td>
<td rowspan="2"><b>Формат</b></td>
<td colspan="2"><b>Подлинник</b></td>
<td colspan="2"><b>Дубликат</b></td>
<td colspan="2"><b>Применяемость</b></td>
<td rowspan="2"><b>Для отметок</b></td>
</tr>
<tr>
<td><b>Инвентарный номер</b></td>
<td><b>Дата поступления</b></td>
<td><b>Инвентарный номер</b></td>
<td><b>Дата поступления</b></td>
<td><b>Обозначение</b></td>
<td><b>Шифр индекса изделия</b></td>
</tr>
</tfoot>
<?php
$j=0;
while ($j<$i)
{
echo " <tbody><tr>
<td>$DocumentName[$j]</td>
<td>$DocumentNumber[$j]</td>
<td>$DocumnetFormat[$j]</td>
<td>$OriginalInventoryNumber[$j]</td>
<td>$OriginalDataSupplay[$j]</td>
<td>$DuplicationInventoryNumber[$j]</td>
<td>$DuplicationDataSupplay[$j]</td>
<td>$DesignationApplicability[$j]</td>
<td>$CypherApplicability[$j]</td>
<td>$ForMarks[$j]</td>
</tr></tbody>";
$j++;
}
echo '</table>';
?>
</div>
</body>
</html>
Я пробовал рисовать таблицу с уже готовыми данными, без обращения к базе, тогда все работает корректно. В чем может быть причина?
Ответы (1 шт):
Вполне вероятно что в табличку записано много блоков tbody
Попробуй заменить на
$j=0;
echo "<tbody>";
while ($j<$i)
{
echo " <tr>
<td>$DocumentName[$j]</td>
<td>$DocumentNumber[$j]</td>
<td>$DocumnetFormat[$j]</td>
<td>$OriginalInventoryNumber[$j]</td>
<td>$OriginalDataSupplay[$j]</td>
<td>$DuplicationInventoryNumber[$j]</td>
<td>$DuplicationDataSupplay[$j]</td>
<td>$DesignationApplicability[$j]</td>
<td>$CypherApplicability[$j]</td>
<td>$ForMarks[$j]</td>
</tr>";
$j++;
}
echo '</tbody>
</table>';
?>
</div>
<script>
$('#table_id').DataTable({
responsive: true
});
</script>
</body>
</html>