Перейти к содержанию
Форум поддержки пользователей VamShop

Требуется помощь


Рекомендуемые сообщения

Уважаемые фуромчане, прошу помочь в решении такой задачи.

Мне необходимо в описании товара изменить разрядность в поле "вес товара".

У меня товар очень мелкий, и для корректного расчёта стоимости доставки мне нужно указывать вес единицы товара с точностью, хотя бы, до четырёх, или даже до пяти знаков после запятой. Сейчас указывается три знака (до грамма).

Через PhpMyAdmin я изменил разрядность поля product_weight в таблице products. 

Было  decimal(6,3),  стало decimal(8,5).

И всё вроде бы хорошо, но только до первого обращения к базе со страницы редактирования товаров (каталог/категории/товары).

После такого обращения размерность поля вновь меняется на decimal(6,3).

Если редактирую товар со страницы (.../admin/quick_updates.php) или разное/изменение цен, то все нормально.

Судя по всему при записи в базу данных происходит её "ремонт", но где находится эта функция или где хранится исходная конфигурация таблиц базы данных найти не могу.

Бьюсь уже неделю, голова уже квадратная. Помогите кто может. Как предотвратить изменение (восстановление) разрядности поля product_weight? 

 

Ссылка на сообщение
Поделиться на другие сайты

Я так подозреваю, где-то используется number_format, т.е. округляются значения.

 

Нужно искать где и убирать.

 

Видимо, где-то в /includes/classes/shipping.php, /includes/classes/shopping_cart.php

/includes/classes/product.php

 

Вес искать нужно по слову weight

 

т.е. в базе Вы поменяли, теперь надо найти где php округляет значения.

Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что меняется не просто значение веса, а меняется (возвращается к исходному значению) размерность поля именно в базе.

Ссылка на сообщение
Поделиться на другие сайты

php скрипт не может менять размерность поля в базе данных, точнее как, в принципе конечно может, но в коде такого кода нет.

 

Почти наверняка просто округляется значение, к примеру, до двух знаков после запятой и записывается в базу.

Ссылка на сообщение
Поделиться на другие сайты

Ещё раз проверил всё, что мог. Меняется именно размерность поля в базе данных. Я смотрю её в phpmyadmin. Какие могут быть варианты?

Я прошу прощения за навязчивость. А Вы не могли бы провести эксперимент с увеличением дробной части поля products_weight на какой-нибудь демоверсии (какую не жалко)?

Таблица: PRODUCTS

Поле:  products_weight

Старое значение: decimal(6,3)

Новое значение: decimal(7,4)

А затем переход к редактированию товара или к созданию нового со страницы ...../admin/categories.php

Дальше уже ничего не нужно делать. Т.е. даже редактировать товар и сохранять новые значения не нужно. После этого перехода размерность поля уже возвращается к старому значению.

Я понимаю, что такого не может быть. Просмотрел кажется уже весь, задействованный в этих операциях код. Нет и намёка на операторы способные на такую "бяку" и тем не менее у меня всё происходит именно так.

Пробовал менять размерность других полей. Там всё нормально. Такая метаморфоза свойственна только полю products_weight.

   
 

Ссылка на сообщение
Поделиться на другие сайты

Да, странно, меняешь тип колонки в phpMyAdmin, всё меняется.

Затем заходишь на страницу редактирования товара и в базе тип колонки возвращается.

 

Я даже и не знаю, что сказать. Не знаю, почему меняется назад на 6,3, первый раз такое встречаю.

 

Вроде код за сохрение данных о товаре в /admin/includes/classes/categories.php 

Но там, по идее, нет кода изменения типа колонки.

Ссылка на сообщение
Поделиться на другие сайты

Ну слава богу не у меня одного. А то я уже думал у меня "глюки".

Попробую просто задействовать новое поле.

Ссылка на сообщение
Поделиться на другие сайты

Создал новое поле, слегка поменяв название. Выправил, вроде бы, весь код во всех файлах, использующих вес товара. Всё работает.

Но, что происходило со штатным полем для веса товара так и осталось тайной.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...