Obliczenie stawki vat


(Boshi) #1

Cześć

postanowiłem poobcować z PHP jednak po przeczytaniu kilku stron ksiązki Vademekum profesjonalisty, napotykam problem.

chodzi mianowicie o obliczenie stawki vat w formularzu, niestety wywala mi błędy, a kod mam identyczny jak w książce.

Druga sprawa to dlaczego przy funkcji define wywala mi masę błędów vertigo? Tłumię je "@" ale podejrzewam że mi w ogólę nie chce wyciągać danych z Stałych.

I wytłumacz mi ktoś jeszcze co oznacza przedostatni fragment kodu z tą . chodzi o tą stawkę vat 1+$stawkavat co oznacza ta 1? bo zmienna stawkavat to weim że to są 22 %

<?php




$ilosc=0; 

$ilosc =$iloscopon + $iloscoleju +$iloscswiec;

echo 'zamówionych części; '.$ilosc. '
';


$wartosc=0.00;





define ('CENAOPON'. 100);

define ('CENAOLEJU'. 10);

define ('CENASWIEC'. 4);


$wartosc=$iloscopon * CENAOPON

+$iloscOLEJU * CENAOLEJU

+$iloscswiec * CENASWIEC;


echo'cena netto: '.number_format($wartosc. 2). 'PLN
';

$stawkavat=0.22; //stawka vat to 22%

$wartosc=$wartosc * (1+$stawkavat);  

echo 'cena brutto: '. number_format($wartosc. 2). 'PLN
';




Dzięki za wyjaśnienie z góry.


?>[/b]

(Damgora) #2

Argumenty funkcji rozdziela się przecinkiem, a nie kropką.

Nie wiem czy ma to znaczenie, ale $iloscoleju i $iloscOLEJU to dwie różne zmienne.


(Boshi) #3

Cayman, dzięki, błąd w książce widzę jest :slight_smile: chodziło o przecinki :stuck_out_tongue: Działa wszystko ok.


(Boshi) #4

Nie będę tworzył kolejnego tematu bo to bez sensu, skoro może ktoś tu pomóc kolejny raz.

Chodzi o to że chcę na pewna ilosc opon dodać zniżki w progu 5% za 10-49opon, 10% za 50-99 opon i >100 opon 15%

Wszystko niby gra tylko że brakuje mi kodu wykonujacego obliczenia tych zniżek i po wypelnieniu formularza by obliczył mi je bo teraz jedynie pisze że jest znizka ale nie jest to znizone w rzeczywistości.

I jeszcze jedno, jak zrobić by:

1 kiedy nie ma żadnych danych wpisanych w formularz wyświetla się ostrzegający napis o tym że nic nie ma, ale niestety wyświetla się też napisa na wybraną ilość opon upust to , jak napisać warunek by nie wyświetlał się ten napis.

2 Jak zrobić by pod tym kodem wyświetlał się " Dziękujemy za skorzystanie z naszej oferty rabatowej" jak poniżej, tyle że to nie działa. chodzi mi jeżeli zostanąspełnione powyższe warunki,. jezeli nie to wiadomo false.

if($ilosc>=10 && $iloscopon <=49) 

if($ilosc>=50 && $iloscopon <=99)

if($ilosc>100)

{

echo 'Dziękujemy za skorzystanie z naszej oferty rabatowej
';

}[/code]




Może ktoś taki mały kodzik napisać by obliczył zniżki ? No chyba że nie tędy droga i coś zagmatwałem to proszę o wskazówki



Kod:

[code] if ($ilosc == 0) { echo '';

echo 'Na po poprzedniej stronie nie zostalo złożone żadne zamówienie, prosimy wrócić i złożyć ponownie.
';

echo ''; } if($ilosc>=10 && $iloscopon <=49) if($ilosc>=50 && $iloscopon <=99) if($ilosc>100) { echo ' Dziękujemy za skorzystanie z naszej oferty rabatowej'; } if ($iloscopon < 10) $znizka = 0; elseif ($iloscopon >= 10 && $iloscopon <=49) $znizka=5; elseif ($iloscopon >= 50 && $iloscopon<=99) $znizka=10; elseif ($iloscopon > 100) $znizka=15; echo 'na wybraną ilość opon upust to ' .$znizka. ' %';
-- Dodane 29.08.2011 (Pn) 21:10 -- Rozwiązałem problem pierwszy i 2 stosując w pierwszym operator !== czyli "jeżeli nie będzie..." drugi robiąc osobno warunek . Teraz prosiłbym jak mam do jasnej ciasnej napisać skrypt który by obniżał o 5,10,15 % w zależności od podanych warunków.

if($ilosc>=10 && $iloscopon <=49)

if($ilosc>=50 && $iloscopon <=99)

if($ilosc>100)

A przy okazji, jak ktoś ma czas i chęci, to sprawdziłby mi ten cały kod i jakieś rady?

<?php


// utwórz krótkie nazwy zmiennych


$iloscopon = $_POST['iloscopon'];

$iloscoleju = $_POST['iloscoleju'];

$iloscswiec = $_POST['iloscswiec']; 


echo 'zamówienie przyjęte o ';

echo @date ('H: i: s j F.'); //DATA I GODZINA PRZYJĘCIA ZMAÓWIENIA


echo '
Zamówienie państwa wygląda następcująco';

echo $iloscopon. ' opony
';

echo $iloscoleju. ' pudełka oleju
 ';

echo $iloscswiec. ' sztuki swiec

';


/*Obliczamy podatek vat oraz cene brutt/netto w formularzu janka

*/


/* argumenty funkcji oddziela się przenickiem a nie kropką*/


define ('CENAOPON', 100); 

define ('CENAOLEJU', 10);

define ('CENASWIEC', 4);





$ilosc =$iloscopon + $iloscoleju +$iloscswiec;

echo 'zamówionych części; '.$ilosc. '
';


$wartosc=0.00;


$wartosc = $iloscopon * CENAOPON // Zmiennej $wartość przypisujemy X * cena podana w stałych (define) 

+$iloscoleju * CENAOLEJU

+$iloscswiec * CENASWIEC;


echo'cena netto: '.number_format($wartosc, 2). 'PLN
';

$stawkavat=0.22; //stawka vat to 23%

$wartosc=$wartosc * (1+$stawkavat);  

echo 'cena brutto: '. number_format($wartosc, 2). 'PLN
'; // funkcja number_format określa ilość miejsc po przecinku.


/*skrypt obliczający zniżkę dla danej ilośc towaru*/





 if ($ilosc == 0)



{

echo '';


}


if ($ilosc > 0) // jeżeli towaru będzie więcej niż zero pokaże się napisa " dziękuję za zamówienie"


{

echo '';

}




if ($iloscopon < 10)

$znizka = 0;

elseif ($iloscopon >= 10 && $iloscopon <=49)

$znizka=5;

elseif ($iloscopon >= 50 && $iloscopon<=99)

$znizka=10;

elseif ($iloscopon > 100)

$znizka=15;


if($ilosc !==0 )

{

echo 'na wybraną ilość opon upust to ' .$znizka. '%
';  

}



?>[/code]

(Grzesie K) #5

Kod na pierwszy rzut oka nie ma błędów, lecz mam kilka uwag:

// utwórz krótkie nazwy zmiennych$iloscopon   = $_POST['iloscopon'];$iloscoleju  = $_POST['iloscoleju'];$iloscswiec  = $_POST['iloscswiec'];[/code]

To nie jest potrzebne do poprawnego działa skryptu, ten sam efekt uzyskasz odwołując się za każdym razem do tablicy $_POST. W ten sposób jedynie duplikujesz te dane (dwie zmienne o tej samej wartości). Dodatkowo powinieneś zawsze sprawdzać poprawność danych pochodzących od użytkownika- w tym wypadku przydało by się sprawdzi czy dana wartość post istnieje [i]isset()[/i] or czy jest liczbą [i]is_numeric()[/i]




[code=php]echo @date  ('H: i: s     j F.');



małpa nie jest tu potrzebna, gdyż nie przewidujemy tu przecież żadnego błędu





$wartosc=0.00;[/code]


Zero to zero więc równie dobrze zmiast 0.00 może być samo 0 :-) 




[code=php]if($ilosc !==0 )



operator identyczności nie jest tu potrzebny wystarczy !=

(Grzelix) #6

rozumiem że jeśli zniżka wynosi np 10% to tak naprawdę klient płaci 90% wartości podstawowej więc

= $iloscopon * CENAOPON *((100-$znizka)/100)  // Zmiennej $wartość przypisujemy X * cena podana w stałych (define) +$iloscoleju * CENAOLEJU+$iloscswiec * CENASWIEC;[/code]



i oczywiści kod obliczający zniżkę przed tym fragmentem

(Boshi) #7
echo @date  ('H: i: s     j F.'); [/code]

małpa nie jest tu potrzebna, gdyż nie przewidujemy tu przecież żadnego błędu

Tu mi bez @ wyrzuca ostrzeżenie.

A za resztę dzięki wam.