2013-01-05 3 views
2

일부 HTML에서 보낸 값을 기반으로 다른 mySQL 쿼리를 실행하기위한 PHP 코드가 있습니다. 내가 사용하는 경우PHP if/elseif 논리에 && 및 ||

<?php $day = date("w"); ?> 

을 : 다음 HTML에서 보낸 값은 내가 사용있어 현재 하루

<?php echo $day; ?> 

그것이 토요일이기 때문에이 (어떻게해야 무엇 인 6을 반환), 그래서 내 HTML/PHP 스크립트에 적절한 정보를 보내는 것을 확인할 수 있습니다.

내 스크립트에서는 if/elseif 구문에 큰 MySQL 쿼리 목록이 모두 & &이고 || 정황. 변수 $ noshow 나의 HTML 파일에서뿐만 아니라 전송

if(($noshow == 1) && ($day != 5 || $day != 6 || $day != 0)){ 
$run = mysql_query("UPDATE employee_data SET points=points+5 WHERE ID=" . $id) or die(mysql_error()); 
} 
elseif(($noshow == 1) && ($day == 5 || $day == 6 || $day == 0)){ 
$run = mysql_query("UPDATE employee_data SET points=points+7 WHERE ID=" . $id) or die(mysql_error()); 
} 

은 1의 값을 체크 박스의 형태입니다 (있는 경우 : 여기

처음 두 사람의 예입니다 확인). 그래서 내가해야할 일은 그날의 하루를 기준으로 쿼리를 실행하는 것입니다. 첫 번째 문장에서 html의 상자가 선택되어 있고 금요일, 토요일 또는 일요일 (5,6,0)이 아닌 경우 현재 점에 5를 더한 점을 업데이트하려고합니다.

다음 문장은 첫 번째 것과 같은 일을하기로되어 있지만, 그 날이 금요일, 토요일 또는 일요일 인 경우에만 수행됩니다. 스크립트는 내가 작성한 다양한 체크 박스/옵션에 대한 약 10 개의 다른 명령문과 함께 진행됩니다.

그래서 나는 데 문제는, 그것은 단지도 날이 내가이 문제를 약 2 시간 동안 빙빙 돌고있다

(제가 위에서 설명 된) 6 인으로, 첫 번째 문을 실행하는 것입니다 그리고 그것은 내 미친 운전. 나의 현재 생각은 if 문에 대한 나의 구문이 올바르지 않다는 것이다.

답변

4

매우 간단합니다. 첫 번째 진술은 하루가 6 일이라면 말할 수 있습니다.

IF DAY IS NOT EQUAL TO 5 
OR 
DAY IS NOT EQUAL TO 6 

그래서 5 일과 같지 않으면 작동합니다. 두 번째 성명서는 elseif이므로 처음 시도했을 때 작동하지 않습니다. 당신이 때 일 처음 문을 = 작동하지하려면 6 당신은 그래서 간단한 업데이트가 될 것이다 그것을

IF DAY IS NOT EQUAL TO 5 
AND 
DAY IS NOT EQUAL TO 6 

말할 필요

if(($noshow == 1) && ($day != 5 && $day != 6 && $day != 0)){ 
$run = mysql_query("UPDATE employee_data SET points=points+5 WHERE ID=" . $id) or die(mysql_error()); 
} 
elseif(($noshow == 1) && ($day == 5 || $day == 6 || $day == 0)){ 
$run = mysql_query("UPDATE employee_data SET points=points+7 WHERE ID=" . $id) or die(mysql_error()); 
} 

팁 :

때마다 IF 조건이 어떻게 작동하는지 혼란 스럽습니다. & & 및 || 영어로 읽고 예를 들어 첫 번째 문은 그것을 $ 하루! = 5 그것 때문에 true를 돌려줍니다 경우이 사항도 하루 6

+1

도움 주셔서 감사합니다. 매우 도움이되었습니다. –

+0

언제든지! 건배 :) –

0

에 사실 일 것입니다 좀 더 분명 할 것입니다 그런 식으로 읽기

IF NO SHOW IS 1 AND (DAY IS NOT EQUAL TO 5 OR DAY IS NOT EQUAL TO 6 OR DAY IS NOT EQUAL TO 0) 

과 같이 될 것이다 ||을 (를) 사용하는 경우 & &을 사용하여 모든 테스트가 필요하도록하십시오.

관련 문제