Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z warunkami w if
Forum PHP.pl > Forum > Przedszkole
Devixon
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.
viking
A startujesz sesję na początku pliku?
Devixon
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;
Tomplus
Jak już używasz coś takiego, to użyj:

  1. if( session_status() === PHP_SESSION_NONE )
  2. {
  3. }
trueblue
W linii 10 i 11 czyścisz informację o fakcie wybrania sposobu dostawy.
Devixon
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.
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.