Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z "zamówieniem"
PanOrienT
post 5.07.2012, 16:46:59
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 3.07.2012

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


index.php
  1. <html>
  2. <body>
  3. <form action="zamowienie.php" method="post">
  4. Liczba koszulek <input type="text" name="koszulki" size="3" >
  5. <br />
  6. Liczba Bluz <input type="text" name="bluzy" size="3">
  7. <br />
  8. Liczba Skarpet <input type="text" name="skarpetki" size="3">
  9. <br />
  10. <input type="submit" value="Dalej">
  11.  
  12. </body>
  13. </html>

zamowienie.php
  1. <?php
  2. define("koszulka", 20);
  3. define("bluza", 50);
  4. define("skarpeta", 5);
  5. // Koszt ciuchów
  6. $ilosc_koszulki=$_POST['koszulki'];
  7. $ilosc_bluzy=$_POST['bluzy'];
  8. $ilosc_skarpetki=$_POST['skarpetki'];
  9. // Pobieranie danych o ilości ubioru
  10. $koszt_koszulek=$ilosc_koszulki*koszulka;
  11. $koszt_bluz=$ilosc_bluzy*bluza;
  12. $koszt_skarpetek=$ilosc_skarpetki*skarpeta;
  13. $koszt=$koszt_koszulek+$koszt_bluz+$koszt_skarpetek;
  14. // Obliczanie kosztów ubrań
  15. function rabat() {
  16. $rabat=100;
  17. $koszt=$koszt-100;
  18. }
  19. function razem(){
  20. echo "Koszt Koszulek wynosi: " .$koszt_koszulek. " zl <br />";
  21. echo "Koszt bluz wynosi: " .$koszt_bluz. " zl <br />";
  22. echo "Koszt skarpetek wynosi: " .$koszt_skarpetek. " zl <br />";
  23. echo "Do zaplaty: " .$koszt. " zl";
  24. }
  25.  
  26. if ($koszt <=200) {
  27. rabat();
  28. razem();
  29. }
  30. // Odejmowanie rabatu po przekroczeniu 200 zł
  31. else
  32. {
  33. razem();
  34. }
  35.  
  36.  
  37. ?>


Po otworzeniu i podaniu ilości ubrań, wogóle mi nie liczy ;/
Dlaczego?

NAPRAWIŁEM TO:

  1. <?php
  2. $ilosc_koszulki=$_POST['koszulki'];
  3. $ilosc_bluzy=$_POST['bluzy'];
  4. $ilosc_skarpetki=$_POST['skarpetki'];
  5.  
  6. define("koszulka", 20);
  7. define("bluza", 50);
  8. define("skarpeta", 5);
  9. $koszt_koszulek=$ilosc_koszulki*koszulka;
  10. $koszt_bluz=$ilosc_bluzy*bluza;
  11. $koszt_skarpetek=$ilosc_skarpetki*skarpeta;
  12. $koszt=$koszt_koszulek+$koszt_bluz+$koszt_skarpetek;
  13.  
  14. if ($koszt>=200){
  15. $koszt=$koszt-100;
  16. echo "Koszt Koszulek wynosi: " .$koszt_koszulek. " zl <br />";
  17. echo "Koszt bluz wynosi: " .$koszt_bluz. " zl <br />";
  18. echo "Koszt skarpetek wynosi: " .$koszt_skarpetek. " zl <br />";
  19. echo "Do zaplaty: " .$koszt. " zl";
  20. }
  21. else {
  22. echo "Koszt Koszulek wynosi: " .$koszt_koszulek. " zl <br />";
  23. echo "Koszt bluz wynosi: " .$koszt_bluz. " zl <br />";
  24. echo "Koszt skarpetek wynosi: " .$koszt_skarpetek. " zl <br />";
  25. echo "Do zaplaty: " .$koszt. " zl";
  26. }
  27. ?>


Powiedzcie mi, tak jak chciałem zrobić to w pierwszym przykładzie. Jak można korzystać z danych poza funkcją tworząc nową funkcję?
Go to the top of the page
+Quote Post
AdIoS_Neo
post 5.07.2012, 17:05:48
Post #2





Grupa: Zarejestrowani
Postów: 159
Pomógł: 43
Dołączył: 8.03.2009

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


Witam,
zapewne chodzi Ci o to że funkcja rabat() nie zmienia wartości zmiennych. Dzieje się tak dlatego, że operujesz na zmiennych lokalnych funkcji, by użyć tych spoza ciała funkcji musisz to zrobić w ten sposób:
  1. function rabat() {
  2. global $rabat, $koszt;
  3. $rabat=100;
  4. $koszt=$koszt-100;
  5. }
Go to the top of the page
+Quote Post
PanOrienT
post 5.07.2012, 17:17:49
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 3.07.2012

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


Super wink.gif

Właśnie nie miałem pojęcia o funkcji "global".

A przypomniało mi się o publikowaniu zmiennych z języka C++ smile.gif
Go to the top of the page
+Quote Post
markonix
post 5.07.2012, 17:31:11
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Nie stosuje się global.
Nie stosuje się funkcji jeżeli nie ma takiej potrzeby.
Stałe pisze się dużymi literami.
Dane wysłane z formularza się waliduje, albo robi rzutowanie (tutaj idealnie się to sprawdza bo ilość to typowa liczba całkowita, w przypadku liter czy pustego przyjmie wartość zero).
Rabat chyba występuje gdy ktoś zamówi za więcej niż 200zł, a nie mniej.
Komentarze są nieprawidłowe, najpierw komentarz, potem kod.
Stosuj ładniejszy format kodu. Trosze tabulacji, spacji i enterów w niczym nie zaszkodzi.


  1. <?php
  2.  
  3. define('KOSZULKA', 20);
  4. define('BLUZA', 50);
  5. define('SKARPETA', 5);
  6.  
  7. // Ilość ubrań
  8. $ilosc_koszulki = (int)$_POST['koszulki'];
  9. $ilosc_bluzy = (int)$_POST['bluzy'];
  10. $ilosc_skarpetki = (int)$_POST['skarpetki'];
  11.  
  12. // Koszt poszczególnych ubrań
  13. $koszt_koszulek = $ilosc_koszulki * KOSZULKA;
  14. $koszt_bluz = $ilosc_bluzy * BLUZA;
  15. $koszt_skarpetek = $ilosc_skarpetki * SKARPETA;
  16.  
  17. // Suma
  18. $koszt = $koszt_koszulek + $koszt_bluz + $koszt_skarpetek;
  19.  
  20. // Ewentualny rabat
  21. if ($koszt >= 200)
  22. $koszt -= 100;
  23.  
  24. ?>
  25. Koszt Koszulek wynosi: <?= $koszt_koszulek ?> zl <br />
  26. Koszt bluz wynosi: <?= $koszt_bluz ?> zl <br />
  27. Koszt skarpetek wynosi: <?= $koszt_skarpetek ?> zl <br />
  28. Do zaplaty: <?= $koszt ?> zl


Ten post edytował markonix 5.07.2012, 17:35:23


--------------------
Go to the top of the page
+Quote Post
PanOrienT
post 5.07.2012, 17:56:59
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 3.07.2012

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


Dzięki za pouczenie wink.gif Przyda się.


Ale ja na tym przykładzie ćwiczyłem używanie funkcji wink.gif


A jeśli chodzi o funkcję, to korzystanie z funkcji "global" nic nie zaszkodzi? Nie raz napewno będę chciał pobrać jakieś zmienne z początku do jakieś nowej funkcji.





Ten post edytował PanOrienT 5.07.2012, 18:06:01
Go to the top of the page
+Quote Post
markonix
post 5.07.2012, 18:02:21
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Zaszkodzi, przecież napisałem na samym początku.

Jeżeli chcesz stworzyć funkcję rabat to najpierw odpowiedz na pytania:
- czy kwota od której ma być rabat przyznawany jest stała czy ma być dynamiczna?
- czy kwota rabatu jest stała czy ma być dynamiczna?


--------------------
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: 19.07.2025 - 20:07