Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z "zamówieniem"
Forum PHP.pl > Forum > Przedszkole
PanOrienT
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ę?
AdIoS_Neo
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. }
PanOrienT
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
markonix
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
PanOrienT
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.



markonix
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?
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.