Давно мучал вопрос. Люди просили. В итоге, родил, ну, точнее, не то, чтобы родил, скорее поскрипел мозгом и вспомнил про оператор MySQL…Собственно, вот она — заветная строчка для Virtuemart 1.1.x:
[cc lang=’sql’ ]UPDATE `jos_vm_product_price` SET `product_price`=ROUND(product_price+(product_price/100*18), -1)[/cc]
Теперь опишу, что вся эта ботва значит 🙂
Ну, UPDATE— это оператор обновления столбца в таблице. Причем, jos_vm_product_price— это таблица, где сидят цены, а product_price— это столбец с ценами.
Вот что говорит mysql.ru по этом операторе:
Оператор UPDATE обновляет столбцы в соответствии с их новыми значениями в строках существующей таблицы.
самое интересное идет после SET:
`product_price`=ROUND(product_price+(product_price/100*18), -1)
Что это значит. берем столбец product_priceи ко всем значениям в нем добавляем 18% (product_price+(product_price/100*18)). Полученный результат ОКРУГЛЯЕМ (ROUND) до десяти (параметр «-1«).
Вообще, оператор ROUND (X, Y) — очень в нашем деле полезная штука. X — это что округляем, а Y — насколько. Причем, если поставить «0» — будет округлять до ближайшего целого. Если «1» — будет float до десятых (10 копеек), если «2» — до сотых (до копейки). Соответственно, если поставить «-1» — он округлит до 10 рублей, если «-2» — до ста рублей.
Теперь для тех, кто в танке или только что из ГТТ вылез.
Сам по себе запрос — штука бесполезная, просто набор букв. В том виде, как он записан здесь — его надо исполнять в phpMyAdmin или другом редакторе базы. Кстати, эти апострофы находятся на букве Ё.
Для того, чтобы его адаптировать под исполнение в PHP ничего особо не требуется, просто надо прочитать на php.net, как работать с запросами в базу данных MySQL и и все станет ясно как день.