[Помогите] Корректный вывод значений из базы данных

Тема в разделе "OpenCart", создана пользователем 130983, 11 ноя 2017.

  1. 130983

    130983

    Регистрация:
    10 дек 2012
    Сообщения:
    172
    Симпатии:
    146
    Всем привет! Возникла необходимость привязать к категориям дополнительное значение, но создавать новое поле в бд в моем случае нельзя, поэтому решил использовать поле column а заносить данные через "+" таким вот образом например "0+3" или же без дополнительных значений (это не всегда требуется) как по дефолту например "0" Для того чтобы в контроллере header.php (а я "вытаскиваю" их там) решил использовать php функцию explode код оформил таким образом
    PHP:
                    $new_data explode('+'$category['column']);
                    
    $column $new_data[0];
                    
    $new_data false;
                    if (
    $new_data[1]) {
                    
    $style $new_data[1];
                    } 
    дальше в массив $data['categories'][] = array(
    добавил
    'column' => $column,
    'style' => $style,

    на выходе получаю ошибку Notice: Undefined offset: 1 in C:\OpenServer\OpenServer\domains\localhost\ то есть колонки успешно отделяются а со style проблема так как в некоторых полях он не вносится. Никто не подскажет как правильно написать это в php чтоб при всех значениях $category['column'] происходило правильное выделение данных. Спасибо.
     
  2. ISomeInterface

    ISomeInterface

    Регистрация:
    4 окт 2016
    Сообщения:
    106
    Симпатии:
    76
    PHP:
    $new_data explode('+'$category['column']);
    $column $new_data[0];
    isset(
    $new_data[1]) ? $style $new_data[1] : $style "";
     
    Master2KAZ нравится это.
  3. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    Что-то я не пойму. Вы сначала определяете $new_data как массив, потом как булеву переменную, потом опять обращаетесь как массиву. Для чего нужно $new_data = false;?

    Вот ISomeInterface понятно описал.

    И еще один непонятный момент. Насколько мне известно поле column имеет тип int(3). Вы уверены, что оно сохраняет значения типа "0+style"?

    Насколько я понимаю, Вам все-таки придется добавить еще одно поле, либо еще одну таблицу типа oc_category_to_style. Либо, если уж совсем принципиально нельзя трогать БД, придумать как сохранить дополнительные настройки в $config, например в формате json.
     
    Последнее редактирование: 11 ноя 2017