2011-08-30 3 views
1

로그인 할 때 사용자에게 발생하는 임의의 이벤트 시스템을 프로그래밍 중이며 아래 코드를 내 포함 파일에 넣습니다.if 문이 내 조건을 무시하는 이유는 무엇입니까?

$tehchance = mt_rand(1,15); 
if ($tehchance == "1"){ 
$thewin = 10; 
mysql_query("UPDATE members SET Points = Points + $thewin WHERE Handle = '$members[Handle]'"); 
} 
나는 또한 다른 이벤트에 대해이 있습니다

:

if ($tehchance == "2"){ 
$thekhwin = 5; 
$thexpwin = 10; 
mysql_query("UPDATE members SET Points = Points - $thekhwin WHERE Handle = '$members[Handle]'"); 
mysql_query("UPDATE members SET XP = XP + $thexpwin WHERE Handle = '$members[Handle]'"); 
} 
$ tehchance 1 또는 2 이외의 다른 것을 같은 경우 코드는, 그냥 내 조건을 무시하는 것입니다하지만 때로는 작동합니다

및 if 문을 만족시키지 않고 구성원 테이블을 업데이트하십시오. 테스트에서 무작위로 포인트를 추가하거나 포인트를 뺍니다. $ tehchance에서 난수를 출력했는데 1이나 2가 아닌 경우에도 점을 추가합니다. 그런 다음 가끔씩 멤버 테이블에 아무 것도하지 않습니다. 정말 혼란스러워.

아이디어가 있으십니까?

+0

먼저 생성 된 임의의 정수를 문자열 값과 비교합니다. – js1568

+0

... 그러면 뭔가 다른 점이 있습니다. –

+2

'if ($ tehchance == 2) {echo 'it is 2';}와 같은 조건부 블록 안에 디버그 에코를 추가하십시오./* 나머지 코드 ... * /}'. 아마도'$ tehchance'를 두 번 이상 수정하거나, 스크립트를 두 번 이상 실행하거나, 다른 곳에서 관련없는 업데이트를하는 것보다 더 많이 할 수 있습니다. – erisco

답변

1

는 IF-당시 다른 디버깅이를 사용해보십시오.

$tehchance = mt_rand(1,15); 

if ($tehchance === 1){ 
    echo 'doing 1'; 
    $thewin = 10; 
    mysql_query("UPDATE members SET Points = Points + $thewin WHERE Handle = '$members[Handle]'"); 
} else if ($tehchance === 2){ 
    echo 'doing 2'; 
    $thekhwin = 5; 
    $thexpwin = 10; 
    mysql_query("UPDATE members SET Points = Points - $thekhwin WHERE Handle = '$members[Handle]'"); 
    mysql_query("UPDATE members SET XP = XP + $thexpwin WHERE Handle = '$members[Handle]'"); 
} else { 
    echo 'doing nothing'; 
} 
+0

그 일을 마친 후에는 아무것도 수행하지 않으면 회원 테이블이 업데이트됩니다. 때로는 기대했던 것처럼 아무 일도하지 않을 것이고, 다른 때에는 포인트를 더할 것입니다. – Brad45

+0

다른 코드를 실행하는 것과 같은 소리가납니다. "아무것도하지 않고"다른 if 문을 실행해서는 안됩니다. –

+0

그건 내 물건에있는 유일한 종류의 코드입니다. 그것은 어디에도 없습니다. 회원 테이블로 업데이트하는 업적 함수가 있지만 점이나 XP를 추가하는 것과 아무 관계가 없습니다. 현재 일어나고있는 변경 사항은 포인트와 XP입니다. 가끔 무언가를하지 않는다고 말하면 무작위로 10 점을 더할 것입니다. 때때로 그것은 5 점을 빼고 10 XP를 더합니다. 원한다면 if 문과 같이 작동합니다. – Brad45

0

것은 당신이 문자열로 비교되기 때문에 "1"대신 숫자 1의 (따옴표없이)

+3

숫자를 비교하는 것이 더 좋을 것이지만, PHP는 값을 잘 변형 할 것이다. '1 == "1"'이 참이고'1 == "2"'가 거짓입니다. (이것들은 쉬운 경우이지만 흥미로운 변환 선택이 있습니다.) –

+0

방금 ​​인용 부호없이 숫자로 변경했지만 여전히 동일한 동작을합니다. – Brad45

+0

유효한 검색어입니까? Points = Points + $ points 먼저 'select points'쿼리를 수행하여 그 값을 얻지 않아도되고, 추가 된 값을 넣고 원래 UPDATE 쿼리에서 인라인으로 추가하지 않는 UPDATE를 수행 할 수 있습니까? – Fil

관련 문제