Zadejte hledaný výraz...

IF – více podmínek

Roman
verified
rating uzivatele
(55 hodnocení)
30. 10. 2019 17:59:45
Zdravím,
v košíku potřebuji zobrazit kód podle toho co košík obsahuje, znám ID produktů v košíku, podle toho potřebuji vypsat:
V košíku je ID 12 nebo 13 nebo 14
{if $product.id_product == 12 || $product.id_product == 13 || $product.id_product == 14}
**vypíšu kód produktů ID 15 a 16**
{elseif $product.id_product == 12 || $product.id_product == 13 || $product.id_product == 14 AND $product.id_product == 15}
**vypíšu kód produktu ID 16**
{elseif $product.id_product == 12 || $product.id_product == 13 || $product.id_product == 14 AND $product.id_product == 16}
**vypíšu kód produktu ID 15**
{else $product.id_product == 15 AND $product.id_product == 16}
**nechám prázdné**
V podstatě se mi jedná o to, že k určitým produktům zobrazuji dva produkty k dokoupení, a pokud jeden z nich přidám/je v košíku, tak zobrazím jen ten druhý, a pokud jsou v košíku oba tak nezobrazím nic.
Díky za rady!
30. 10. 2019 17:59:45
https://webtrh.cz/diskuse/if-vice-podminek/#reply1421970
TomasX
verified
rating uzivatele
(4 hodnocení)
30. 10. 2019 18:37:44
jestli chápu správně, máš nějaké produkty (12, 13, 14) a pokud se objeví v košíku, chceš vypsat jako doporučení produkty (15, 16), ale jen jestli je také nemá v košíku?
osobně bych si nachystal nejprve nějaké nastavení, proměnné a poté udělal univerzální smyčku, která to zpracuje.
Nevím, jak to chceš zobrazovat, jestli na řádku u daného produkty nebo až za výpisem produktů v košíku (tuhle variantu jsem zvolil teď já):
// od nekud si naplnis pole s vypisem produktu, ktere ma uzivatel v kosiku
$produkty_v_kosiku = ;
$produkty_k_doporuceni = Array();
// nachystam si nastaveni, ktere produkty doporucovat ke kterym
$produkty_k_doporuceni[] = ,
'doporuc' =>
];
// neni problem pridat i dalsi, tj. mit vice paru
$produkty_k_doporuceni[] = ,
'doporuc' =>
];
foreach($produkty_k_doporuceni as $doporuceni) {
// ma zakaznik v kosiku nejaky produkt, ke kterymu chceme neco doporucit?
// funkce intersect mi vrati prazdne pole pokud v kosiku neni zadny produkt z doporuceni
if (array_intersect($produkty_v_kosiku, $doporuceni)) {
// zjistit id produktu k doporuceni, tj. ty, ktere jeste nejsou v kosiku
$doporuc = array_diff($doporuceni, array_intersect($produkty_v_kosiku, $doporuceni));
// vypis produktu k doporuceni
// var_dump($doporuc);
}
}
30. 10. 2019 18:37:44
https://webtrh.cz/diskuse/if-vice-podminek/#reply1421969
Roman
verified
rating uzivatele
(55 hodnocení)
30. 10. 2019 19:31:17
Ano, pokud je nemá v košíku, vypsat, pokud má, nevypisovat.
Tak musím říct, že tady se nechytám vůbec :-) a tohle asi ani po tvé radě nerozjedu, co jsem udělal je tohle:
{foreach $products as $product}
{$product.id_product}
{/foreach}
{if $product.id_product == 8 || $product.id_product == 17 || $product.id_product == 18 || $product.id_product == 19 || $product.id_product == 20 || $product.id_product == 21 || $product.id_product == 22 || $product.id_product == 23}

Nezapomeňte dokoupit

{elseif $product.id_product == 8 || $product.id_product == 17 || $product.id_product == 18 || $product.id_product == 19 || $product.id_product == 20 || $product.id_product == 21 || $product.id_product == 22 || $product.id_product == 23 AND $product.id_product == 15}

Nezapomeňte dokoupit

Produkt Popis Cena

Produkt ID=15

  • 390 Kč
  • Produkt ID=25

  • 390 Kč
  • Produkt Popis Cena

    ID=25

  • 490 Kč

  • {elseif $product.id_product == 8 || $product.id_product == 17 || $product.id_product == 18 || $product.id_product == 19 || $product.id_product == 20 || $product.id_product == 21 || $product.id_product == 22 || $product.id_product == 23 AND $product.id_product == 25}

    ID=15

  • 490 Kč

  • {else}

    Všechno už máš

    {/if}
    Přes foreach se ve zdrojovém kódu zobrazují ID produktů, které jsou v košíku, pokud se IF nějakému rovná, zobrazí se dva produkty (ID=15 a ID=25), ELSEIF obsahuje ID produktů AND ID=15 zobrazí se produkt ID=25 (a naopak), jenže i když jsou v košíku oba (15 a 25) nezobrazí se ELSE ale jeden z 15 nebo 25.
    V kódu bude možná chybka, psal jsem to teď znovu sem
    30. 10. 2019 19:31:17
    https://webtrh.cz/diskuse/if-vice-podminek/#reply1421968
    chladek
    verified
    rating uzivatele
    (4 hodnocení)
    30. 10. 2019 23:13:01
    To máš úplně špatně. Foreach na začátku udělá jen to, že vypíše všechny ID a do $product přiřadí postupně všechny produkty z košíku a pak skončí, takže ve všech následujících podmínkách máš v $product poslední prvek z pole $products.
    I kdybys to obalil foreachem celé, tak to bude k ničemu, buď to přepiš podle Tomáše, nebo jestli to chceš řešit takhle krkolomně, tak foreach smaž a do těch podmínek použij in_array.
    30. 10. 2019 23:13:01
    https://webtrh.cz/diskuse/if-vice-podminek/#reply1421967
    Roman
    verified
    rating uzivatele
    (55 hodnocení)
    31. 10. 2019 05:00:12
    Zkusím dnes obě možnosti :-) díky.
    ---------- Příspěvek doplněn 31.10.2019 v 06:00 ----------
    Pokud to tedy chápu tak by to mělo vypadat nějak takhle
    {if in_array(12, $products)||in_array(13, $products)||14...}
    echo "'kód pro zobrazení ID produktů 15 a 16";
    {if ! in_array(15, $products)}
    echo "'kód pro zobrazení pokud tam je ID 15";
    {/if}
    {if ! in_array(16, $products)}
    echo "'kód pro zobrazení pokud tam je ID 16";
    {/if}
    {/if}
    A co, pokud tam jsou ID produktů 15 i 16 a chci aby se nezobrazil žádný kód/produkt?
    Normálně bych se na to vypšouk, ale když už jsem to začal zajímá mě to :-) PS nejsem programátor jen nadšenec..
    31. 10. 2019 05:00:12
    https://webtrh.cz/diskuse/if-vice-podminek/#reply1421966
    chladek
    verified
    rating uzivatele
    (4 hodnocení)
    31. 10. 2019 07:30:41
    zdar, takhle
    když tam bude 15 i 16 tak nebude platit žádná z vnitřních podmínek a nic to nevypíše
    ---------- Příspěvek doplněn 31.10.2019 v 07:40 ----------
    pardon - ještě místo $products musí být něco jako $productIDs, kde bude jen pole samotných ID. To ani nevím jestli ve Smarty jde, tak bude lepší připravit v php mimo šablonu
    31. 10. 2019 07:30:41
    https://webtrh.cz/diskuse/if-vice-podminek/#reply1421965
    Roman
    verified
    rating uzivatele
    (55 hodnocení)
    31. 10. 2019 07:44:52
    Díky, vyzkouším ID produktu Presta vypisuje přes product.id_product
    ---------- Příspěvek doplněn 31.10.2019 v 19:13 ----------
    Tak jsem zkoušel ale chyba žádná, výpis žádný :-) nejspíš tam je potřeba nějak vypsat ty ID produktů, které jsou v košíku, ale to nevím jak..
    31. 10. 2019 07:44:52
    https://webtrh.cz/diskuse/if-vice-podminek/#reply1421964
    Pro odpověď se přihlašte.
    Přihlásit