umolot 0 Опубликовано 27 декабря, 2014 Жалоба Share Опубликовано 27 декабря, 2014 Уважаемые фуромчане, прошу помочь в решении такой задачи. Мне необходимо в описании товара изменить разрядность в поле "вес товара". У меня товар очень мелкий, и для корректного расчёта стоимости доставки мне нужно указывать вес единицы товара с точностью, хотя бы, до четырёх, или даже до пяти знаков после запятой. Сейчас указывается три знака (до грамма). Через PhpMyAdmin я изменил разрядность поля product_weight в таблице products. Было decimal(6,3), стало decimal(8,5). И всё вроде бы хорошо, но только до первого обращения к базе со страницы редактирования товаров (каталог/категории/товары). После такого обращения размерность поля вновь меняется на decimal(6,3). Если редактирую товар со страницы (.../admin/quick_updates.php) или разное/изменение цен, то все нормально. Судя по всему при записи в базу данных происходит её "ремонт", но где находится эта функция или где хранится исходная конфигурация таблиц базы данных найти не могу. Бьюсь уже неделю, голова уже квадратная. Помогите кто может. Как предотвратить изменение (восстановление) разрядности поля product_weight? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 27 декабря, 2014 Жалоба Share Опубликовано 27 декабря, 2014 Я так подозреваю, где-то используется number_format, т.е. округляются значения. Нужно искать где и убирать. Видимо, где-то в /includes/classes/shipping.php, /includes/classes/shopping_cart.php /includes/classes/product.php Вес искать нужно по слову weight т.е. в базе Вы поменяли, теперь надо найти где php округляет значения. Ссылка на сообщение Поделиться на другие сайты
umolot 0 Опубликовано 29 декабря, 2014 Автор Жалоба Share Опубликовано 29 декабря, 2014 Дело в том, что меняется не просто значение веса, а меняется (возвращается к исходному значению) размерность поля именно в базе. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 29 декабря, 2014 Жалоба Share Опубликовано 29 декабря, 2014 php скрипт не может менять размерность поля в базе данных, точнее как, в принципе конечно может, но в коде такого кода нет. Почти наверняка просто округляется значение, к примеру, до двух знаков после запятой и записывается в базу. Ссылка на сообщение Поделиться на другие сайты
umolot 0 Опубликовано 30 декабря, 2014 Автор Жалоба Share Опубликовано 30 декабря, 2014 Ещё раз проверил всё, что мог. Меняется именно размерность поля в базе данных. Я смотрю её в phpmyadmin. Какие могут быть варианты? Я прошу прощения за навязчивость. А Вы не могли бы провести эксперимент с увеличением дробной части поля products_weight на какой-нибудь демоверсии (какую не жалко)? Таблица: PRODUCTS Поле: products_weight Старое значение: decimal(6,3) Новое значение: decimal(7,4) А затем переход к редактированию товара или к созданию нового со страницы ...../admin/categories.php Дальше уже ничего не нужно делать. Т.е. даже редактировать товар и сохранять новые значения не нужно. После этого перехода размерность поля уже возвращается к старому значению. Я понимаю, что такого не может быть. Просмотрел кажется уже весь, задействованный в этих операциях код. Нет и намёка на операторы способные на такую "бяку" и тем не менее у меня всё происходит именно так. Пробовал менять размерность других полей. Там всё нормально. Такая метаморфоза свойственна только полю products_weight. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 31 декабря, 2014 Жалоба Share Опубликовано 31 декабря, 2014 Да, странно, меняешь тип колонки в phpMyAdmin, всё меняется. Затем заходишь на страницу редактирования товара и в базе тип колонки возвращается. Я даже и не знаю, что сказать. Не знаю, почему меняется назад на 6,3, первый раз такое встречаю. Вроде код за сохрение данных о товаре в /admin/includes/classes/categories.php Но там, по идее, нет кода изменения типа колонки. Ссылка на сообщение Поделиться на другие сайты
umolot 0 Опубликовано 1 января, 2015 Автор Жалоба Share Опубликовано 1 января, 2015 Ну слава богу не у меня одного. А то я уже думал у меня "глюки". Попробую просто задействовать новое поле. Ссылка на сообщение Поделиться на другие сайты
umolot 0 Опубликовано 1 января, 2015 Автор Жалоба Share Опубликовано 1 января, 2015 Создал новое поле, слегка поменяв название. Выправил, вроде бы, весь код во всех файлах, использующих вес товара. Всё работает. Но, что происходило со штатным полем для веса товара так и осталось тайной. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 января, 2015 Жалоба Share Опубликовано 2 января, 2015 Да, интересный глюк, не спорю. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения