TransWikia.com

Пустое значение в бд смещает ячейку в таблице yii2

Stack Overflow на русском Asked on August 11, 2020

Подскажите, пожалуйста, вывожу данные из бд через htmlspecialchars, если в бд пустое значение ячейка смещается:

Код:

<table class="table table-hover table-striped table-icon jus-table-list">
                        <tr>
                            <th scope="col">горючее</th>
                            <th scope="col">дата</th>
                        </tr>
                        <tr>
                            <?php foreach($models23 as $model):?>
                                <td><?= htmlspecialchars($model['sklad_goruchego'])?></td>
                            <?php endforeach;?>
                                <td><?= Yii::$app->formatter->asDatetime(time(), "php:01.m.Y"); ?></td>
                        </tr>
                        <tr>
                            <?php foreach($models23_1 as $model):?>
                                <td><?= htmlspecialchars($model['sklad_goruchego'])?></td>
                            <?php endforeach;?>
                            <td><?= Yii::$app->formatter->asDatetime(time(), "php:d.m.Y"); ?></td>
                        </tr>
                    </table>

One Answer

Юлька привет, ох наворотила чего-то... Покажи что лежит в $models23 и $models23_1, так понятнее станет, скорее всего у тебя холостые массивы и ячейки просто не создаются)))

Смотри, ты выводиш таблицу по запросу, значит поидее массив должен быть один, как я вижу:

<?php $models = [
    [
        'fuel' => '95',
        'date' => '2020-01-18 12:34:58',
    ],
    [
        'fuel' => '92',
        'date' => '2020-03-18 15:40:34',
    ],
    [
        'fuel' => null,
        'date' => '2020-04-15 18:32:15',
    ],
    [
        'fuel' => '98',
        'date' => null,
    ],
] ?>

<table class="table table-hover table-striped table-icon jus-table-list">

    <tr>
        <th scope="col">горючее</th>
        <th scope="col">дата</th>
    </tr>

    <?php foreach ($models as $model): ?>
        <tr>
            <td><?= htmlspecialchars($model['fuel']) ?></td>
            <td><?= Yii::$app->formatter->asDatetime($model['date'], "php:01.m.Y") ?></td>
        </tr>
    <?php endforeach; ?>

</table>

А вообще если на Yii2 делаешь, проще GridView использовать)

Привет, @МихаилДинов! В $models23 лежит: $models23 = new SkladGoruchee(); $models23 = SkladGoruchee::find()->where(['<=','date', date('Y-m-01 23:59:59')])->orderBy(['date'=>SORT_DESC])->limit(1)->all(); $models23_1 = SkladGoruchee::find()->where(['<=','date', date('Y-m-d 23:59:59')])->orderBy(['date'=>SORT_DESC])->limit(1)->all(); Суть в том, что мне и не нужно, чтобы дата выводилась из бд, а нужно, чтобы в первой строке была инфа на 1 число месяца, а во второй строке на дату просмотра. Поэтому и пришлось придумывать как отобразить в dashboard. Но все равно, спасибо за помощь!

<?php

$dataForStartMonth = SkladGoruchee::find()
    ->where(['<=', 'date', date('Y-m-01 23:59:59')])
    ->orderBy(['date' => SORT_DESC])
    ->one();

$dataForNow = SkladGoruchee::find()
    ->where(['<=', 'date', date('Y-m-d 23:59:59')])
    ->orderBy(['date' => SORT_DESC])
    ->one();
?>

<table class="table table-hover table-striped table-icon jus-table-list">
    <tr>
        <th scope="col">горючее</th>
        <th scope="col">дата</th>
    </tr>
    <tr>
        <td><?= !is_null($dataForStartMonth) ? htmlspecialchars($dataForStartMonth->sklad_goruchego) : null ?></td>
        <td><?= Yii::$app->formatter->asDatetime(time(), 'php:01.m.Y') ?></td>
    </tr>
    <tr>
        <td><?= !is_null($dataForNow) ? htmlspecialchars($dataForNow->sklad_goruchego) : null ?></td>
        <td><?= Yii::$app->formatter->asDatetime(time(), 'php:d.m.Y') ?></td>
    </tr>
</table>

Если нужно вытащить только одну запись из бд, используй метод one() вместо all(), так вместо массива с одним объектом получишь просто объект.

Correct answer by Михаил Динов on August 11, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP