Как напечатать набор записей, используя массив? - PullRequest
0 голосов
/ 20 октября 2019

Моя модель Codeigniter извлекает две записи из набора записей. Это правильно.

Я пытался напечатать эти две записи в виде HTML.

Контроллер

public function printFuel($id){     
        $this->data['printData']=$this->Fuel_model->directFuelById($id);                
        $this->load->view('/template/directFuel/printFuel',  $this->data);        
}

Модель

public function directFuelById($id) {       
        $this->db->select('store_item.item_name, tbl_direct_fuel_details.fuel_qty');
        $this->db->from('tbl_direct_fuel_details');
        $this->db->join('tbl_direct_fuel', 'tbl_direct_fuel_details.direct_fuel_id=tbl_direct_fuel.direct_fuel_id', 'inner');

        $this->db->join('store_item','tbl_direct_fuel_details.item=store_item.item_id');
        $this->db->where('tbl_direct_fuel.status=1 and tbl_direct_fuel_details.direct_fuel_id="'.$id.'"');
        $this->db->order_by('tbl_direct_fuel.direct_fuel_id','DESC');
        $q = $this->db->get();
         if ($q->num_rows() > 0) {
            return $q->result();
        }
        return false;
    }

Просмотр

    <?php
    if (!empty($printData)) {
        $printData = $printData[0];
    }
    ?>

<html>
<head>
    <title>Fuel Order::Vehicle Management System </title>



</head>
<body onload="window.print()">
<body>

    <?php
    if (!empty($printData)) {
        ?>       

           <p style="position: absolute;top: 20cm;right: 14cm"><?=$printData->item_name?></p>
           <p style="position: absolute;top: 20cm;right: 11.5cm"><?=$printData->fuel_qty?> Litres</p>

        <?php
    }
    ?>
</body>
</html>

Но печатается только первая запись. Если бы я использовал, var_dump ($ printData);exit (), можно получить следующий вывод.

["item_name"]=> string(5) "DOT 3" ["fuel_qty"]=> string(4)
"1.00" 

Требуемый вывод

Необходимо напечатать две записи в виде HTML следующим образом

+-----------+----------+
| item_name | fuel_qty |
+-----------+----------+
| DOT 3     |     1.00 |
| DOT 4     |     2.00 |
+-----------+----------+

Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 20 октября 2019

У вас есть две записи, первая хранится в переменной с именем $printData, и вы показываете ее атрибуты item_name и fuel_qty. Однако, если у вас есть две записи, вам нужно будет зациклить коллекцию, которая содержит ваши записи, и отобразить ее значения.

РЕДАКТИРОВАТЬ

Вы учитываете только первую запись на

if (!empty($printData)) {
    $printData = $printData[0];
}

Если $printData не пусто, то ему будет присвоен первый элемент. Удалите if выше и измените ваш следующий PHP-код, вы должны получить что-то вроде этого:

<html>
<head>
    <title>Fuel Order::Vehicle Management System </title>



</head>
<body onload="window.print()">
<body>

    <?php
    if (!empty($printData)) {
        foreach ($printData as $item) {
        ?>       
           <p style="position: absolute;top: 20cm;right: 14cm"><?=$item->item_name?></p>
           <p style="position: absolute;top: 20cm;right: 11.5cm"><?=$item->fuel_qty?> Litres</p>

        <?php
        }
    }
    ?>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...