phpcodeigniter-3

How Set date in month to column table with codeigniter


I try to create a table with a date column within a month, I want to try to enter the date that I have into the table but I do not understand its logic ..

<?php
    $Month = date('m');
    $Year = date('Y');
    $day = cal_days_in_month(CAL_GREGORIAN, $Month ,$Year);

    $q = $this->db->select('nm_py, dt_start,dt_finish')->from('tb_payment')->get();
    $data = $q->result_array();

    //example data nm_py : Mobile, dt_start: 2018-05-02, dt_finish: 2018-05-05
    //example table output as expected
    // | NO| Payment | Month
    // |___|_________| 1 | 2 | 3 | 4 | 5 | 6 | 7 | xxxxx
    // | 1 |  Mobile | - | Y | Y | Y | Y | - | - | xxxxxx
?>

<table>
    <thead>
    <tr>
        <th class="text-center">No</th>
        <th class="text-center">Payment</th>
        <th class="text-center" colspan="<?php echo $day; ?>">Month</th>
    </tr>
    <tr>
        <th class="text-left"></th>
        <th class="text-left"></th>
        <?php
            for ($x = 1; $x <= $day; $x++) {
                echo "<th class='text-center'>".$x."</th>";
            }       
        ?>
    </tr>
    <thead>  
    <tbody>
        <?php $no = 1; foreach($data as $row) { ?>

        <?php $no++; }?>
    </tbody>
</table>

Solution

  • You can use date_create to get day see working code bellow :

    <?php
    
       $q = $this->db->select('nm_py, dt_start,dt_finish')->from('tb_payment')->get();
        $data = $q->result_array();
    
        //example data nm_py : Mobile, dt_start: 2018-05-02, dt_finish: 2018-05-05
        //example table output as expected
        // | NO| Payment | Month
        // |___|_________| 1 | 2 | 3 | 4 | 5 | 6 | 7 | xxxxx
        // | 1 |  Mobile | - | Y | Y | Y | Y | - | - | xxxxxx
    ?>
    
    <table>
        <thead>
        <tr>
            <th class="text-center">No</th>
            <th class="text-center">Payment</th>
            <th class="text-center" colspan="<?php echo $day; ?>">Month</th>
        </tr>
        <tr>
            <th class="text-left"></th>
            <th class="text-left"></th>
            <?php
                for ($x = 1; $x <= $day; $x++) {
                    echo "<th class='text-center'>".$x."</th>";
                }       
            ?>
        </tr>
        <thead>  
        <tbody>
            <?php $no=1; foreach($data as $row) { 
    
                     echo "<tr>";
                     echo "<td class='text-center'>".$no."</td>";
                     echo "<td class='text-center'>".$row['nm_py']."</td>";
    
                    // days values
                    $day_start=date_create($row['dt_start']);
                    $day_end=date_create($row['dt_finish']);
    
            for ($x = 1; $x <= $day; $x++) {
    
                if($x >=$day_start->format('d') and $x <=$day_end->format('d'))
                     echo "<td class='text-center'>Y</td>";
                 else
                      echo "<td class='text-center'>-</td>";
    
            }echo "</tr>";
            $no++;
              }?>
        </tbody>
    </table>