Как упростить конструкцию вывода из БД PHP?

183
12 октября 2018, 02:30

Есть конструкция вида:

     If($y['kabala'] == "Легкая")                     echo '<img>Хорошая.жпег</img>';
     elseif ($y['kabala'] == "Тяжелая")               echo '<img>Плохая.жпег</img>';  
     elseif ($y['kabala'] == "Страшная")              echo '<img>Злая.жпег</img>';
     elseif ($y['kabala'] == "ЛегкаяТяжелая")         echo '<img>Хорошая.жпег</img> <img>Плохая.жпег</img>';  
     elseif ($y['kabala'] == "ЛегкаяТяжелаяСтрашная") echo '<img>Злая.жпег</img> <img>Плохая.жпег</img> <img>Злая.жпег</img>';  

То есть, при совпадении: выводит вариант картинок ( одну, или несколько).
Данные в базе записаны в виде различных комбинаций(без пробела).

Таких комбинаций более 20.

Будет ли лучше, если в БД будет не одно поле "Kabala" а например отдельно: Kabala1, Kabala2 и т.д, и Просто выводить при совпадении, иначе НИЧЕГО?

Какие еще более простые варианты можете предложить?
Спасибо!

Answer 1

Примерно так

Таблица справочник

CREATE TABLE kabalaDict(
    kabalaId BYTE,
    kabala VARCHAR,
    jpegName VARCHAR
)

Таблица связи какой-то вашей сущности с разными kabala'ми

CREATE TABLE kabala(
    entityId INT,
    kabalaId BYTE
)

В коде вычитываете справочник

$kabalaDictRaw = $dbLink
     ->query('SELECT kabalaId, jpegName FROM kabalaDict')
     ->fetchAll(\PDO::FETCH_ASSOC);
$kabalaDict = [];
foreach($kabalaDictRaw as $kabala){
    $kabalaDict[$kabala['kabalaId']] = $kabala['jpegName'];
}

Получаем данные по своей сущности и печатаем html

$currentKabala = $dbLink
    ->query('SELECT kabalaId FROM kabala')
    ->fetchAll(\PDO::FETCH_COLUMN, 1);
foreach($currentKabala as $kabala){
    echo '<img>'.$kabalaDick[$kabala].'</img>';
}
READ ALSO
Проблема передачи строки из PHP в JS

Проблема передачи строки из PHP в JS

Разработанный сайт исправно работает без ошибок на локальном сервереОднако на хостинге возникают проблемы

201
Автоматическая очистка полей

Автоматическая очистка полей

Как убрать автоматическую очистку полей в php? Те когда пользователь заполняет поля, и нажимает на кнопку, то поля очищаются

163
Нужно убрать Jquery из Yii2

Нужно убрать Jquery из Yii2

Убрать Jquery из yii2Дело в том что скрипты самого yii задействуют jquery, и хочется просто вырезать jq из сайта вообще

188