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>
Юлька привет, ох наворотила чего-то... Покажи что лежит в $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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP