2010-12-15 3 views
0
$nextWeek = time() + (7 * 24 * 60 * 60); 

이것은 데이터베이스에 추가됩니다.시간이 지난 경우

시간을 현재 시간()으로 지정하거나 미래의 시간을 선택하고 싶습니다. 과거에는 선택하지 않았습니다.

시간이 과거가 아닌 DB에서 * 선택하고 싶습니다. 장래에 있습니다. 또는 선물.

SELECT * FROM affbanners WHERE timedate=what and active=1 order by rand() limit 1 

나는 존재하거나 미래가 아닌 과거의 날짜를 원합니다. 그것은 시간이 아직 지났음에 틀림 없다는 것을 의미합니다.

timedate은 당신은 당신의 PHP 스크립트에 현재 시간을 계산하고 $ 시간에이를 넣을 수 있습니다

$nextWeek = time() + (7 * 24 * 60 * 60); 

답변

3

는 단순히 형식의 쿼리 사용할 수 있습니다 : 내가 가고 싶어 질문과 유지, 그러나

SELECT * FROM <table name> WHERE <time field> >= NOW(); 

을위한 ...

$nextWeek = time() + (7 * 24 * 60 * 60); 
$queryString = 'SELECT * FROM affbanners WHERE active=1 AND timedate >= "'.$nextWeek.'"' ORDER BY RAND() LIMIT 1'; 

그렇다면 배너를 "균형 잡힌"(단순히 무작위가 아닌) 방식으로 선택 할지를 고려하고 싶을 것입니다.

이 작업을 수행하려면 : (. 즉, 각 배너는 대략 비슷한보기 속도를 가도록 (듯이))에, 당신이 필요로하는 것 :

  1. 는 '보기'를 추가 증가하는 (각 배너에 계산 때 배너가 표시됨). 물론 추적하는 경우 클릭 연결 등을 대신 사용할 수 있습니다.
  2. 같은 쿼리를 사용하여 ... affbanners FROM

    SELECT * WHERE 활성 = 1 AND timedate> = " '. $ nextWeek."VIEW_COUNT ASC의 LIMIT BY'ORDER 1

으로 이렇게하면 시간이 지남에 따라 조회 수가 균형을 이룰 것입니다.

UPDATE

그런 경우가 있다면, 나는 매우 (배너가 생성 될 때 채워) 데이터베이스에 STARTDATE 및 ENDDATE 필드를 가지고 쿼리 등을 사용하는 것이 유혹 할 것

SELECT * FROM affbanners WHERE active=1 AND startdate >= NOW() AND enddate <= DATE_ADD(NOW(), INTERVAL 1 WEEK) ORDER BY view_count ASC LIMIT 1 

물론 뷰, 클릭 연결 등을 추적해야합니다.

즉, 이것은 매우 문제가 해결되었으므로 OpenX과 같은 것을 사용하는 것이 더 쉽습니다. (다운로드 할 수있는 오픈 소스 버전이 있습니다.)

+0

$ nextWeek는 배너를 만드는 동안 정의되며 다시는 생성되지 않습니다. 그래서 timedate> = time();이어야합니다. ? – friendishan

+0

그 경우에는 "WHERE time> = NOW()"를 사용하십시오. 그러나 나는 이와 같은 상대 날짜를 저장하는 것이 상당히 의미가 없기 때문에 배너에 "미래"날짜를 저장하지 않으려 고합니다. 대신, "live from"과 "live until"날짜를 저장할 수 있습니까? 나는 이것이 당신의 삶을 장기적으로 더 쉽게 만들 것이라고 생각합니다. –

+0

좋아, 내가하려고하는 것은 매주 배너 회전 노출을 판매하는 것입니다. – friendishan

0

에 의해 정의된다. 그리고 랜드로 timedate> = $ 시간과 활성 = 1 위해()

이 당신에게 모든 배너를 제공해야합니다 그들의 시간은 지금 또는 미래에 설정 한 affbanners FROM

SELECT * 같은 쿼리를 수행합니다. 데이터베이스 서버의 시계가 정확하면

+0

그래서, $ time = time(); – friendishan

+0

예 또는 원하는 시간대. –

관련 문제