Autor Zpráva
tomas2245
Profil
Zdravím, mám html formulár ktorý sa odosiela cez PHP.
Mám tam inputy pre meno, priezvisko atď.
Tovary mám tiež riešené cez inputy.
Moja otázka znie, dalo by sa spraviť že tie tovary sa cez nejaké príkazy sčítajú a v maily sa zobrazí (výsledná cena jedného druhu tovarov (PC) a druhého (notebooky) ?

mám 2 druhy tovarov:

napr. 1 : PC
napr. 2 : Notebooky

a ešte podkategórie:

cena za kus, nad 100 kusov, nad 500 kusov, nad 1 000 kusov

je dôležité aby ten systém vedel ak si niekto objedná do 90 kusov tak to bude brať cenu za kus... napríklad..

v PHP som začiatočník, budem rád za každé riešenie, vďaka :)
lionel messi
Profil
tomas2245:
dalo by sa spraviť že tie tovary sa cez nejaké príkazy sčítajú a v maily sa zobrazí (výsledná cena jedného druhu tovarov (PC) a druhého (notebooky) ?

Áno, samozrejme.

Ukáž prosím HTML formulára (a aké zľavy majú byť pri veľkých objednávkach). :-)
tomas2245
Profil
lionel messi:

<li>
<img src="obrazky/tovar1.png"></a><p>1. TOVAR
<br><input type="text" style="text-align: center" name="1tovar" size="5" /> ks
</li>

tento kód si chcel vidieť? takto mam naskladaných dajme tomu 100 inputov na tovary.. ^ viem, určite by to bolo lepšie cez tú databázu ale v tom sa vôbec nevyznám, zatiaľ to nechám tak :)

cena za kus PC: 0,22 || cena za kus NTB: 0,30
cena nad 100 PC: 0,18 || cena nad 100 NTB: 0,28
cena nad 500 PC: 0,17 || cena nad 500 NTB: 0,26
cena nad 1000 PC: 0,15 || cena nad 1000 NTB: 0,22

divné ceny na tie kategórie :D ale tak to je len príklad ;)
tomas2245
Profil
lionel messi:

prepáč že ťa otravujem, ale zabudol si namna či si nenašiel riešenie?
lachim15
Profil
Nevím, jak máš postavený script, udělal jsem ti tedy funkci a začlenění do scriptu nechám na tobě.
Jestli chápu dobře, chceš nějak vyřešit snížení ceny za kus při určitých počtech kusů v objednávce, při výpočtu můžeš zavolat funkci a ona ti vrátí novou cenu podle počtu kusů, podobnou když si ji upravíš můžeš použít i pro ntb.

Funkce do které předáš počet kusů:
<?php
function cena($pocet_kusu) { 
if($pocet_kusu < 100) {
    $cena_kus = 0.22;
} elseif(($pocet_kusu > 99) && ($pocet_kusu < 500)) {
    $cena_kus = 0.18;
} elseif(($pocet_kusu > 499) && ($pocet_kusu < 1000)) {
    $cena_kus = 0.17;
} elseif($pocet_kusu > 999) {
    $cena_kus = 0.15;
} else {
    $cena_kus = 0.22;
}
return $cena_kus;
}
?>

Zavolání funkce například (záleží, jak tvůj script funguje):
<?php
cena($_POST['1tovar']);
?>

Pokud budeš chtít otestovat script:
echo cena(179);

Snad jsem se nikde nepřepsal, nebo nenapsal něco špatně, píšu to ve spěchu v práci a nemám to kde vyzkoušet :)
Lonanek
Profil
Neřešil bych to skriptem.
Podle zadání mohou nastat pro různé typy zboží různé hodnoty slev. To pak v praxi znamená, že tímto způsobem by se muselo napsat tolik funkcí, kolik bude rozdílných slev zboží.

Spíše bych to řešil formou tabulky (id; zbozi; sleva_0; sleva_100; sleva_500; sleva_1000) a podle zboží a počtu kusů násobit cenu slevou z tabulky.

Podmínky mi přijdou zbytečně složité.
Pokud bude splněna $pocet_kusu < 100 je zbytečné testovat zda je navazující podmínka >99. To samé platí i při dalších hodnotách.
Je použito else if{}, nikoliv elseif{}.
lachim15
Profil
Lonanek:
Neřešil bych to skriptem.
tomas2245 psal, že přes tabulky to řešit nechce.

Podle zadání mohou nastat pro různé typy zboží různé hodnoty slev
Já vyčetl, že má jen slevy pro 2 druhy zboží - pc a noteboky.

Je použito else if{}, nikoliv elseif{}
Ta mezera by tam neměla ovlivnit funkčnost ne?
Lonanek
Profil
lachim15:
tomas2245 psal, že přes tabulky to řešit nechce.
Nakonec k tomu řešení stejně dospěje, protože určitě nezůstane jen u dvou tovarov.

Já vyčetl, že má jen slevy pro 2 druhy zboží - pc a noteboky.
zatím jen dva...

Ta mezera by tam neměla ovlivnit funkčnost ne?
to si nemyslím, php.net/manual/en/control-structures.elseif.php
lachim15
Profil
Dobré vědět, člověk se pořád učí :) Ten příklad mu opravím, ať to má tedy správně.

EDIT: Nechám na něm co si zvolí, je pravda, že s mysql je tohle jednodušší :)
juriad
Profil
K rozdílu mezi else if a elseif:
„In PHP, you can also write 'else if' (in two words) and the behavior would be identical to the one of 'elseif' (in a single word). The syntactic meaning is slightly different (if you're familiar with C, this is the same behavior) but the bottom line is that both would result in exactly the same behavior.“

# definice jednotkových cen pro produkt
# na pořadí záleží!!!
$pc = array(1000 => 0.15, 500 => 0.17, 100 => 0.18, 0 => 0.22);

function getPrice($unitPrices, $cnt) {
    # procházíme pole, dokud nenajdeme hodnotu, která je menší nebo rovná
    foreach ($unitPrices as $n => $unitPrice) {
        if ($cnt >= $n) {
            return $cnt * $unitPrice;
        }
    }
    # kdyby náhodou někdo zadal záporný počet
    return 0;
}

echo getPrice($pc, 127);
Keeehi
Profil
juriad:
K rozdílu mezi else if a elseif
Přesně tak. Je to popsané i v dokumentaci
Note that elseif and else if will only be considered exactly the same when using curly brackets as in the above example.
tomas2245
Profil
Ďakujem za riešenia, pokúsim sa to nejako dať dokopy, aj keď si nemyslím že sa mi to podarí, nerozumiem sa do toho moc :D

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: