Как скрыть повторяющуюся часть полученных данных с использованием php и codeigniter
Я получил следующую таблицу в результате этого оператора MySQL
SELECT * FROM expenses, income
WHERE expenses.projectname=income.projectname
AND expenses.task=income.task
Это поля в моей таблице проектов
![введите описание изображения здесь]()
Это поля моей таблицы задач
![введите описание изображения здесь]()
В этой таблице один проект имеет много задач. Поэтому столбец проекта, клиента, начала проекта и конечной даты повторяется бессмысленно. Как я могу показать их только один раз для всех задач? Как я могу применить PHP hide logic здесь? Следующая диаграмма показывает, что мне нужно достичь. Данные извлекаются через запрос MySQL. Но как я могу скрывать ненужные значения, повторяющиеся
Это страница просмотра CodeIgniter
<table class="table table-lg">
<thead >
<tr class="filters">
<th><input type="text" class="form-control" placeholder="Project" disabled></th>
<th><input type="text" class="form-control" placeholder="Employee" disabled></th>
<th><input type="text" class="form-control" placeholder="Task" disabled></th>
<th><input type="text" class="form-control" placeholder="Expense" disabled></th>
<th><input type="text" class="form-control" placeholder="Amount" disabled></th>
<th><input type="text" class="form-control" placeholder="Paid/Not" disabled></th>
<th><input type="text" class="form-control" placeholder="Client" disabled></th>
<th><input type="text" class="form-control" placeholder="Cost" disabled></th>
<th><input type="text" class="form-control" placeholder="Income " disabled></th>
<th><input type="text" class="form-control" placeholder="Date" disabled></th>
</tr>
</thead>
<tbody>
<?php
if(isset($view_data1) && is_array($view_data1) && count($view_data1)): $i=1;
foreach ($view_data1 as $key => $data) {
?>
<tr <?php if($i%2==0){echo 'class="even"';}else{echo'class="odd"';}?>>
<td><?php echo $data['projectname']; ?></td>
<td><?php echo $data['employee']; ?></td>
<td><?php echo $data['task']; ?></td>
<td><?php echo $data['ExpenseName']; ?></td>
<td><?php echo $data['ExpenseAmount']; ?></td>
<td><?php echo $data['pn']; ?></td>
<td><?php echo $data['cname']; ?></td>
<td><?php echo $data['taskcost']; ?></td>
<td><?php echo $data['amount']; ?></td>
<td><?php echo $data['datetimepicker_mask']; ?></td>
</tr>
<?php
$i++;
}
else:
?>
<tr>
<td colspan="7" align="center" >No Records Found..</td>
</tr>
<?php
endif;
?>
</tbody>
</table>
Ответы
Ответ 1
Я не тестировал этот код, но идея состоит в том, чтобы запомнить последний ключ (имя проекта и сотрудника в этом случае), а затем сравнить его с текущим ключом.
Поля в вашем примере кода не соответствуют вашей таблице примеров документов Word, поэтому я просто пошел с вашим примером кода.
<tbody>
<?php
if (isset($view_data1) && is_array($view_data1) && count($view_data1)) {
$i = 1;
$last_key = '';
foreach ($view_data1 as $key => $data) {
$stripe = 'odd';
if ($i % 2 == 0) {
$stripe = 'even';
}
echo "<tr class='$stripe'>";
$i++;
$current_key = $data['projectname'] . $data['employee'];
if ($current_key !== $last_key) {
echo "<td>" . $data['projectname'] . "</td>";
echo "<td>" . $data['employee'] . "</td>";
} else {
echo "<td colspan='2'></td>";
}
$last_key = $current_key;
?>
<td><?php echo $data['task']; ?></td>
<td><?php echo $data['ExpenseName']; ?></td>
<td><?php echo $data['ExpenseAmount']; ?></td>
<td><?php echo $data['pn']; ?></td>
<td><?php echo $data['cname']; ?></td>
<td><?php echo $data['taskcost']; ?></td>
<td><?php echo $data['amount']; ?></td>
<td><?php echo $data['datetimepicker_mask']; ?></td>
</tr>
<?php
}
} else {
?>
<tr><td colspan="10" align="center" >No Records Found..</td></tr>
<?php
}
?>
</tbody>
</table>
Ответ 2
не выбирайте одновременно две таблицы. присоедините их к условию.
SELECT expenses.*,income.*,expenses.id as p_id FROM expenses
join income ON expenses.task=income.task AND expenses.projectname=income.projectname
измените область просмотра foreach
<table class="table table-lg">
<thead >
<tr class="filters">
<th ><input type="text" class="form-control" placeholder="Project" disabled></th>
<th ><input type="text" class="form-control" placeholder="Employee" disabled></th>
<th ><input type="text" class="form-control" placeholder="Task" disabled></th>
<th ><input type="text" class="form-control" placeholder="Expense" disabled></th>
<th ><input type="text" class="form-control" placeholder="Amount" disabled></th>
<th ><input type="text" class="form-control" placeholder="Paid/Not" disabled></th>
<th ><input type="text" class="form-control" placeholder="Client" disabled></th>
<th ><input type="text" class="form-control" placeholder="Cost" disabled></th>
<th ><input type="text" class="form-control" placeholder="Income " disabled></th>
<th ><input type="text" class="form-control" placeholder="Date" disabled></th>
</tr>
</thead>
<tbody>
<?php
if(isset($view_data1) && is_array($view_data1) && count($view_data1)): $i=1;
$is_exists=array();
foreach ($view_data1 as $key => $data) {
?>
<tr <?php if($i%2==0){echo 'class="even"';}else{echo'class="odd"';}?>>
<?php
if(!in_array($data['p_id'], $is_exists)){
$is_exists[]=$data['p_id'];
?>
<td><?php echo $data['projectname']; ?></td>
<td><?php echo $data['employee']; ?></td>
<td><?php echo $data['task']; ?></td>
<td><?php echo $data['ExpenseName']; ?></td>
<?php
}else{
echo "<td rowspan='4'></td>";
}
?>
<td><?php echo $data['ExpenseAmount']; ?></td>
<td><?php echo $data['pn']; ?></td>
<td><?php echo $data['cname']; ?></td>
<td><?php echo $data['taskcost']; ?></td>
<td><?php echo $data['amount']; ?></td>
<td><?php echo $data['datetimepicker_mask']; ?></td>
</tr>
<?php
$i++;
}
else:
?>
<tr>
<td colspan="7" align="center" >No Records Found..</td>
</tr>
<?php
endif;
?>
</tbody>
</table>
Ответ 3
Не объединяйте такие таблицы. Используйте запрос соединения внутри своих моделей и вызовите его в виде через контроллеры.
public function getExpenses(){
$this->db->select("addexpense.exp_date, addexpense.exp_amount, addexpense.exp_note, addexpense.exp_created, addcategory.category_name");
$this->db->from('addexpense');
$this->db->join('addcategory', 'addcategory.category_id = addexpense.category_id');
$query = $this->db->get();
return $query->result();
}
Ответ 4
Если вы правильно поняли, вы можете попробовать следующее.
<?php
$arrData = [
[
"projectname" => "First Project",
"employee" => "First Client",
"projectstart" => "12-12-2017",
"projectend" => "12-12-2019",
"task" => "Task 1",
"description" => "Description 1",
"commission" => "1000",
"taststart" => "01-01-2018",
"taskend" => "10-01-2018"
],
[
"projectname" => "First Project",
"employee" => "First Client",
"projectstart" => "12-12-2017",
"projectend" => "12-12-2019",
"task" => "Task 2",
"description" => "Description 2",
"commission" => "1000",
"taststart" => "01-01-2018",
"taskend" => "10-01-2018"
],
[
"projectname" => "First Project",
"employee" => "First Client",
"projectstart" => "12-12-2017",
"projectend" => "12-12-2019",
"task" => "Task 3",
"description" => "Description 3",
"commission" => "1000",
"taststart" => "01-01-2018",
"taskend" => "10-01-2018"
],
[
"projectname" => "Second Project",
"employee" => "Second Client",
"projectstart" => "12-12-2017",
"projectend" => "12-12-2019",
"task" => "Task 4",
"description" => "Description 4",
"commission" => "1000",
"taststart" => "01-01-2018",
"taskend" => "10-01-2018"
],
[
"projectname" => "Second Project",
"employee" => "Second Client",
"projectstart" => "12-12-2017",
"projectend" => "12-12-2019",
"task" => "Task 5",
"description" => "Description 5",
"commission" => "1000",
"taststart" => "01-01-2018",
"taskend" => "10-01-2018"
],
[
"projectname" => "Second Project",
"employee" => "Second Client",
"projectstart" => "12-12-2017",
"projectend" => "12-12-2019",
"task" => "Task 6",
"description" => "Description 6",
"commission" => "1000",
"taststart" => "01-01-2018",
"taskend" => "10-01-2018"
],
];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Project</th>
<th>Client</th>
<th>Project start on</th>
<th>Project end on</th>
<th>task</th>
<th>description</th>
<th>commission</th>
<th>task start on</th>
<th>task end on</th>
</tr>
</thead>
<tbody>
<?php
$strSavedProjectName = false;
foreach($arrData AS $arrItem)
{
?>
<tr>
<?php
if (!$strSavedProjectName || $strSavedProjectName!= $arrItem['projectname']) :
?>
<td><?=$arrItem['projectname']; ?>
<td><?=$arrItem['employee']; ?>
<td><?=$arrItem['projectstart']; ?>
<td><?=$arrItem['projectend']; ?>
<?php
else :
?>
<td colspan="4"></td>
<?php
endif;
?>
<td><?=$arrItem['task']; ?>
<td><?=$arrItem['description']; ?>
<td><?=$arrItem['commission']; ?>
<td><?=$arrItem['taststart']; ?>
<td><?=$arrItem['taskend']; ?>
</tr>
<?php
$strSavedProjectName = $arrItem['projectname'];
}
?>
</tbody>
</table>
</div>
<!-- jQuery (necessary for Bootstrap JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</body>
</html>
Это полный пример, основанный на ваших данных, поэтому вы сможете легко трансформировать это в свой вид.
Ответ 5
Логика
Логика скрытия, которую я реализовал, работает в следующем порядке:
- Начальное условие
- Главный контур
- Проверка состояния
- Запомнить последнее условие
HTML-таблица и PHP выглядят следующим образом:
<table border="1">
<thead>
<tr>
<th>Project</th>
<th>Client</th>
<th>Project Start</th>
<th>Project End</th>
<th>Task</th>
<th>Description</th>
<th>Commission</th>
<th>Task Start</th>
<th>Task End</th>
</tr>
</thead>
<tbody>
<!-- Initial Condition -->
<?php $the_project = "";?>
<!-- Main Loop -->
<?php foreach ($data as $x => $datum) { ?>
<tr>
<!-- Condition Check -->
<!-- If not the same with the last project, it will show the columns. -->
<!-- That why the Initial Condition is empty so that the 1st time this Condition Check run will always result true. -->
<?php if($datum['project'] != $the_project) { ?>
<td><?php echo $datum['project'];?></td>
<td><?php echo $datum['client'];?></td>
<td><?php echo $datum['proj_start'];?></td>
<td><?php echo $datum['proj_end'];?></td>
<?php } else { ?>
<td colspan="4"> </td>
<?php } ?>
<!-- /Condition Check -->
<td><?php echo $datum['task'];?></td>
<td><?php echo $datum['desc'];?></td>
<td><?php echo $datum['commission'];?></td>
<td><?php echo $datum['task_start'];?></td>
<td><?php echo $datum['task_end'];?></td>
</tr>
<!-- Remember Last Condition -->
<?php $the_project = $datum['project'];?>
<?php }?>
<!-- /Main Loop -->
</tbody>
</table>
Вам не нужно сравнивать все Project
, Client
, Start Date
и End Date
, предполагая, что один и тот же проект будет иметь те же Client
, Start Date
и End Date
. Поэтому он сравнивает только проект ($the_project
).
Данные
Вы можете использовать это как пример данных, действующих как данные из запросов.
<?php
$data = array(
array(
"project" => "Mobile App",
"client" => "Client One",
"proj_start"=> "12-12-2017",
"proj_end" => "12-12-2019",
"task" => "task 1",
"desc" => "desc 1",
"commission"=> "1000",
"task_start"=> "01-01-2018",
"task_end" => "10-01-2018"
),
array(
"project" => "Mobile App",
"client" => "Client One",
"proj_start"=> "12-12-2017",
"proj_end" => "12-12-2019",
"task" => "task 2",
"desc" => "desc 2",
"commission"=> "1000",
"task_start"=> "01-02-2018",
"task_end" => "10-02-2018"
),
array(
"project" => "Mobile App",
"client" => "Client One",
"proj_start"=> "12-12-2017",
"proj_end" => "12-12-2019",
"task" => "task 3",
"desc" => "desc 3",
"commission"=> "1000",
"task_start"=> "01-04-2018",
"task_end" => "10-05-2018"
),
array(
"project" => "Web App",
"client" => "Client Two",
"proj_start"=> "12-12-2017",
"proj_end" => "12-12-2019",
"task" => "task 1",
"desc" => "desc 1",
"commission"=> "1000",
"task_start"=> "01-01-2018",
"task_end" => "10-01-2018"
),
array(
"project" => "Web App",
"client" => "Client Two",
"proj_start"=> "12-12-2017",
"proj_end" => "12-12-2019",
"task" => "task 2",
"desc" => "desc 2",
"commission"=> "1000",
"task_start"=> "01-02-2018",
"task_end" => "10-02-2018"
)
);
?>
Советы 1
Я думаю, что $i
больше не нужен, так как вы можете получить тот же результат от $key
в вашем примере кода. Единственное отличие: $key
начать с 0.
Советы 2
Если вам все еще нужен $i
, вы можете упростить этот код
<tr <?php if($i%2==0){echo 'class="even"';}else{echo'class="odd"';}?>>
в
<tr class="<?php echo ($i%2==0) ? "even":"odd" ?>">
Советы 3
Я не знаю цели для четного или нечетного класса в вашем <tr>
, но если вы хотите разработать для разных цветов для каждого класса, вы можете проверить Bootstrap и установите его как <table class="table table-striped">
Ответ 6
Измените запрос как SELECT * FROM expenses, income WHERE expenses.projectname=income.projectname AND expenses.task=income.task Blockquote GROUP BY PROJECTID
Ответ 7
Прежде всего, вы должны перестроить структуру данных $viewdata1. В принципе, разделяйте между основными полями данных проекта и полями данных задачи, а затем лучше объединяйте их.
Мои предположения:
1. [task, ExpenseName, ExpenseAmount, pn, cname, taskcost, amount, datetimepicker_mask] = > - все поля данных задачи
2. [projectname, employee] = > - все поля данных проекта
В вашей модели (пусть назовите ее project_model),
1. имеют функцию, которая запрашивает ТОЛЬКО [имя проекта или сотрудника или идентификатор проекта или все другие поля данных проекта], назовите его allProject(), убедитесь, что он возвращает что-то вроде
[
0 => [
'id' => 101,
'projectName' => 'Desktop App' ,
other project data fields
] ,
1 => [
'id' => 102,
'projectName' => 'Mobile App' ,
other project data fields
] ,
2 => [
'id' => 103,
'projectName' => 'Andriod App' ,
other project data fields
] ,
etc...
]
2. имеют функцию, которая выполняет поиск/запросы [task, ExpenseName, ExpenseAmount, pn, cname, taskcost, amount, datetimepicker_mask] на основе [projectname или projectID]... пусть назовите его task_query (projectID)... убедитесь, что он возвращает что-то вроде
[
0 => [
'id' => 222,
'projectID' => 101
'task' => 'task 1',
'description' => 'description 1',
other task data fields
] ,
1 => [
'id' => 236,
'projectID' => 101
'task' => 'task 2',
'description' => 'description 2',
other task data fields
] ,
2 => [
'id' => 245,
'projectID' => 101
'task' => 'task 3',
'description' => 'description 3',
other task data fields
] ,
etc.
]
В контроллере ,
$data['viewdata1'] = $this->project_model->allProject();
foreach($data['viewdata1'] as $key => $value)
{
$value['taskData'] = $this->project_model->task_query($value['id']);
}
$data ['viewdata1'] должен выглядеть как...
[
0 => [
'id' => 101,
'projectName' => 'Desktop App' ,
other project data fields,
'taskData' => [
0 => [
'id' => 222,
'projectID' => 101,
'task' => 'task 1',
'description' => 'description 1',
other task data fields
] ,
1 => [
'id' => 236,
'projectID' => 101,
'task' => 'task 2',
'description' => 'description 2',
other task data fields
] ,
2 => [
'id' => 245,
'projectID' => 101,
'task' => 'task 3',
'description' => 'description 3',
other task data fields
] ,
etc.
]
] ,
1 => [
'id' => 102,
'projectName' => 'Mobile App' ,
other project data fields,
'taskData' => [
0 => [
'id' => 123,
'projectID' => 102,
'task' => 'task 1b',
'description' => 'description 1b',
other task data fields
] ,
1 => [
'id' => 124,
'projectID' => 102,
'task' => 'task 2b',
'description' => 'description 2b',
other task data fields
] ,
2 => [
'id' => 125,
'projectID' => 102,
'task' => 'task 3b',
'description' => 'description 3b',
other task data fields
] ,
etc.
]
] ,
2 => [
'id' => 103,
'projectName' => 'Andriod App' ,
other project data fields,
'taskData' => [
0 => [
'id' => 567,
'projectID' => 103,
'task' => 'task 1c',
'description' => 'description 1c',
other task data fields
] ,
1 => [
'id' => 568,
'projectID' => 103,
'task' => 'task 2c',
'description' => 'description 2c',
other task data fields
] ,
2 => [
'id' => 569,
'projectID' => 103,
'task' => 'task 3c',
'description' => 'description 3c',
other task data fields
] ,
etc.
]
] ,
etc...
]
все вы настроены для представления
<table class="table table-lg">
<thead >
<tr class="filters">
<th><input type="text" class="form-control" placeholder="Project" disabled></th>
<th><input type="text" class="form-control" placeholder="Employee" disabled></th>
<th><input type="text" class="form-control" placeholder="Task" disabled></th>
<th><input type="text" class="form-control" placeholder="Expense" disabled></th>
<th><input type="text" class="form-control" placeholder="Amount" disabled></th>
<th><input type="text" class="form-control" placeholder="Paid/Not" disabled></th>
<th><input type="text" class="form-control" placeholder="Client" disabled></th>
<th><input type="text" class="form-control" placeholder="Cost" disabled></th>
<th><input type="text" class="form-control" placeholder="Income " disabled></th>
<th><input type="text" class="form-control" placeholder="Date" disabled></th>
</tr>
</thead>
<tbody>
<?php
if(isset($view_data1) && is_array($view_data1) && count($view_data1)): $i=1;
foreach ($view_data1 as $key1 => $data1) {
$howManyTasks = count($data1['taskData']);
?>
<tr <?php if($i%2==0){echo 'class="even"';}else{echo'class="odd"';}?>>
<td rowspan="<?= $howManyTasks ?>"><?php echo $data1['projectname']; ?></td>
<td rowspan="<?= $howManyTasks ?>"><?php echo $data1['employee']; ?></td>
<?php foreach($data1['taskData'] as $key2 => $data2) {?>
<td><?php echo $data2['task']; ?></td>
<td><?php echo $data2['ExpenseName']; ?></td>
<td><?php echo $data2['ExpenseAmount']; ?></td>
<td><?php echo $data2['pn']; ?></td>
<td><?php echo $data2['cname']; ?></td>
<td><?php echo $data2['taskcost']; ?></td>
<td><?php echo $data2['amount']; ?></td>
<td><?php echo $data2['datetimepicker_mask']; ?></td>
</tr>
<?php if($key2 != ($howManyTasks-1) ){ ?> <tr> <?php } ?>
<?php } ?>
<?php
$i++;
}
else:
?>
<tr>
<td colspan="7" align="center" >No Records Found..</td>
</tr>
<?php
endif;
?>
</tbody>
</table>
Ответ 8
if($key == 0){
$project_name = $data['projectname'];
$first = true;
}else{
$first = false;
if($project_name != $data['projectname']){
$project_name = $data['projectname'];
$first = true;
}
}
<td><?php
if($first == true){
ehco $data['projectname'];
}else{
echo "";
}
</td>
Попробуйте это внутри вашего foreach, я не устал, но это может сработать, и вы можете получить некоторые идеи. Здесь в первом цикле он проверяет $key, сначала будет 0 и $first variable будет true, если $key не равен 0, тогда он будет проверять имя проекта на имя проекта цикла, если он не соответствует ему, заменит его, Используйте то же самое для клиента и другого столбца, который вы хотите удалить или удалить. Я надеюсь, что это сработает или это даст вам некоторую идею.
Ответ 9
Используйте in_array()
функцию и установите colspan
и rowspan
для td
Используйте следующий код на странице просмотра,
<table class="table table-lg">
<thead >
<tr class="filters">
<th><input type="text" class="form-control" placeholder="Project" disabled></th>
<th><input type="text" class="form-control" placeholder="Employee" disabled></th>
<th><input type="text" class="form-control" placeholder="Task" disabled></th>
<th><input type="text" class="form-control" placeholder="Expense" disabled></th>
<th><input type="text" class="form-control" placeholder="Amount" disabled></th>
<th><input type="text" class="form-control" placeholder="Paid/Not" disabled></th>
<th><input type="text" class="form-control" placeholder="Client" disabled></th>
<th><input type="text" class="form-control" placeholder="Cost" disabled></th>
<th><input type="text" class="form-control" placeholder="Income " disabled></th>
<th><input type="text" class="form-control" placeholder="Date" disabled></th>
</tr>
</thead>
<tbody>
<?php
if(isset($view_data1) && is_array($view_data1) && count($view_data1)): $i=1;
foreach ($view_data1 as $key => $data)
{
$number_of_task[$data['projectname']][] = $data['task'];
}
foreach ($view_data1 as $key => $data) {
$array = array();
?>
<tr <?php if($i%2==0){echo 'class="even"';}else{echo'class="odd"';}?>>
<?php if(!in_array($data['projectname'],$array)) {
$array[] = $data['projectname'];
?>
<td><?php echo $data['projectname']; ?></td>
<td><?php echo $data['employee']; ?></td>
<?php } else { ?>
<td colspan="2" rowspan="<?php echo count($number_of_task[$data['projectname']]); ?>"> </td>
<td><?php echo $data['task']; ?></td>
<td><?php echo $data['ExpenseName']; ?></td>
<td><?php echo $data['ExpenseAmount']; ?></td>
<td><?php echo $data['pn']; ?></td>
<td><?php echo $data['cname']; ?></td>
<td><?php echo $data['taskcost']; ?></td>
<td><?php echo $data['amount']; ?></td>
<td><?php echo $data['datetimepicker_mask']; ?></td>
</tr>
<?php
$i++;
}
}
else:
?>
<tr>
<td colspan="7" align="center" >No Records Found..</td>
</tr>
<?php
endif;
?>
</tbody>
</table>
Ответ 10
Это мой способ справиться с этим. Я надеюсь, что это та же самая проблема, с которой вы столкнулись :)
* важно, переменные $ dcost и $ cd - это переменные, которые я установил сам, пожалуйста, измените их на то, что у вас есть
до
после
до кода
foreach(your sql variable){
echo '<tr><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['destination'].'</td>
<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['timein'].'</td>
<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['timein'].'</td>
<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['timein'].'</td>
<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['timeout'].'</td>';
<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" class="mday">'.$cd['mday'].'</td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" data-mrate="'.$cd['mrate'].'" class="mrate">'.rupiah($cd['mrate']).'</td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" class="tm"></td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" class="lday">'.$cd['lday'].'</td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" data-lrate="'.$cd['lrate'].'" class="lrate">'.rupiah($cd['lrate']).'</td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" class="tl"></td></tr>';}
после кода
foreach(your sql variable){
echo '<tr>';
if($i - 1 == 1){
$i = 0;
echo ' <td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['destination'].'</td>
<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['timein'].'</td>
<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['timein'].'</td>
<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['timein'].'</td>
<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;">'.$dcost['timeout'].'</td>';
}else{
echo ' <td colspan="5" style="border-right:1px solid #000;"> </td>';
}
echo '<td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" class="mday">'.$cd['mday'].'</td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" data-mrate="'.$cd['mrate'].'" class="mrate">'.rupiah($cd['mrate']).'</td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" class="tm"></td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" class="lday">'.$cd['lday'].'</td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" data-lrate="'.$cd['lrate'].'" class="lrate">'.rupiah($cd['lrate']).'</td><td style="border-right:1px solid #000;text-align:center;vertical-align:middle;" class="tl"></td></tr>';}