Вывод данных из базы - 2.х

 
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
Для icms2

Данные из базы в шаблон можно вывести такой конструкцией: $item['title']

Вопрос в следующем, как вывести в шаблон значения, если они записаны в таком виде:


---
-
title: 'bla bla bla'
description: bla bla bla
-
title: BLA BLA BLA
description: bla bla bla
-
title: >
bla bla bla
bla!!!
description: bla bla bla

По идеи должно быть что то вроде такого:

Код PHP:
  1.  
  2. <?php $myitems = $item['myitems']; ?>
  3.  
  4. <ul>
  5. <?php foreach($myitems as $itemo){ ?>
  6. <li>
  7. <p><?php echo html($itemo['title']);?></p>
  8. <p><?php echo html($itemo['description']);?></p>
  9. </li>
  10. <?php }?>
  11. </ul>
  12.  
Но так не работает...

Переменная $myitems принимает данные из базы,
echo $myitems; - выводит содержимое...

Понимаю что не правильна указана эта конструкция
$itemo['title'];

Изменял ее как угодно методом научного тыка, но безрезультатно)

Как правильно? ....пока иду гуглить, может встретится что то подобное)
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проекта
Сообщений: 1356
$item['myitems']; У вас точно массив???? или одно значение?

Код PHP:
  1. print_r($item['myitems']);
А то массива нет и данные не выводятся
Фриланс по Intantcms 1 и 2 версий.Писать в ЛС. Отзывы заказчиков
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
kirkr:
У вас точно массив???? или одно значение?

До записи в базу точно массив) а то что в базе получается - не знаю)

Должен быть по идее массив, но при выводе через echo/print_r выводит все в одну строку...
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
Немного поясню что делаю:

Есть массив $item['myitems'] который отлично выводится конструкцией:

Спойлер
Записываем этот массив в базу: $this->model->addItem($item)

... тут же помимо массива записываются и другие переменные $item['myvar']

Вот все что не массив $item['myvar'] - выводится без проблем)

А то что было массивом до записи (не знаю чем стало) $item['myitems'] - само значение выводится, а так ка до записи в базу, что бы все по отдельности не хочет.

Начинаю понимать что массив после записи становится не массивом...

В общем нужны любые идеи и предложения...
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
Что бы массив остался массивом, его нужно как то специально записывать?
Тип поля в базе?
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3501
reload, если известно какое поле нужно вывести таким образом, то достаточно вывести так
Код PHP:
  1. $item['myvar'] = cmsModel::yamlToArray($item['myvar']);
Редактировалось: 1 раз (Последний: 10 февраля 2016 в 09:43)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
Loadырь, спасибо! получилось!)
Редактировалось: 1 раз (Последний: 10 февраля 2016 в 10:18)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
И последний вопрос:

Как в шаблоне контроллера проверить есть переменная в базе или нет?

Простая проверка по типу if (empty($var)) {
не катит, так как эта переменная в шаблоне есть всегда, но в базе ее может не быть)

Типа если в базе НЕТ значения, то выводим значение, которое задано заранее, если есть в базе, то выводим значение из базы...
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3501
Код PHP:
  1. $var = isset($var_in_bd) ? $var_in_bd : $var_default;
smile
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
Loadырь, на данный момент у меня одна переменная $var_in
И она должна принимать значение по умолчанию например "555" , но если в базе есть свое значение для этой переменнй, то выводить то что записано в базе)

То есть нет у меня $var_in_bd и $var_default - есть только $var_in которая изначальна равна "555"


В общем фишка в том, что тот массив, который нужно выводить,

до записи в базу выводится так: $item['myvar']

а если выводить из базы (как уже определили), так: cmsModel::yamlToArray($item['myvar'])


Пока массив не записан в базу, этим $item['myvar'] выводится, а этим cmsModel::yamlToArray($item['myvar']) не выводится)

А если уже берем "массив" из базы, то наоборот этим cmsModel::yamlToArray($item['myvar']) выводится , а этим $item['myvar']нет)

В общем как то там не правильно записывается в базу, но бог с ним, главное что можно вывести)

Вот из-за этого появилась необходимость проверки.

По умолчанию в шаблоне контролера выводим $item['myvar'], но если в базе есть запись то заменять на cmsModel::yamlToArray($item['myvar'])
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
Получается что $item['myvar'] существует всегда, но не всегда есть в базе!)

Если в базе есть, то нужно выводить немного иначе...
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 692
Код PHP:
  1.  
  2. $my_var = cmsModel::yamlToArray($item['myvar']);
  3. $my_var = !empty($my_var) ? $my_var : 555;
  4.  
Skype: pasha--g
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3501
reload:
нет у меня $var_in_bd и $var_default
ни у кого их нет. это так, для примера.
В БД все массивы сохраняются в виде строки, иначе никак. Ваша задача получить значение этой ячейки из БД, преобразовать из строки в массив и присвоить её значение вашей переменной. А дальше посмотреть что есть в этой переменной. и действовать исходя из результата.
как то так
Код PHP:
  1. $var_default = '555';
  2. $var_in_bd = cmsModel::yamlToArray($item['myvar']);
  3. $var = $var_in_bd ? $var_in_bd : $var_default;
  4. echo $var
  5. // или сокращённо
  6. $var_in_bd = cmsModel::yamlToArray($item['myvar']);
  7. echo $var_in_bd ? $var_in_bd : '555';
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
Pasha, Loadырь, СПАСИБО!

потер... тупанул)

Все пашет! Еще раз спасибо!
Редактировалось: 3 раз (Последний: 10 февраля 2016 в 12:31)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
Решено!
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: