Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Formularz zamówień - warunki IF
1piksel
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.07.2016

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


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.

Ten post edytował 1piksel 7.07.2016, 18:10:02
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #2





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


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


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
1piksel
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.07.2016

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


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



Ten post edytował 1piksel 8.07.2016, 14:17:23
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #4





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


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]


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
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 Aktualny czas: 19.08.2025 - 21:56