Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Obliczanie rabatu i kwoty po rabacie
Forum PHP.pl > Forum > Przedszkole
Noooob
Hejka wszystkim
Zapewne zjedziecie mnie mocno ale co tam. Do odważnych świat należy.

Po wpisaniu kwoty i zatwierdzeniu klient ma otrzymać wynik rabatu oraz kwotę po rabacie.
Mam to:

  1. <html>
  2. <head> <meta charset="utf-8">
  3. <title>Sprawdź swój rabat</title>
  4. </head>
  5. <body>
  6. <form action="dane rabat.php" method="get">
  7. Sprawdź swój rabat (wpisz wartość zamówienia)<br>
  8.  
  9. <input type="text" name="liczba"><br>
  10. <input type="submit" value="wyślij">
  11.  
  12. </form>
  13. </body>
  14. </html>


  1. <html>
  2. <head> <meta charset="utf-8">
  3. <title>Dane do rabatu</title>
  4. </head>
  5. <body>
  6. <?php
  7. $liczba=$_REQUEST['liczba'];
  8.  
  9. if($liczba < 999)
  10. {
  11. print "Kwota" .$liczba. "jest za niska do osiągnięcia rabatu";
  12. "Do zapłaty" .$liczba. "zł";
  13. }
  14. else if (($liczba > 1000) && ($liczba < 2000))
  15. {
  16. print "Twój rabat z kwoty".$liczba."wynosi 2%";
  17. "Do zapłaty" .$liczba.=$liczba-($liczba*0.02);
  18. }
  19. else if (($liczba > 2001) && ($liczba < 3999))
  20. {
  21. print "Twój rabat z kwoty".$liczba."wynosi 5%";
  22. "Do zapłaty" .$liczba.=$liczba-($liczba*0.05);
  23. }
  24. else if (($liczba > 4000) && ($liczba < 7000))
  25. {
  26. print "Twój rabat z kwoty".$liczba."wynosi 7%";
  27. "Do zapłaty" .$liczba.=$liczba-($liczba*0.07);
  28. }
  29. else if ($liczba > 7001)
  30. {
  31. print "Twój rabat z kwoty".$liczba."wynosi 8%";
  32. "Do zapłaty" .$liczba.=$liczba-($liczba*0.08);
  33. ?>
  34.  
  35. </body>
  36. </html>


Wiem że można to prościej zrobić ale nie umiem. Zatem co tu jest nie tak że mi ni działa?
rad11
Ale co Ci nie działa ? Na pierwszy rzut oka brak Ci zamknięcia klamrą w ostatnim else
Noooob
A to drobne niedopatrzenie. Chodziło mi o to:

Przykładowy komunikat zwrotny:
"Twój rabat z kwoty2010wynosi 5% "

W komunikacie brak wyniku kwoty do zapłaty po odliczeniu tych 5%
czyli coś jest nie tak przynajmniej z linijakami 17, 22, 27, 32
rad11
np:

  1. else if (($liczba > 1000) && ($liczba < 2000))
  2. {
  3. echo "Twój rabat z kwoty $liczba wynosi 2%\n";
  4. $liczba = $liczba-($liczba*0.02);
  5. echo "Do zapłaty $liczba\n";
  6. }
Noooob
Nadal nie wyświetla kwoty po rabacie.
(Chyba że czegoś nie zrozumiałem)
rad11
Brakowało $ zobacz teraz
Noooob
Powoli dochodzę do wniosku ze cała ta konstrukcja jest po prostu zła i nie da się tego zrobić w ten sposób
nospor
Dostales poprawnie dzialajacy kod:
  1. $liczba = 100;
  2.  
  3. echo "Twój rabat z kwoty $liczba wynosi 2%\n";
  4. $liczba = $liczba-($liczba*0.02);
  5. echo "Do zapłaty $liczba\n";

Co ci tu nie dziala??
rad11
index.php
  1. <html>
  2. <head> <meta charset="utf-8">
  3. <title>Sprawdź swój rabat</title>
  4. </head>
  5. <body>
  6. <form action="http://localhost/test/index.php" method="POST">
  7. Sprawdź swój rabat (wpisz wartość zamówienia)<br>
  8.  
  9. <input type="text" name="liczba"><br>
  10. <input type="submit" value="wyślij">
  11.  
  12. </form>
  13. </body>
  14. </html>
  15. <?php
  16. if (isset($_POST["liczba"])) {
  17. $liczba = $_POST['liczba'];
  18.  
  19. if ($liczba < 999) {
  20. echo "Kwota $liczba jest za niska do osiągnięcia rabatu\n";
  21. echo "Do zapłaty $liczba zł\n";
  22. } else if (($liczba > 1000) && ($liczba < 2000)) {
  23.  
  24. echo "Twój rabat z kwoty $liczba wynosi 2%\n";
  25. $liczba = $liczba - ($liczba * 0.02);
  26. echo "Do zapłaty $liczba\n";
  27. } else if (($liczba > 2001) && ($liczba < 3999)) {
  28.  
  29. echo "Twój rabat z kwoty $liczba wynosi 5%\n";
  30. $liczba = $liczba - ($liczba * 0.05);
  31. echo "Do zapłaty $liczba\n";
  32. } else if (($liczba > 4000) && ($liczba < 7000)) {
  33.  
  34. echo "Twój rabat z kwoty $liczba wynosi 7%\n";
  35. $liczba = $liczba - ($liczba * 0.07);
  36. echo "Do zapłaty $liczba\n";
  37. } else if ($liczba > 7001) {
  38.  
  39. echo "Twój rabat z kwoty $liczba wynosi 8%\n";
  40. $liczba = $liczba - ($liczba * 0.08);
  41. echo "Do zapłaty $liczba\n";
  42. }
  43. }
  44. ?>
  45.  
Noooob
EDIT:
yyym sprawdzam wrzucony kod
Za dużo mieszam w kodzie w międzyczasie.
nospor
No ale wlacz troszke myslenie a nie bezmyslnie kopiujesz....

Jak chcesz miec rabat 8% to nie: *0.02 a *0.08
analogicznie reszta
Noooob
Wybacz. Moje doświadczenie w PHP jest kilkugodzinowe i jak to bywa na początku uczę sie poprzez podstawianie i próbowanie rozwiązań więc czasem wychodzą takie kwiatki jak tu gdy kod z dobrymi danymi podmieniłem na ten wzorcowy.
W moim kodzie był jeszcze jeden błąd. Mianowicie zapomniałem o działaniu równości co sprawiało że gdy wpisałem 1000 czy 7001 to wyświetlało pusta stronę.
Wcześniej natomiast gubiło mnie to że nie podstawiałem wzoru pod wszystkie równania lecz pod 2 by najpierw sprawdzić czy działa. No i przez to nie działało. Teraz wiem że trzeba pod cały tekst podstawiać.

Dzięki. Dzięki wam obu. Wszystko śmiga jak trzeba :-)
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.