Jump to content

[Vyriešené / Solved] Hmotnosť atribútov produktov v tabuľke order_detail


retep

Recommended Posts

Predkladám zákazníkovi ako pomocnú informáciu celkovú hmotnosť košíka. Toto funguje v poriadku, pretože hmotnosti sú pokaždé počítané z tabuľky products a zohľadňované sú aj atribúty.
Pri vytváraní objednávky sú však už hmotnosti jednotlivých produktov ukladané priamo do tb order_detail. Hmotnosť samostatného alebo primárneho produktu (default_on = 1 v product_attribute) je v poriadku.

Pri inom atribúte (default_on = 0) však skript ukladá len hodnotu weight z tb product_attribute, t.z. o akú sa hmotnosť atribútu odlišuje od primárneho produktu (napr. -230).

Údaj o hmotnosti atribútu vkladá do tb order_detail tento výraz (r. 205 PaymentModule.php)
'.floatval(array_key_exists('id_product_attribute', $product) ? $product['weight_attribute'] : $product['weight']).',

Nerozumiem tomu výrazu, potreboval by som pomoc, ako docieliť, že pri atribúte bude ukladať napr. toto ($product['weight_attribute']+$product['weight'])

Vďaka za pomoc.

Link to comment
Share on other sites


Údaj o hmotnosti atribútu vkladá do tb order_detail tento výraz (r. 205 PaymentModule.php)
'.floatval(array_key_exists('id_product_attribute', $product) ? $product['weight_attribute'] : $product['weight']).',

Nerozumiem tomu výrazu, potreboval by som pomoc, ako docieliť, že pri atribúte bude ukladať napr. toto ($product['weight_attribute']+$product['weight'])


Jedná se o tzv. ternární operátor, který se dá rozepsat takto:

array_key_exists('id_product_attribute', $product) ? $product['weight_attribute'] : $product['weight']


je to samé jako

if (array_key_exists('id_product_attribute', $product))
   $product['weight_attribute']
else
   $product['weight']



Pokud tedy pole $product obsahuje klíč 'id_product_attribute', pak výsledkem výrazu (a vstupem pro funkci floatval) bude $product['weight_attribute'] jinak $product['weight'].

HTH

Link to comment
Share on other sites

Vďaka za vysvetlenie.
Takže ak za $product[‘weight_attribute’] dosadím moje ($product[‘weight_attribute’]+$product[‘weight’]) dosiahnem to čo chcem, ak som to správne pochopil.

Vyskúšam, uvidíme.

Link to comment
Share on other sites

Takže som skúsil, a naozaj je to tak. ešte raz vďaka za vysvetlenie.

Zistil som však, že v tejto časti je už hmotnosť atribútu pevne daná, a nedá sa s tým už nič robiť.
Údaje pre tento insert sú získavané z $products = $cart->getProducts(); (riadok 140, PaymentModule.php).

Úpravou fce getProducts() v Cart.php
pôvodný riadok (r. 214, Cart.php|

IF (IFNULL(pa.`weight`, 0) = \'\', p.`weight`, p.`weight`) AS weight_attribute,


som nahradil týmto
IF (IFNULL(pa.`weight`, 0) = \'\', p.`weight`, (p.`weight` + pa.`weight`)) AS weight_attribute,


a hmotnosti atribútov produktov v order_detail sú konečne OK.
takže vyriešené.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...