Zadejte hledaný výraz...

prosim o radu – zaokrouhleni PHP

Oleg
verified
rating uzivatele
(53 hodnocení)
7. 5. 2009 10:23:12
Mam neco takoveho:
foreach($_POST AS $id => $pocet) {
$id = (int) $id;
$pocet = (int) $pocet;
if($pocet>0) {
$jidlo = mysql_query("SELECT * FROM `obedy` WHERE id = '".$id."'");
if(mysql_num_rows($jidlo)==1) {
$jidlo_row = mysql_fetch_object($jidlo);
if($den != $jidlo_row->den) {
$obsah .= "n " . $dny.": nn";
$den = $jidlo_row->den;
}
$obsah .= " " . $typy . ": " . $jidlo_row->nazev." (".$jidlo_row->cena_skk." SKK, ".$jidlo_row->cena_eur." EUR) - ".$pocet."x n";
$cena_skk += $pocet*$jidlo_row->cena_skk;
$cena_eur += $pocet*$jidlo_row->cena_eur;
}
}
}
$obsah .= "nn Celková cena: ".number_format($cena_skk, 2, ',', ' ')." SKK, ".number_format($cena_eur, 2, ',', ' ')." EURnn S pozdravom ".pageTitle;
if(!empty($_POST)) mail($_POST, pageTitle." - objednávka", $obsah, $headers);
mail(email, pageTitle." - objednávka", $obsah."nn IP adresa: ".$_SERVER, $headers);
$has[] = "Na váš e-mail boly zaslány informácie o objednávke.";ve vysledku mi prijde toto:
Pocet:
Neco (114,48 SKK, 3,80 EUR) - 1x
Neco (96,40 SKK, 3,20 EUR) - 1x
Celková cena: 210,00 SKK, 6,00 EUR
je spatne, protoze to usekne desetinny mista a nepripocita je do celkove ceny
tj. misto 7€ to da jen 6€
Jak osetrit aby vysledna cena byla spocitana spravne.
S PHP jsem nikdy moc nedelal a progrmator je ted nedostupny.
Diky za radu.
7. 5. 2009 10:23:12
https://webtrh.cz/diskuse/prosim-o-radu-zaokrouhleni-php#reply299393
Vypadá to, že číslo je s desetinnou čárkou místo tečky...
Přidal jsem 2 řádky, které nahradí desetinnou čárku tečkou, takže by to mělo počítat správně... ale nezaručuju :D
$jidlo_row->cena_skk = str_replace(',', '.', $jidlo_row->cena_skk);
$jidlo_row->cena_eur= str_replace(',', '.', $jidlo_row->cena_eur);
foreach($_POST AS $id => $pocet) {
$id = (int) $id;
$pocet = (int) $pocet;
if($pocet>0) {
$jidlo = mysql_query("SELECT * FROM `obedy` WHERE id = '".$id."'");
if(mysql_num_rows($jidlo)==1) {
$jidlo_row = mysql_fetch_object($jidlo);
if($den != $jidlo_row->den) {
$obsah .= "n " . $dny.": nn";
$den = $jidlo_row->den;
}
$obsah .= " " . $typy . ": " . $jidlo_row->nazev." (".$jidlo_row->cena_skk." SKK, ".$jidlo_row->cena_eur." EUR) - ".$pocet."x n";
$jidlo_row->cena_skk = str_replace(',','.',$jidlo_row->cena_skk);
$jidlo_row->cena_eur= str_replace(',','.',$jidlo_row->cena_eur);
$cena_skk += $pocet*$jidlo_row->cena_skk;
$cena_eur += $pocet*$jidlo_row->cena_eur;
}
}
}
$obsah .= "nn Celková cena: ".number_format($cena_skk, 2, ',', ' ')." SKK, ".number_format($cena_eur, 2, ',', ' ')." EURnn S pozdravom ".pageTitle;
if(!empty($_POST)) mail($_POST, pageTitle." - objednávka", $obsah, $headers);
mail(email, pageTitle." - objednávka", $obsah."nn IP adresa: ".$_SERVER, $headers);
$has[] = "Na váš e-mail boly zaslány informácie o objednávke.";
7. 5. 2009 10:57:41
https://webtrh.cz/diskuse/prosim-o-radu-zaokrouhleni-php#reply299392
myslim, ze chyba bude v oddelovaci desatinnych miest, pri pouziti "bodky":
$cena_skk = '123.45';
$cena_skk = number_format($cena_skk, 2, ',', ' ');
echo $cena_skk;
?>
je vysledok 123,45
-pri pouziti "ciarky":
$cena_skk = '123,45';
je vysledok 123,00
Z toho kodu sa neda vycitat v akom formate to berie ceny z db.
7. 5. 2009 10:58:51
https://webtrh.cz/diskuse/prosim-o-radu-zaokrouhleni-php#reply299391
jop Rival ma predbehol :D ach pomaly pisem.
7. 5. 2009 10:59:45
https://webtrh.cz/diskuse/prosim-o-radu-zaokrouhleni-php#reply299390
panove, jste me predbehli a ja si to zacal tak pekne psat. :) Chyba je presne v tom, jak rikate... oddelovacem destinnych mist je urcite v DB pro cenu urcen textovy retezec a proto tam bude ta carka (spravne je tecka). Takze bych navrhoval to potom nechat programatora vyresit uz na urovni DB (zmenit datovy typ hodnoty), nikoli ve zminene funkci.
potom at number_format() aplikuje i na konkretni polozky jidla. Nicmene cela ta funkce je nejaka divna, ale asi funguje. :)
7. 5. 2009 11:08:34
https://webtrh.cz/diskuse/prosim-o-radu-zaokrouhleni-php#reply299389
Oleg
verified
rating uzivatele
(53 hodnocení)
7. 5. 2009 11:12:27
Vy jste zlati.
Rival a neregistrovany moc Ti dekuji. Funguje vse OK!
Lock
7. 5. 2009 11:12:27
https://webtrh.cz/diskuse/prosim-o-radu-zaokrouhleni-php#reply299388
Pro odpověď se přihlašte.
Přihlásit