Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z warunkami w if
Devixon
post
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
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
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
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
Post #4





Grupa: Zarejestrowani
Postów: 1 883
Pomógł: 231
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
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
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
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 (IMG:style_emoticons/default/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. (IMG:style_emoticons/default/specool.gif)

Temat do zamknięcia.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 11:28