Данные массива PHP для печати в таблице HTML - PullRequest
0 голосов
/ 20 октября 2019

У меня есть массив, который включает в себя набор записей, сгенерированный моделью codeigniter.

Я пытался распечатать эти записи в таблице HTML, используя мое представление. Мое представление выглядит следующим образом:

<html>
<head>
    <title>Fuel Order:</title>
</head>
<body onload="window.print()">
<body>
<div class="col-xs-12 table-responsive">
<table class="table table-bordered"  style="font-size: 11px; ">
<tbody>
<?php
    if (!empty($printData)) {
        foreach ($printData as $item) {
?>
            <tr>        
                <td><p style="position: absolute;top: 20cm;right: 14cm"><?=$item->item_name?></p></td>
                <td><p style="position: absolute;top: 20cm;right: 11.5cm"><?=$item->fuel_qty?> Litres</p></td>
                <td><p style="position: absolute;top: 20cm;right: 6.5cm"><?=$this->amount_word?></p></td>                           
            </tr>           
</tbody>
</table>
</div>

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

Представление работает нормально, за исключением того, что записи накладываются друг на друга.

Ответы [ 3 ]

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

Если у вас есть более одной записи, вам нужно изменить верх: по высоте набора значений или по высоте предварительно напечатанной сетки

Также убедитесь, что цикл замкнут ДО ДО </tbody>

<table class="table table-bordered"  style="font-size: 11px; ">
<tbody>
<?php
if (!empty($printData)) {
  $offset=2; // cm
  $cnt=0;
  foreach ($printData as $item) {
?>
<tr>        
  <td><p style="position: absolute;top: <?= ($cnt*$offset)+20 ?>cm;right: 14cm"><?=$item->item_name?></p></td>
  <td><p style="position: absolute;top: <?= ($cnt*$offset)+20 ?>cm;right: 11.5cm"><?=$item->fuel_qty?> Litres</p></td>
  <td><p style="position: absolute;top: <?= ($cnt*$offset)+20 ?>cm;right: 6.5cm"><?=$this->amount_word?></p></td>                           
</tr> 
<? $cnt++; 
  } // close your foreach HERE
  ?>
</tbody>
1 голос
/ 20 октября 2019

Удалить атрибуты стиля из тегов <p>;все они не могут иметь одинаковые позиции.

Вместо этого установите позицию стола.

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

Полагаю, вам следует закрыть цикл foreach внутри таблицы, но в настоящее время вы закрыли его за пределами таблицы. Также поместите оператор if перед тегом table и ... (здесь у вас есть тег 2 body !). Лучше использовать ваши операторы , как приведенные ниже коды (с символом : , чтобы не путать), удалите position: absolute, потому что это делает ваши элементы иметь новые координаты в соответствии сродитель с нестатической позицией (если вам нужно переместить его, установите position: relative для них, потому что он перемещает ваш элемент в соответствии с его родителем). В заключение:

<html>
<head>
    <title>Fuel Order:</title>
</head>
<body onload="window.print()">
<div class="col-xs-12 table-responsive">
    <?php if (!empty($printData)): ?>
        <table class="table table-bordered" style="font-size: 11px;">
            <tbody>
            <?php foreach ($printData as $item): ?>
                <tr>
                    <td><p><?= $item->item_name ?></p></td>
                    <td><p><?= $item->fuel_qty ?> Litres</p></td>
                    <td><p><?= $this->amount_word ?></p></td>
                </tr>
            <?php endforeach; ?>
            </tbody>
        </table>
    <?php endif; ?>
</div>
</body>
</html>

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...