retep Posted October 26, 2009 Share Posted October 26, 2009 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 More sharing options...
naro Posted October 26, 2009 Share Posted October 26, 2009 Ú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 More sharing options...
retep Posted October 26, 2009 Author Share Posted October 26, 2009 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 More sharing options...
retep Posted October 27, 2009 Author Share Posted October 27, 2009 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.phppôvodný riadok (r. 214, Cart.php| IF (IFNULL(pa.`weight`, 0) = \'\', p.`weight`, p.`weight`) AS weight_attribute, som nahradil týmtoIF (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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now