Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]warunek IF
Forum PHP.pl > Forum > Przedszkole
inny02
Witam,

mam taki warunek

Kod
if ($status == 0)
        {
            $stop .= $lang['error'];
        }



zmienna $status zwraca 0 albo 1 gdy zwróci 0 to wyświetla się komunikat (to co zawarte w $lang['error']), ale jak zwróci 1 to też wyświetla się komunikat, a nie powinien bo jest tylko dla 0

Jeśli warunek zrobię tak


Kod
    if ($status > 0)
        {
            $stop .= $lang['error'];
        }



Gdy $status zwraca 1 wyświetla się komunikat - jest to logiczne, a jak 0 to nie ma komunikatu i wszytko przebiega dobrze - o to chodzi, ale na odwrót nie dla 0 ma przechodzić dalej ba 1.
Chcę, aby komunikat został tylko i wyłącznie wtedy wywołany, gdy $status zwraca 0, ale mam z tym duży problem.


Dziękuje i pozdrawiam
tehaha
nie wiem czy do końca zrozumiałem, ale może chodzi CI o to:
  1. if ($status == 1)
  2. {
  3. $stop .= $lang['error'];
  4. }
  5. else
  6. {
  7. $stop = '';
  8. }
!*!
  1. if ($status == 0){
  2. $stop = $lang['error'];
  3. }else {/* tutaj coś jak będzie inne od 0*/}
H4eX
Pierw sprawdź czy na pewno zwraca Ci 1.

  1. echo $status;
  2. if ($status == "0")
  3. {
  4. $stop .= $lang['error'];
  5. }
inny02
tak sprawdzałem na pewno zwraca 1, ale warunki nie działają
H4eX
a skasuj ten warunek
  1. if ($status == "0")
  2. {
  3. $stop .= $lang['error'];
  4. }


i niech status będzie równy 1.
Sądzę, że to nie jest wina tego warunku.
inny02
przechodzi dalej bo nie ma warunku, status równy 1
tehaha
pokaż cały kod i napisz co chcesz osiągnąć bo tak to tylko w zgadywanki można się bawić
inny02
więc sprawdzanie kodów po stronie dotpay kod http://wklej.org/hash/677ffdbc543/
musi to działać, ale jednak coś chyba z tym warunkiem jest nie tak
jak w formularzu wpiszę się poprawny kod to zwraca dotpay 1, jeśli nie to zwraca 0
cojack
Ludzie, oduczcie się przyrównywać w IF elementów do 0 lub 1. Jeżeli zmienna posiada 0 to jest false, jeżeli posiada 1 to jest true, jeżeli zmienna jest typu boolean to się jej nie przyrównuje do FALSE lub TRUE, z takim kodem to się nie macie co pokazywać u pracodawcy, na miejscu odpadacie.
inny02
kod sprawdza ściągnięty z dotpay
!*!
cojack to jakbyś to zrobił?
widmo_91
  1. if (!$status)
  2. {
  3. $stop .= $lang['error'];
  4. }
inny02
Cytat(widmo_91 @ 9.07.2010, 15:36:13 ) *
  1. if (!$status)
  2. {
  3. $stop .= $lang['error'];
  4. }


to nic nie sprawdza
!*!
a dlaczego przed znakiem równości jest ktopka?

Kod
.=


To ma jakieś znaczenie?
chemikpil
Cytat(inny02 @ 9.07.2010, 16:08:59 ) *
to nic nie sprawdza

Jeżeli zmienna ma wartość false to wtedy if zwróci false. Dlatego była tu mowa o zmiennych boolean.
Przydatne w przypadku zmiennych z np uchwytem do pliku lub zapytaniach do bazy. Jeżeli coś pujdzie nie tak i takie otwarcie nie zadziała, to zmienna zamiast przechowywać uchwyt, przechowa false.
Nie sprawdza się takich rzeczy na zasadzie 0,1 jeżeli ktoś mądry wymyślił false i true.
Kropka przed znakiem równa się to konkatenacja jak podejrzewać, tyle że skrócona.
Coś na wzór
  1. $zmienna = $zmienna.$zmienna2

Tym samym wszystkie błędy są zapisane w jednej zmiennej i wyświetlane na końcu.
Pozdro.
inny02
w innych miejscach skryptu też jest tak zrobione $stop .= $lang['reg_err_21']; gdzie są te komunikaty.
kolega wyżej pisał
muk4
przed warunkiem daj
  1. var_dump($status);

Wtedy zobaczysz, czy to liczba, czy boolean czy inne ustrojstwo.
inny02
zwraca string(2) "0 "
muk4
więc robisz:

  1. $status = trim($status);
  2. if (!$status) //jeśli false / 0
  3. {
  4. $stop .= $lang['error'];
  5. }

W PHP Porównanie == 0 jest takie same jak == false (chyba, że użyjesz === wtedy będzie sprawdzany typ i nie wyjdzie bo 0 jest stringiem a false boolean)
inny02
dałem taki warunek, ale komunikatu o błędnym kodzie teraz w ogóle nie wyświetla
bemol
i nie zwróci biggrin.gif bo nadal masz stringa. Po pierwsze skąd się wziął taki status ?
  1. $status = (int)trim($status);
  2. if (!$status) {
  3. $stop .= $lang['error'];
  4. }


Aha i bym zapomniał. Rzeczy takie jak if są raczej z reguły dobre, w tym nie ma co błędu szukać, jeśli jakiś warunek nam się nie spełnia lub spełnia tak jak nie trzeba to wina tylko w logice lub wartości. polecam też zawsze sobie dać echo w takim if'ie, wtedy rzeczowo wiemy czy działa, czy nie bo widzimy.
Warto też sprawdzać wartość var_dump.
I jeszcze jedna rzecz, tutaj tylko przypisujesz do zmiennej, jeśli nie wyświetlają się błędy to warto sprawdzić w jaki sposób jest wyświetlana dana zmienna.
Pozdrowienia smile.gif
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.