2013-09-27 5 views
0

세미나 게시를 처리하는 웹 페이지를 만들려고합니다. 만료일 (또는 세미나가 발생하는 날짜)을 넘은 세미나를 삭제하는 페이지를 원합니다. 내 테이블에는 월, 일, 일, 일 세 개의 날짜 슬롯이 있습니다. 그것들은 모두 테이블에있는 정수입니다.현재 날짜와 테이블 날짜를 기준으로 mysql 테이블 행 삭제

if(date("Y") > $info['year']) //if the year is old 
{ $sql = "DELETE FROM seminars WHERE ID = '$ID'"; 
    mysql_query($sql); } //then delete this seminar 
else if(date("Y") == $info['year'] && date("n") > $info['month']) //if we are in the year of the seminar, but the month is now old 
    { $sql = "DELETE FROM seminars WHERE ID = '$ID'"; 
     mysql_query($sql);} // then delete this seminar 

else if(date("Y") == $info['year'] && date("n") == $info['month'] && date("j") > $info['day']) //if we are in the year of the seminar and the month of the seminar, but the day is old 
    { $sql = "DELETE FROM seminars WHERE ID = '$ID'"; 
     mysql_query($sql); } // then delete this seminar 
else // if there is no reason to delete the seminar then print out this seminar 

위에서 볼 수 있듯이, 나는 한 달의 시스템 시간을 사용하여 각각을 비교하여 오래된 것이 있는지 확인했습니다. 그러나 결코 세미나를 삭제하지는 않습니다.

이제이 문은 테이블의 모든 행을 가져올 수 있도록 while 루프에 있기 때문에 $info이 테이블 행입니다. 그러나 delete 문이 작동하지 않더라도 세미나를 제대로 표시하지 못합니다. 마지막 else 문은 세미나가 시작되는 곳입니다.

누구든지이 작업을 수행하는 더 좋은 방법을 알고 있다면 많이 감사하겠습니다. 나는 잠시 동안 이것으로 고투하고있다.

+0

"나는 페이지에서 만료 날짜 (또는 세미나가 발생한 날짜)를 넘은 세미나를 삭제하려고합니다. "MySQL DATETIME 열 유형을 사용하지 않는 특별한 이유가 있습니까? – u54r

+0

양식에서 가져온 날짜를 해당 데이터 형식으로 변환하는 방법을 알지 못했습니다. – ForgottenOne

+0

'$ 년. '-'. $ month. '-'. $ date'는 유효한 MySQL DATE를 제공합니다. – TheWolf

답변

0

월, 일 및 연도에 각각 세 개의 열을 가질 필요는 없습니다. 대신 열 유형이 DATETIME 인 열이 하나만 있어야합니다. 이것은 당신의 일을 훨씬 쉽게 할 것입니다. 현재 날짜와 일치해야합니다. 그것은 하나의 날짜 열을 포함하는 테이블을 재 설계하는 것이 더있을 것이지만

1

, 당신은 다음과 같이 기존의 스키마를 사용할 수 있습니다

if (date("Y-m-d") > sprintf("%04d-%02d-%02d", $info['year'], $info['month'], $info['day'])) { 
    $sql = "DELETE FROM seminars WHERE ID = '$ID'"; 
    mysql_query($sql);} // then delete this seminar 
} 
0

당신이 할 수있는 일처럼 :

$infodate = strtotime(implode('-', array($info['year'], $info['month'], $info['day']))); 

if (time() > $infodate) { 
    mysql_query("DELETE FROM seminars WHERE ID = '$ID'") 
} else { 
    //print out this seminar 
}