简体   繁体   中英

How to hide repeating part of the retrieved data values using php and codeigniter

I have obtained following table as a result of this MySQL statement

SELECT * FROM expenses, income 
WHERE expenses.projectname=income.projectname 
AND expenses.task=income.task

在此输入图像描述 These are the fields in my project table

在此输入图像描述

These are the fields of my task table 在此输入图像描述

In this table, one project has many tasks. Therefore project, client, project start and end date column repeat meaninglessly. How can I show them only once for all tasks? How can I apply PHP hide logic here? Following diagram shows what I need to achieve. Data are retrieved through MySQL query. But how can I hide unnecessary values repeating 在此输入图像描述 This is the CodeIgniter view page

<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>

I didn't test this code, but the idea is to remember the last key (projectname and employee in this case) and then compare it to the current key.

The fields in your sample code don't match your Word doc example table so I just went with your code sample.

    <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>

don't select two table at the time. join them with the condition.

SELECT expenses.*,income.*,expenses.id as p_id FROM expenses
join income ON expenses.task=income.task AND expenses.projectname=income.projectname

change your view foreach section

<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>

Don't merge tables like that. Use join query inside your models and call it in views through controllers

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();
}

if i understand you correctly you can try the following.

<?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's 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>

This is a full example, based on your data - so you should be able to transform this to your view easily.

The Logic

The hide logic I have implemented, works in this order:

  • Initial Condition
  • Main Loop
  • Condition Check
  • Remember Last Condition

The HTML table and PHP looks like this:

<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's 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">&nbsp;</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>

You don't have to compare all Project , Client , Start Date , and End Date , assuming the same project will have the same Client , Start Date and End Date . That's why it only compares the project ( $the_project ).

The Data

You can use this as sample data acting like data from queries.

<?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"
        )
    );
?>

Tips 1

I think the $i is not needed anymore as you can get the same result from $key in your code example. The only difference is $key start from 0.

Tips 2

If you still need the $i , you can simplify this code

<tr <?php if($i%2==0){echo 'class="even"';}else{echo'class="odd"';}?>>

into

<tr class="<?php echo ($i%2==0) ? "even":"odd" ?>">

Tips 3

I don't know the purpose for class even or odd in your <tr> , but if you want to design for different color for each class, you might want to check Bootstrap and set it like <table class="table table-striped">

编辑查询为SELECT * FROM expenses, income WHERE expenses.projectname=income.projectname AND expenses.task=income.task Blockquote GROUP BY PROJECTID

First of all, you should re-arrange the $viewdata1 data structure . Basically, separate between the main Project data fields and the task data fields, then combine them in a better way..

My assumptions are :
1. [ task, ExpenseName, ExpenseAmount, pn, cname, taskcost, amount, datetimepicker_mask ] => are all task data fields
2. [ projectname , employee ] => are all project data fields

In your model (let's name it project_model ),
1. have a function that queries ONLY [ projectname or employee or the projectID or all other project data fields ] , let's name it allProject() . make sure it return something like

[ 
  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. have a function that searches/queries [ task, ExpenseName, ExpenseAmount, pn, cname, taskcost, amount, datetimepicker_mask ] based on [ projectname or the projectID ] ... let's name it task_query(projectID) ... make sure it return something like

[
  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.
]

In the controller ,

$data['viewdata1'] = $this->project_model->allProject();
foreach($data['viewdata1'] as $key => $value)
{
  $value['taskData'] = $this->project_model->task_query($value['id']);
}

the $data['viewdata1'] should look like...

[ 
  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... 
]

you are all set for the view

<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>
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>

Try like this inside your foreach i have not tired it but it may work and you may get some ideas. Here at first loop it will check $key, at first it will be 0 and $first variable will be true if $key is not 0 then it will check $project name to the loop project name if it does not matches it will replace it. Use same for client and other column you want to remove or empty. I hope this works or it gives you some idea.

Use in_array() function and set your colspan and rowspan for your td

Use the following Code in your view page,

<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>

This is my way of dealing with it. I hope this is the same as the problem you encounter :)

*important, variables $dcost and $cd are variables that I set myself, please adjust it to what you have

before 之前 after 后 before code

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>';}

after code

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;">&nbsp;</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>';}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM