Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formularz zamówień - warunki IF
Forum PHP.pl > Forum > PHP
1piksel
Witam,

mam spory problem z wykonaniem kilku warunków IF po sobie. Czy jest jakiś na to sposób, by wykonało każdy z poniższych warunków IF?

Oto przykład formularza nad którym pracuje:

Dodam, że wykonuje to na CMSie Joomla i używam komponentu Fabrik

  1. $elementa = (int)'{dieta1___kalarycznosc_raw}';
  2. $elementb = (int)'{dieta1___weekendy_raw}';
  3. $elementc = (int)'{dieta1___okres_trwania_dostaw_raw}';
  4. $elementd = (int)'{dieta1___licza_zestaw_w_raw}';
  5.  
  6.  
  7. if ($elementa == 280 && $elementb == 1 && $elementd > 0 && $elementc > 0 )
  8. {
  9. return ($result = (($elementa + 112)*$elementc)*$elementd);
  10. }
  11.  
  12. if ($elementb == 0)
  13. {
  14. return ($result = ($elementa * $elementc)*$elementd);
  15. }
  16.  
  17. // Powyższe warunki dobrze funkcjonują. Problem jest dolną cześcią, gdzie rezultat w zależności od okresu trwania dostaw nie mnoży przez dany procent.
  18. // Czy jest możliwość, aby po warunku IF dalej były wykonywane polecenia?
  19.  
  20. elseif ($elementc == 2)
  21. {
  22. return ($result-($result * 0.02));
  23. }
  24.  
  25. elseif ($elementc == 3)
  26. {
  27. return ($result-($result * 0.03));
  28. }
  29.  
  30. elseif ($elementc == 4)
  31. {
  32. return ($result-($result * 0.05));
  33. }
  34.  
  35. else
  36. {
  37. return (sprintf("%'.0d PLN", $result));
  38. }
  39.  
  40.  



Proszę o sugestie w tej sprawie, będę bardzo wdzięczny.

Z poważaniem.
LowiczakPL
Jeśli mają być wykonane jeden po drugim to każdy warunek ma zaczynać się od IF a nie od ELSE

czyli sprawdzana jest pierwsza i kolejna linia z warunkami.

Czyli

2=2 to coś
2=3 to coś
2=5 to coś
i tak dalej

tylko po co to robić

jak 2=2 to nie ma sensu sprawdzania dalej więc PHP pomija dalsze warunki po to jest właśnie ELSE
1piksel
Zmiana z ELSEIF na IF nie pomaga. Ciągle nie oblicza procent. Czy to jest spowodowane braku zainicjowania $result?

Dodam, że ten stary kod działa i przelicza procenty. Natomiast nie uwzględnia czegoś takiego jak zestawy w weekendy.

Co może być przyczyną złego funkcjonowania kodu?

Oto stary kod:

  1. $elementa = (int)'{sportowa___kalarycznosc_raw}';
  2. $elementb = (int)'{sportowa___weekendy_raw}';
  3. $elementc = (int)'{sportowa___okres_trwania_dostaw_raw}';
  4. $elementd = (int)'{sportowa___licza_zestaw_w_raw}';
  5. $result = (($elementa * $elementc)+($elementc*$elementb))*$elementd;
  6.  
  7. if ($elementc == 2)
  8. {
  9. return (sprintf("%'.0d PLN", $result-($result * 0.02)));
  10. }
  11.  
  12. if ($elementc == 3)
  13. {
  14. return (sprintf("%'.0d PLN", $result-($result * 0.03)));
  15. }
  16.  
  17. if ($elementc == 4)
  18. {
  19. return (sprintf("%'.0d PLN", $result-($result * 0.05)));
  20. }
  21.  
  22.  
  23. return (sprintf("%'.0d PLN", $result));



A to obecnie modyfikowany

  1. $elementa = (int)'{dieta1___kalarycznosc_raw}';
  2. $elementb = (int)'{dieta1___weekendy_raw}';
  3. $elementc = (int)'{dieta1___okres_trwania_dostaw_raw}';
  4. $elementd = (int)'{dieta1___licza_zestaw_w_raw}';
  5. $result = 0;
  6.  
  7. if ($elementa == 280 && $elementb == 1 && $elementd > 0 && $elementc > 0 )
  8. {
  9. return ($result = (($elementa + 112)*$elementc)*$elementd);
  10. }
  11.  
  12. if ($elementb == 0)
  13. {
  14. return ($result = ($elementa * $elementc)*$elementd);
  15. }
  16.  
  17. if ($elementc == 2)
  18. {
  19. return ($result = $result-($result * 0.02));
  20. }
  21.  
  22. if ($elementc == 3)
  23. {
  24. return ($result = $result-($result * 0.03));
  25. }
  26.  
  27. if ($elementc == 4)
  28. {
  29. return ($result = $result-($result * 0.05));
  30. }
  31.  
  32. return (sprintf("%'.0d PLN", $result));

LowiczakPL
Wszystko masz uzależnione od Element C więc zrób echo tego elementu i zobacz jaki ma wynik i bez zgadywania dowiesz się czy warunek będzie spełniony czy nie, Twój zakres to [2,3,4]
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.