Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Proszę o małą pomoc przy obliczaniu ceny.
Forum PHP.pl > Forum > PHP
adiseq
Witam, chcę sobie ułatwić życie prostym kalkulatorkiem ceny niestety zawiesiłem się w jednym momencie i nie wiem co dalej zrobić tongue.gif w skrócie: chodzi mi o kalkulator który będzie obliczał cenę ogłoszenia, cena zależna jest od ilości słów, rodzaju ogłoszenia i ilości emisji. Z ilością słów i rodzajem ogłoszenia już sobie poradziłem jednak nie wiem jak zrobić rabat zależny od ilości emisji.
Mój formularz wygląda tak:
  1. <form action="zamowienie.php" method="post">
  2.  
  3. <input type="text" name="slowa" size=5> slow
  4. <br>
  5. Rodzaj <input type="radio" name="rodzaj" value='normalny' checked> Normalny <input type="radio" name="rodzaj" value="expres"> expres <input type="radio" name="rodzaj" value="ramka"> z ramką <input type="radio" name="rodzaj" value="kolor"> kolorowe tło<br>
  6. Ilość emisji
  7. <select name="ilosc">
  8. <option value="1">1 - 0% rabatu</option>
  9. <option value="2">2 - 10% rabatu</option>
  10. <option value="3">3 - 15% rabatu</option>
  11. <option value="4">4 - 20% rabatu</option>
  12. <option value="5">5 - 25% rabatu</option>
  13.  
  14. <br>
  15. <input type="submit" value="złóż zamówienie" />
  16.  
  17. </form>


Kod zamowienie.php (oblicza ilość słów i rodzaj)

  1. <?php
  2. define("normalny", 1.90);
  3. define("expres", 4.40);
  4. define("ramka", 3.20);
  5. define("kolor", 4.00);
  6. define("vat", 0.23);
  7. $ile_slow = $_POST['slowa'];
  8. $rodzaj = $_POST['rodzaj'];
  9. $kwota_normalny_netto = $ile_slow*normalny;
  10. $kwota_expres_netto = $ile_slow*expres;
  11. $kwota_ramka_netto = $ile_slow*ramka;
  12. $kwota_kolor_netto = $ile_slow*kolor;
  13. ?>
  14.  
  15. <html>
  16. <head>
  17. <title>Obsługa zamówienia</title>
  18. </head>
  19. <body>
  20. <?php
  21. switch($_POST['rodzaj']){
  22. case "normalny":
  23. echo "Kwota ".$kwota_normalny_netto;
  24. break;
  25. case "expres":
  26. echo "kwota ".$kwota_expres_netto;
  27. break;
  28. case "ramka":
  29. echo "kwota ".$kwota_ramka_netto;
  30. break;
  31. case "kolor":
  32. echo "kwota ".$kwota_kolor_netto;
  33. break;
  34. }
  35. ?>
  36. </body>
  37. </html>


Macie jakieś podpowiedzi ? możecie podać jeden przykład ? smile.gif
Pozdrawiam,
Adrian
aras785
Proszę: http://codepad.org/ZEVdfyA3
adiseq
Dzięki za odpowiedź ale nie bardzo rozumiem o co tu chodzi tongue.gif to ((int)$_POST['ilosc']) gdzie wkleić ?

czyli jako całość mam przypisać np $kwota_normalny_netto questionmark.gif
aras785
  1. <?php
  2. define("normalny", 1.90);
  3. define("expres", 4.40);
  4. define("ramka", 3.20);
  5. define("kolor", 4.00);
  6. define("vat", 0.23);
  7. $ile_slow = $_POST['slowa'];
  8. $rodzaj = $_POST['rodzaj'];
  9. $kwota_normalny_netto = $ile_slow*normalny;
  10. $kwota_expres_netto = $ile_slow*expres;
  11. $kwota_ramka_netto = $ile_slow*ramka;
  12. $kwota_kolor_netto = $ile_slow*kolor;
  13.  
  14. //funkcja rabat
  15. function rabat($calosc) {
  16. $ilosc = (int)$_POST['ilosc'];
  17. $wynik = $calosc;
  18. if($ilosc>1) { $wynik = $calosc-($calosc*($ilosc*5/100));}
  19. return $wynik;
  20. }
  21.  
  22. ?>
  23.  
  24. <html>
  25. <head>
  26. <title>Obsługa zamówienia</title>
  27. </head>
  28. <body>
  29. <?php
  30. switch($_POST['rodzaj']){
  31. case "normalny":
  32. echo "Kwota ".rabat($kwota_normalny_netto);
  33. break;
  34. case "expres":
  35. echo "kwota ".rabat($kwota_expres_netto);
  36. break;
  37. case "ramka":
  38. echo "kwota ".rabat($kwota_ramka_netto);
  39. break;
  40. case "kolor":
  41. echo "kwota ".rabat($kwota_kolor_netto);
  42. break;
  43. }
  44. ?>
  45. </body>
  46. </html>


//poprawiłem
adiseq
hmm a jeżeli zmieniłem procenty rabatu :
  1. <select name="ilosc">
  2. <option value="1">1 - 0% rabatu</option>
  3. <option value="2">2 - 5% rabatu</option>
  4. <option value="3">3 - 15% rabatu</option>
  5. <option value="4">6 - 20% rabatu</option>
  6. <option value="5">12 - 25% rabatu</option>

to kod się coś zmienia ? bo coś źle mi liczy np. 2 słowa kolor na jedną emisję to 8 zł a na 2 emisje powinno być 7,6 zł a wychodzi 7,2 ;/ php zrobiłem tak:
  1. <?php
  2. define("normalny", 1.90);
  3. define("expres", 4.40);
  4. define("ramka", 3.20);
  5. define("kolor", 4.00);
  6. define("vat", 0.23);
  7. $ile_slow = $_POST['slowa'];
  8. $rodzaj = $_POST['rodzaj'];
  9. $kwota_normalny_netto = $ile_slow*normalny;
  10. $kwota_expres_netto = $ile_slow*expres;
  11. $kwota_ramka_netto = $ile_slow*ramka;
  12. $kwota_kolor_netto = $ile_slow*kolor;
  13.  
  14. $ilosc = (int)$_POST['ilosc'];
  15. $wynik = $kwota_normalny_netto;
  16. if($ilosc>1) { $wynik = $kwota_normalny_netto-($kwota_normalny_netto*($ilosc*5/100));}
  17. $wynik1 = $kwota_expres_netto;
  18. if($ilosc>1) { $wynik1 = $kwota_expres_netto-($kwota_expres_netto*($ilosc*5/100));}
  19. $wynik2 = $kwota_ramka_netto;
  20. if($ilosc>1) { $wynik2 = $kwota_ramka_netto-($kwota_ramka_netto*($ilosc*5/100));}
  21. $wynik3 = $kwota_kolor_netto;
  22. if($ilosc>1) { $wynik3 = $kwota_kolor_netto-($kwota_kolor_netto*($ilosc*5/100));}
  23.  
  24. ?>
  25.  
  26. <html>
  27. <head>
  28. <title>Obsługa zamówienia</title>
  29. </head>
  30. <body>
  31. <?php
  32. switch($_POST['rodzaj']){
  33. case "normalny":
  34. echo "Kwota ".$wynik;
  35. break;
  36. case "expres":
  37. echo "kwota ".$wynik1;
  38. break;
  39. case "ramka":
  40. echo "kwota ".$wynik2;
  41. break;
  42. case "kolor":
  43. echo "kwota ".$wynik3;
  44. break;
  45. }
  46. ?>
  47.  
aras785
Tak zmienia się w kodzie php. Ja Ci zrobiłem tak, że jeśli $ilosc>1 to $ilosc*5% bo miałeś ustawione ze 2=10%, 3=15% dlatego tak zrobiłem.

To jest prosta matematyka.

k - kwota
p - procent 0-100
w - wynik

w = k-(k*p/100)

Zmień sobie na swoje parametry.
adiseq
jeżeli zmienię procent z 5 na 15 to wtedy mi będzie źle liczyło to 5 % ;/
aras785
To sobie w ilosc ustawiaj wartosci procentowe value="25" itd.

  1. <select name="ilosc">
  2. <option value="0">1 - 0% rabatu</option>
  3. <option value="5">2 - 5% rabatu</option>
  4. <option value="15">3 - 15% rabatu</option>
  5. <option value="20">6 - 20% rabatu</option>
  6. <option value="25">12 - 25% rabatu</option>


  1. <?php
  2. define("normalny", 1.90);
  3. define("expres", 4.40);
  4. define("ramka", 3.20);
  5. define("kolor", 4.00);
  6. define("vat", 0.23);
  7. $ile_slow = $_POST['slowa'];
  8. $rodzaj = $_POST['rodzaj'];
  9. $kwota_normalny_netto = $ile_slow*normalny;
  10. $kwota_expres_netto = $ile_slow*expres;
  11. $kwota_ramka_netto = $ile_slow*ramka;
  12. $kwota_kolor_netto = $ile_slow*kolor;
  13.  
  14. //funkcja rabat
  15. function rabat($calosc) {
  16. $ilosc = (int)$_POST['ilosc'];
  17. $wynik = $calosc;
  18. if($ilosc>0) { $wynik = $calosc-($calosc*($ilosc/100));}
  19. return $wynik;
  20. }
  21.  
  22. ?>
  23.  
  24. <html>
  25. <head>
  26. <title>Obsługa zamówienia</title>
  27. </head>
  28. <body>
  29. <?php
  30. switch($_POST['rodzaj']){
  31. case "normalny":
  32. echo "Kwota ".rabat($kwota_normalny_netto);
  33. break;
  34. case "expres":
  35. echo "kwota ".rabat($kwota_expres_netto);
  36. break;
  37. case "ramka":
  38. echo "kwota ".rabat($kwota_ramka_netto);
  39. break;
  40. case "kolor":
  41. echo "kwota ".rabat($kwota_kolor_netto);
  42. break;
  43. }
  44. ?>
  45. </body>
  46. </html>
adiseq
Dzięki smile.gif a jak dodać żeby jeszcze liczył od kwoty końcowej Vat 23 % ? smile.gif
aras785
  1. <?php
  2. define("normalny", 1.90);
  3. define("expres", 4.40);
  4. define("ramka", 3.20);
  5. define("kolor", 4.00);
  6. define("vat", 0.23);
  7. $ile_slow = $_POST['slowa'];
  8. $rodzaj = $_POST['rodzaj'];
  9. $kwota_normalny_netto = $ile_slow*normalny;
  10. $kwota_expres_netto = $ile_slow*expres;
  11. $kwota_ramka_netto = $ile_slow*ramka;
  12. $kwota_kolor_netto = $ile_slow*kolor;
  13.  
  14. //funkcja rabat
  15. function rabat($calosc) {
  16. $ilosc = (int)$_POST['ilosc'];
  17. $wynik = $calosc;
  18. if($ilosc>0) { $wynik = $calosc-($calosc*($ilosc/100));}
  19. return $wynik;
  20. }
  21.  
  22. ?>
  23.  
  24. <html>
  25. <head>
  26. <title>Obsługa zamówienia</title>
  27. </head>
  28. <body>
  29. <?php
  30. switch($_POST['rodzaj']){
  31. case "normalny":
  32. echo "Kwota ".rabat($kwota_normalny_netto). " VAT: ".rabat($kwota_normalny_netto)*0.23;
  33. break;
  34. case "expres":
  35. echo "kwota ".rabat($kwota_expres_netto). " VAT: ".rabat($kwota_expres_netto)*0.23;
  36. break;
  37. case "ramka":
  38. echo "kwota ".rabat($kwota_ramka_netto). " VAT: ".rabat($kwota_ramka_netto)*0.23;
  39. break;
  40. case "kolor":
  41. echo "kwota ".rabat($kwota_kolor_netto). " VAT: ".rabat($kwota_kolor_netto)*0.23;
  42. break;
  43. }
  44. ?>
  45. </body>
  46. </html>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.