Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Obliczanie rabatu i kwoty po rabacie
Noooob
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.04.2016

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


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?
Go to the top of the page
+Quote Post
rad11
post
Post #2





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Ale co Ci nie działa ? Na pierwszy rzut oka brak Ci zamknięcia klamrą w ostatnim else
Go to the top of the page
+Quote Post
Noooob
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.04.2016

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


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

Ten post edytował Noooob 1.04.2016, 10:54:37
Go to the top of the page
+Quote Post
rad11
post
Post #4





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


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. }


Ten post edytował rad11 1.04.2016, 11:40:37
Go to the top of the page
+Quote Post
Noooob
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.04.2016

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


Nadal nie wyświetla kwoty po rabacie.
(Chyba że czegoś nie zrozumiałem)
Go to the top of the page
+Quote Post
rad11
post
Post #6





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Brakowało $ zobacz teraz
Go to the top of the page
+Quote Post
Noooob
post
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.04.2016

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


Powoli dochodzę do wniosku ze cała ta konstrukcja jest po prostu zła i nie da się tego zrobić w ten sposób
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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??
Go to the top of the page
+Quote Post
rad11
post
Post #9





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


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.  
Go to the top of the page
+Quote Post
Noooob
post
Post #10





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.04.2016

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


EDIT:
yyym sprawdzam wrzucony kod
Za dużo mieszam w kodzie w międzyczasie.

Ten post edytował Noooob 1.04.2016, 13:13:33
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No ale wlacz troszke myslenie a nie bezmyslnie kopiujesz....

Jak chcesz miec rabat 8% to nie: *0.02 a *0.08
analogicznie reszta
Go to the top of the page
+Quote Post
Noooob
post
Post #12





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.04.2016

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


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 :-)

Ten post edytował Noooob 1.04.2016, 13:45:19
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.10.2025 - 11:39