I have a table in php, which has rows being generated dynamically. Multiple rows in one row. This is the structure that is needed and cannot be changed. This is a sample table structure(image attached). Now, i have code written that table in a simmilar structure. But i cannot apply pagination and search functionalities of DATATABLES on this, as there are dynamic rows. What should i do?
Expected table structure with this code
<table class="table table-striped table-hover table-bordered" id="myTable" style="margin-bottom: 5rem; width:100%;">
<thead>
<tr>
<th rowspan="2" class="tHeader">S.No.</th>
<th rowspan="2" class="tHeader">Name & Designation</th>
<th colspan="5" class="tHeader">Year 2023</th>
<th colspan="5" class="tHeader">Year2024</th>
</tr>
<tr>
<th class="tHeader">Details of property 2023</th>
<th class="tHeader">Present Value 2023 </th>
<th class="tHeader">How acquire 2023</th>
<th class="tHeader">Annual Income 2023</th>
<th class="tHeader">Remarks 2023</th>
<th class="tHeader">Details of property 2024</th>
<th class="tHeader">Present Value 2024 </th>
<th class="tHeader">How acquire 2024</th>
<th class="tHeader">Annual Income 2024</th>
<th class="tHeader">Remarks 2024</th>
</tr>
</thead>
<tbody>
<?php if (!empty($infoData)) {
$i = 1;
foreach ($infoData as $row) {
$prev_types = explode("<br>", $row['prop_type_prev']);
$prev_addresses = explode("<br>", $row['prev_address']);
$prev_values = explode("<br>", $row['value_prev']);
$annual_prev = explode("<br>", $row['annual_prev']);
$remarks_prev = explode("<br>", $row['remarks_prev']);
$on_name_prev = explode("<br>", $row['on_name_prev']);
$person_prev = explode("<br>", $row['person_prev']);
$rrt_name_prev = explode("<br>", $row['rrt_name_prev']);
$prop_acq_type_name_prev = explode("<br>", $row['prop_acq_type_name_prev']);
$acq_date_prev = explode("<br>", $row['acq_date_prev']);
$share_prev = explode("<br>", $row['share_prev']);
$prop_type_name_curr = explode("<br>", $row['prop_type_name_curr']);
$current_address = explode("<br>", $row['current_address']);
$present_value_curr = explode("<br>", $row['present_value_curr']);
$annual_income_curr = explode("<br>", $row['annual_income_curr']);
$remarks_curr = explode("<br>", $row['remarks_curr']);
$string_agg = explode("<br>", $row['string_agg']);
$person_current = explode("<br>", $row['person_current']);
$rrt_name_curr = explode("<br>", $row['rrt_name_curr']);
$prop_acq_type_name_curr = explode("<br>", $row['prop_acq_type_name_curr']);
$acq_date_curr = explode("<br>", $row['acq_date_curr']);
$share_curr = explode("<br>", $row['share_curr']);
$rowspan = max(count($prev_types), count($prev_addresses), count($prev_values));
for ($j = 0; $j < $rowspan; $j++) { ?>
<tr>
<?php if ($j == 0) { ?>
<td rowspan="<?= $rowspan; ?>"><?= $i++; ?></td>
<td rowspan="<?= $rowspan; ?>"><?= $row['emp_code'] . " " . $row['emp_name'] . " " . $row['desig']; ?></td>
<?php } ?>
<td><?= isset($prev_types[$j]) ? $prev_types[$j] . " " . $prev_addresses[$j] : ''; ?></td>
<td><?= isset($prev_values[$j]) ? $prev_values[$j] : ''; ?></td>
<td><?php
if ($prop_on_name_prev[$j] == 2) {
echo isset($person_prev[$j]) ? $person_prev[$j] . " " . $rrt_name_prev[$j] . "<br>" : 'null';
} else if ($prop_on_name_prev[$j] == 1) {
echo 'self' . "<br>";
} else
echo " " . "<br>";
echo isset($prop_acq_type_name_prev[$j]) ? $prop_acq_type_name_prev[$j] . " " : '';
if (isset($acq_date_prev[$j]) && !empty($acq_date_prev[$j])) {
echo date('d-m-Y', strtotime($acq_date_prev[$j])) . " ";
} else {
echo "";
}
echo isset($share_prev[$j]) ? $share_prev[$j] : '';
?></td>
<td><?= isset($annual_income_prev[$j]) ? $annual_income_prev[$j] : ''; ?></td>
<td><?= isset($remarks_prev[$j]) ? $remarks_prev[$j] : ''; ?></td>
<td><?= isset($prop_type_name_curr[$j]) ? $prop_type_name_curr[$j] . " " . $current_address[$j] : ''; ?></td>
<td><?= isset($present_value_curr[$j]) ? $present_value_curr[$j] : ''; ?></td>
<td><?php
if (isset($string_agg[$j]) && $string_agg[$j] == 2) {
echo isset($person_current[$j]) ? $person_current[$j] . " " . $rrt_name_curr[$j] . "<br>" : 'null';
} else if (isset($string_agg[$j]) && $string_agg[$j] == 1) {
echo 'self' . "<br>";
} else
echo " " . "<br>";
echo isset($prop_acq_type_name_curr[$j]) ? $prop_acq_type_name_curr[$j] . " " : '';
if (isset($acq_date_curr[$j]) && !empty($acq_date_curr[$j])) {
echo date('d-m-Y', strtotime($acq_date_curr[$j])) . " ";
} else {
echo "";
}
echo isset($share_curr[$j]) ? $share_curr[$j] : '';
?></td>
<td><?= isset($annual_income_curr[$j]) ? $annual_income_curr[$j] : ''; ?></td>
<td><?= isset($remarks_curr[$j]) ? $remarks_curr[$j] : ''; ?></td>
</tr>
<?php }
}
} ?>
</tbody>
</table>
this is the table part and i tried to initialise this using datatable, but datatables failed to paginate or append search to it.