Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Obliczanie znizki (formula)
Furiapl
post 16.06.2015, 14:31:29
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.06.2015

Ostrzeżenie: (0%)
-----


Witam serdecznie.
Od dwóch dni uczę się PHP z nadzieją, że kiedyś będę mógł się tym zajmować na co dzień, jednak czym dalej brnę tym bardziej sobie uświadamiam, że jest to dosyć trudne.
Szczególnie moje braki w matematyce dają się we znaki, no ale mniejsza - do sedna!
Uczę się ze znanej książki i mój dotychczasowy kod wygląda następująco:
  1. <html>
  2. <head>
  3. <title>Części samochodowe Janka oraz wyniki zamówienia</title>
  4. </head>
  5. <body>
  6. <h1>Części samochodowe Dominika</h1>
  7. <h2>Wyniki zamówienia</h2>
  8. <?php
  9.  
  10. echo '<p> Zamówienie przyjęte o ';
  11. echo date ('H: i jS F Y');
  12. echo '</p>';
  13.  
  14.  
  15. $iloscopon = $_POST['iloscopon'];
  16. $iloscoleju = $_POST['iloscoleju'];
  17. $iloscswiec = $_POST['iloscswiec'];
  18.  
  19.  
  20. echo '<p> Państwa zamówienie wygląda następująco: </p>';
  21.  
  22. $ilosc = 0;
  23.  
  24.  
  25.  
  26. $ilosc = $iloscopon + $iloscoleju + $iloscswiec;
  27.  
  28. if($ilosc == 0) {
  29. echo "Na poprzedniej stronie nie zostało złożone żadne zamówienie !<br /> ";
  30. } else {
  31. echo $iloscopon." opon<br />";
  32. echo $iloscoleju." butelek oleju<br /> ";
  33. echo $iloscswiec." świec zapłonowych<br /> ";
  34. }
  35.  
  36.  
  37.  
  38.  
  39. echo '<p> Liczba zamówionych części razem : ' .$ilosc;
  40. echo '</p>';
  41.  
  42.  
  43. $wartosc = 0.00;
  44.  
  45.  
  46. define('CENAOPON', 100);
  47. define('CENAOLEJU', 10);
  48. define('CENASWIEC', 4);
  49.  
  50. $wartosc = $iloscopon* CENAOPON
  51. +$iloscoleju * CENAOLEJU
  52. +$iloscswiec * CENASWIEC;
  53.  
  54.  
  55.  
  56.  
  57.  
  58. echo ' Cena netto wynosi : ' .number_format ($wartosc, 2). ' PLN <br />';
  59.  
  60.  
  61. $stawkavat = 0.23;
  62. $wartosc = $wartosc * (1+$stawkavat);
  63.  
  64. echo 'Cena brutto wynosi : ' .number_format($wartosc, 2). ' PLN </br />';
  65.  
  66.  
  67.  
  68. if( $iloscopon < 10 )
  69. $znizka = 0;
  70. elseif( $iloscopon >= 10 && $iloscopon <= 49 )
  71. $znizka = 5;
  72. elseif( $iloscopon >= 50 && $iloscopon <= 99 )
  73. $znizka = 10;
  74. elseif( $iloscopon > 100 )
  75. $znizka = 15;


Jak stworzyć formułę, która policzy zniżkę od opon?
Mam już warunek związany z tymi progami zamówienia, teraz mi chodzi o to by stworzyć formułę związaną z $zniżka (czy to ma być podobnie jak z $podatekvat?)
Z góry dziękuje serdecznie za pomoc i przepraszam za niechlujny kod, staram się pisać samemu, bez ksiązki.
Go to the top of the page
+Quote Post
tomxx
post 16.06.2015, 15:15:35
Post #2





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


Ale ta zniżka ma dotyczyć łącznej ceny, czy tylko ceny opon? Jeżeli łącznej ceny, to wystarczy:
  1. $wartosc *= (1 - $znizka * 0.01);


Tak w ogóle, to zniżka jest procentowa, więc łatwiej i czytelniej byłoby ją zapisywać 0.15, 0.2 itd.
Go to the top of the page
+Quote Post
Furiapl
post 16.06.2015, 15:26:06
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.06.2015

Ostrzeżenie: (0%)
-----


Czyli nie jest ze mną tak źle.
Początkowo właśnie zapisywałem w ten sposób w który mówisz, ale w książce było inaczej więc nie chciałem kombinować.
Zniżka ma dotyczyć tylko opon.
I tutaj się gubię bo nie wiem czy mam grzebać coś przy ogólnym wyniku czy przy formule związanej z liczeniem liczby opon.
Bo żeby to wyliczyć potrzebujemy liczbę opon * cena i od tego ten rabat.
(Jak wyżej widać rabat jest definiowany na podstawie liczby opon, którą klient zamawia więc nie może być chyba "sztywny".
Tylko jak to zapisać?

Ten post edytował Furiapl 16.06.2015, 15:28:10
Go to the top of the page
+Quote Post
tomxx
post 16.06.2015, 15:34:48
Post #4





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


To musisz zniżkę od opon odliczyć wcześniej, zanim jeszcze dodasz ceny do siebie.

Do linijki 49. wszystko jest dobrze, ale po linijce 49. musisz zrobić to tak:
  1. # Najpierw ustalamy wartość zniżki
  2. if( $iloscopon < 10 )
  3. $znizka = 0;
  4. elseif( $iloscopon >= 10 && $iloscopon <= 49 )
  5. $znizka = 5;
  6. elseif( $iloscopon >= 50 && $iloscopon <= 99 )
  7. $znizka = 10;
  8. elseif( $iloscopon > 100 )
  9. $znizka = 15;
  10.  
  11. # Potem obliczamy wartości artykułów:
  12. $opony = $iloscopon * CENAOPON;
  13. $olej = $iloscoleju * CENAOLEJU;
  14. $swiece = $iloscswiec * CENASWIEC;
  15.  
  16. # Odliczamy zniżkę:
  17. $opony *= (1 - $znizka * 0.01);
  18.  
  19. # I dopiero na końcu sumujemy i obliczamy łączną cenę i VAT
  20.  
  21. $wartosc = $opony + $olej + $swiece;
  22.  
  23. echo ' Cena netto wynosi : ' .number_format ($wartosc, 2). ' PLN <br />';
  24.  
  25.  
  26. $stawkavat = 0.23;
  27. $wartosc = $wartosc * (1+$stawkavat);
  28.  
  29. echo 'Cena brutto wynosi : ' .number_format($wartosc, 2). ' PLN </br />';


Ten post edytował tomxx 16.06.2015, 15:35:30
Go to the top of the page
+Quote Post
Furiapl
post 16.06.2015, 15:42:14
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.06.2015

Ostrzeżenie: (0%)
-----


Dziękuję kolego, bardzo mi pomogłeś!
I tylko jedno błahe pytanie.
Dlaczego pomnożyłeś *0,01?
Pozdrawiam serdecznie.
Go to the top of the page
+Quote Post
tomxx
post 16.06.2015, 15:44:04
Post #6





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


Bo w Twoim skrypcie zniżki są w liczbach całkowitych. W przeciwnym razie dla zniżki 15 mielibyśmy $opony *= -14, zamiast $opony *= 0,85.
Go to the top of the page
+Quote Post
Furiapl
post 16.06.2015, 15:54:49
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.06.2015

Ostrzeżenie: (0%)
-----


Zatem jeżeli podam te wartości rabatu w takiej postaci :
0
0.05
0.10
0.15
To linijka z wartością może wyglądać tak?
  1. $opony *= (1 - $znizka );

Pozdrawiam!
Go to the top of the page
+Quote Post
tomxx
post 16.06.2015, 18:06:39
Post #8





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


Tak.
Go to the top of the page
+Quote Post
Furiapl
post 18.06.2015, 14:19:27
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.06.2015

Ostrzeżenie: (0%)
-----


Witam,
Mam jeszcze jedno błahe pytanie dotyczące łączonych operatorów przypisania.
Otóż, nie rozumiem na jakiej zasadzie one działają, mógłby ktoś łopatologicznie mi to wyjaśnić?
  1. while ($odleglosc <= 1000) {
  2. echo "<tr>
  3. <td align=\"right\">".$odleglosc."</td>
  4. <td align=\"right\">". ($odleglosc / 10) ."</td>
  5. </tr>\n";
  6.  
  7. $odleglosc += 50;

Prosta pętelka, jednak jak usunę tego "+" na końcu to wynik będzie taki sam, o co tutaj chodzi?
Podobny problem mam z tym operatorem " *= " chodzi o to, że najpierw coś wymnoży a później wynik poda?
Kompletnie tego nie rozumiem.
Za wszelkie rady będę bardzo wdzięczny.
Pozdrawiam.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 14:00