오을 혹은 일주일 이내에 가입한 사람 이름 뽑기 > 그누3질답

그누3질답

오을 혹은 일주일 이내에 가입한 사람 이름 뽑기 정보

그누보드 오을 혹은 일주일 이내에 가입한 사람 이름 뽑기

본문

제목 참 거창한데요.
오을 혹은 일주일 이내에 가입한 사람 이름 뽑기
이것 가능한가요?
최신글에서 어떻게 해야 하나요?

오늘 가입자 수가 아니라
가입자 이름을 뽑는 것 말입니다.
참 어렵겠지만 한 수 부탁 드립니다.
  • 복사

댓글 전체

a = mb_datetime 라 가정하구요

where a = now or a > now and a < prive
where a =              > now  and a < prive

어떤것을 쓰던지 상관 없을꺼 같아요..

아무튼 궁선영님 해결하셨는지 모르겠네요 ^^;;;
sjsjin님 약간 오류가 있습니다.

AND가 아닌 OR로 할경우
 WHERE  (mb_datetime <= '$now') or (mb_datetime > '$prive_week') ";
논리적 오류를 범합니다.

즉! 오늘 보다 작거나 작고  또는 일주일전보다 클때 라는 알고리즘이 생깁니다.

여기서 또는 이라는 말은 두가지중 하나의 조껀을 만족할때 이므로
모든 데이터는 오늘 보다 작게 됩니다.

그럼 where 조건과 상관없이 모든 회원의 이름을 뽑아오게 됩니다.

과거1주일부터 현재까지의 조건을 만족시키는 최적의 where절을 만들려면 다음처럼 하는것이 좋을듯 싶습니다.

        WHERE  mb_datetime > '$prive_week' ";

2004-10-27 00:00:00 보다 큰경우 회원이름을 뽑는다면 ( 미래회원데이터는 없으므로 만기는 현재)

하지만 혹시나 모를 코드 재사용을 생각하여 특정 범위를 주었습니다.
즉! 만료기간이 현재가 아닌 특정일일때
최대 날짜 <= Value > 최소날짜 이러한 논리를 위하여

      WHERE  mb_datetime <= '$now'    AND      mb_datetime > '$prive_week'

그래서 위와 같은 WHERE 질의를 적어드렸던 겁니다 ^^;;;

코드 사용을 Ctrl + C , Ctrl + V를 할수있게 만들어 드리지 못해서 죄송합니다.

이부분은 sjsjin님이 깔끔하게 적어주셨네요 감사합니다.
그럼 년/월/일 만 비교해서 오늘을 체크하면 되겠네요.(db 필드값이 날짜형식이므로..)

$now = date("Y-m-d");
$prive_week = date("Y-m-d",strtotime("-7 days");

WHERE  (left(mb_datetime,10)='$now') or (left(mb_datetime,10) > '$prive_week' and left(mb_datetime,10) < '$prive_week') ";

즉, 가입일이 오늘날짜 또는,
일주일전보다 크고 오늘날짜보다 작고..
그럼 정확하겠군요..

음..제 생각엔 쿼리를 2개로 나누는게 효율성 면에서 더 좋을것 같습니다.
오늘날짜로 뿌릴 쿼리와 일주일전부터 오늘이전까지(혹은 오늘까지)를 뿌릴 쿼리를 따로 날리는게 좋을듯 합니다.
위에 prosper 님글 조금 보충합니다.

<?
// 오늘 혹은 일주일 이라고 했으니....and 가 아닌 or 로 쿼리를 날리고,
$sql = " SELECT $mb[mb_name]
          FROM    $cfg[table_member]
          WHERE  (mb_datetime <= '$now') or (mb_datetime > '$prive_week') ";

// 앞에 골뱅이(@)를 넣는것은 존재하지 않을경우 오류메세지를 출력하지 않기 위하여..
$result = @mysql_query($sql);

for($i=0;$row=@mysql_fetch_array($result);$i++){
    //회원 이름출력
    echo "$row[0]";
}
?>
실제 쿼리는 이런식이 되겠네요

$now  = date("Y-m-d H:i:s", time());
$prive_week = mktime(00,00,00,27,10,2004); // 일주일전 날짜

$sql = " SELECT $mb[mb_name]
          FROM    $cfg[table_member]
          WHERE  mb_datetime <= '$now'
          AND      mb_datetime > '$prive_week'
        ";

이정도면 될까요???
© SIRSOFT
현재 페이지 제일 처음으로