Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z warunkami w if
Devixon
post 24.09.2020, 20:46:50
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.09.2020

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


Witam mam pewien problem, a że jeszcze do końca nie rozumiem PHP to mam nadzieję, że ktoś przynajmniej mnie naprowadzi na trop, bo widocznie nie umiem nawet w google znaleźć rozwiązania, a mianowicie robię sobie stronę sklepu w ramach treningu, udało mi ogarnąć produkty i koszyk, ale chce już po za nim [koszykiem] zrobić wybór dostawy, kurier lub odbiór osobisty.

Generalnie działa, jak klikam to dodaje mi się kwota, tylko że w za każdym razem. Chce zrobić tak że po wybraniu danej płatności drugi raz ta sama opcja [jeżeli jest wybrana] nie doda mi znów danej kwoty.
Z nawiasami czy bez zamykania wszystkiego w nawiasach zawsze jest tak samo po każdym kliknięciu wykonuje mi się wybrana opcja, a nie rozumiem dlaczego bo w teorii drugi warunek po pierwszym kliknięciu nie może być spełniony, bo z NULL zmienia się zawartość na "checked" [wykorzystuje to do zaznaczenia boxa]. I próbowałem już na wiele sposób, z inną zmienną, i innymi watościami, ze zwykłymi zmiennymi [nie sesyjnymi], jak już działa to zawsze tak że za każdym razem wykonuje się if czy jeden czy drugi.

  1. <?php
  2. if(isset($_GET['deliverCheck']))
  3. {
  4. $deliver=$_GET['deliverCheck'];
  5.  
  6. if($deliver=='kurier' && is_null($_SESSION['kurCheck']))
  7. {
  8. $_SESSION['total']+=20;
  9. $_SESSION['delivery']="Kurier 20 zł";
  10. $_SESSION['kurCheck']="checked";
  11. $_SESSION['odosoCheck']=NULL;
  12. }
  13. if($deliver=='odosobity' && is_null($_SESSION['odosoCheck']))
  14. {
  15. $_SESSION['total']-=20;
  16. $_SESSION['delivery']="Odbiór osobisty";
  17. $_SESSION['odosoCheck']="checked";
  18. $_SESSION['kurCheck']=NULL;
  19. }
  20. }
  21. ?>


Jak mam to zrobione w ten sposób to też tak samo się dzieje, domyślam się że to nie zbyt wielka różnica ale proszę:

  1. <?php
  2. function delivery()
  3. {
  4. if($_SESSION['deliver']=='kurier' && is_null($_SESSION['kurCheck']))
  5. {
  6. $_SESSION['total']+=20;
  7. $_SESSION['delivery']="Kurier 20 zł";
  8. $_SESSION['kurCheck']="checked";
  9. $_SESSION['odosoCheck']=NULL;
  10. }
  11. if($_SESSION['deliver']=='odosobity' && is_null($_SESSION['odosoCheck']))
  12. {
  13. $_SESSION['total']-=20;
  14. $_SESSION['delivery']="Odbiór osobisty";
  15. $_SESSION['odosoCheck']="checked";
  16. $_SESSION['kurCheck']=NULL;
  17. }
  18. }
  19.  
  20. if(isset($_GET['deliverCheck']))
  21. {
  22. $_SESSION['deliver']=$_GET['deliverCheck'];
  23. delivery();
  24. }
  25. ?>


Nie liczę na gotowe rozwiązanie, chociaż było by miło, ale przynajmniej na naprowadzenie lub wyjaśnienie dlaczego mimo wszystko całość się wykonuje i nie biorze pod uwagę drugiego warunku.

Pozdrawiam i dziękuję za pomoc.
Go to the top of the page
+Quote Post
viking
post 25.09.2020, 04:58:27
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


A startujesz sesję na początku pliku?


--------------------
Go to the top of the page
+Quote Post
Devixon
post 25.09.2020, 23:38:11
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.09.2020

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


Cytat(viking @ 25.09.2020, 05:58:27 ) *
A startujesz sesję na początku pliku?

Tak, bynajmniej tak mi się wydaje, a o to początek:
  1. <?php
  2.  
  3.  
  4. require_once 'dbConfig.php';
  5.  
  6. include_once 'Cart.class.php';
  7. $cart=new Cart;
  8.  
  9. $_SESSION['kurCheck']=NULL;
  10. $_SESSION['odosoCheck']=NULL;
  11. $_SESSION['deliver']=NULL;
Go to the top of the page
+Quote Post
Tomplus
post 26.09.2020, 07:51:24
Post #4





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Jak już używasz coś takiego, to użyj:

  1. if( session_status() === PHP_SESSION_NONE )
  2. {
  3. }
Go to the top of the page
+Quote Post
trueblue
post 26.09.2020, 08:12:03
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


W linii 10 i 11 czyścisz informację o fakcie wybrania sposobu dostawy.


--------------------
Go to the top of the page
+Quote Post
Devixon
post 26.09.2020, 21:13:11
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.09.2020

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


Cytat(Tomplus @ 26.09.2020, 08:51:24 ) *
Jak już używasz coś takiego, to użyj:

  1. if( session_status() === PHP_SESSION_NONE )
  2. {
  3. }


Dzięki za tipa, rozumiem że to lepiej się sprawuje niż to co ja używam, ale zaraz pogoogluje to [PHP_SESSION_NONE] i postaram się lepiej zrozumieć.


Cytat(trueblue @ 26.09.2020, 09:12:03 ) *
W linii 10 i 11 czyścisz informację o fakcie wybrania sposobu dostawy.


OMG faktycznie sciana.gif teraz dopiero zrozumiałem, że przecież to się dzieje przed if'em, wielkie dzięki. Masakra jak czasem umyka tak oczywista rzecz.

Dziękuje za pomoc. specool.gif

Temat do zamknięcia.
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: 29.03.2024 - 17:03