[김성민]님이 남기신 글:
>안녕하세요.
>
>며칠을 헤메다 질문 드립니다....
>
>회원테이블에 last_visit 이라는 필드(datetime 형식)가 있고 그
안에는
>'2003-11-01 11:47' 과 같이 날짜가 입력 됩니다.
>위 날짜는 최종 갱신만 되는 것으로 Date('Y-m-d H:i:s') 로
입력했습니다.
>오늘 방문했다면 '2003-11-05 11:47' 과 같이 마지막 시간만
저장하는 겁니다.
>
>검색조건을 주려는데 날짜계산을 어떻게 해야 할지
몰라서요.
>
>CREATE TABLE member (
> id int(11) NOT NULL auto_increment,
> insert_date datetime default NULL,
> name varchar(30) default NULL,
> last_date datetime default NULL,
> PRIMARY KEY (id)
>) TYPE=MyISAM;
>
># A 사용자의 최종 방문일 '2003-11-01 11:47' #
>오늘이 2002년 11월 05 일이고 최종 방문일 이후 3일간 (2003-11-04
까지)
>방문기록이 없는 자료를 찾을려고 합니다.
>시간은 필요없고 날짜로만 찾을려고 하는데 특정일 이후 몇일?
이라는
>조건을 어떻게 주어야 하는지를 모르겠습니다.
>php 예문으로 설명을 주시면 대단히 감사하겠습니다.
>
기준이 최종방문일인데
이 시간 이후는 A 사용자의
방문 기록이 없는것이 정상아닌가요?
datetime 자료형은 내부적으로 정수 연산합니다.
따라서
A 사용자의 최종 방문일은 다음과 같은 쿼리로 구할 수
있습니다.
SELECT MAX(insert_date) FROM member WHERE id = 'foo';
그리고 2003-11-04 00:00:00 이후의 방문 기록이 있는 유저는
SELECT id FROM member WHERE insert_date > '2003-11-04 00:00:00';
이렇게 하면 됩니다.
이후의 방문 기록이 없는 유저는 한번이라고 방문한 모든
유저를 구하고
위의 유저를 빼주면 되겠죠.
PHP 배열을 이용하면 됩니다.
$방문하지 않는 유저 = array_diff($모든유저,$방문유저);
참고로 모든 유저는
SELECT id FROM member BGROP BY id;
이렇게 하면 됩니다.
물론 위의 SQL 의 결과를 하나씩 fetch 해서 배열로 만들어야
합니다.
>
>===================================================================
>질문 - 2
>===================================================================
>
><table width="600" cellpadding="2" cellspacing="1"
bgcolor="#CCCCCC">
><?
>$result=mysql_query("select usercase, name from member where status='1' and
sex='$sex'");
>while($row = mysql_fetch_array($result)){
> $usercase = explode("-",$row[usercase]);
> $output[$usercase[1]] = "<b>$usercase[1]</b><div
style='line-height:200%' align='center'>$row[name]</div>";
>}
>
>$total=120;
>
>for($i=1;$i<=$total;$i++){
>
>if($i%10==1){
> echo("<tr valign='top'>");
>}
> echo("<td ");
> if($output[$i]) echo "bgcolor='$bgcolor'"; else echo
"bgcolor='#FFFFFF'"; echo ("height='60'
width='60'>");
> if(!$output[$i]) echo "<b>{$i}</b>";
> else echo "$output[$i]";
> echo("</td>");
>if($i%10==0){
> echo("</tr>");
>}
> }
>?>
></table>
>
>가로로 10셀씩 120칸을 출력하면서 해당 사물함을 쓰고 있는
현황표를 만들고 있습니다.
>위와 같이 출력하는데 까지는 했는데, 사물함중에 열쇠가 없는
사물함이 있거든요?
>열쇠 없는 사물함에는 사물함 번호 $i 를 빨간색으로
표시할려고 합니다.
>
>근데 문제는 for 문을 돌면서 $i 와 열쇠없는 번호를 비교하는거
까지는 알겠습니다..
>
>if($i=="10" || $i=="12" || $i=="14") echo
"<font color='red'>$i</font>";
>
>이렇게요...
>
>근데 열쇠없는 사물함을 별도의 변수로 지정해놓고 쓰려고
하는데 도무지 모르겠습니다.
>
>mysql db 에 위와 같이 10, 12, 14 라는 번호들을 입력해 놓고
그것을 불러와서 $i 와 비교
>하려고 하면 어떻게 해야할지...
>번호들은 1개가 될수도 있고 여러개가 될수도
있구요..
>
>무슨 말인지는 아실것 같은데.... 위와 같이 || 또는이라는
조건을 안하고 변수로 지정된
>번호와 일치하는 것을 빨간색 글씨로 표시하고자 하는
겁니다...
>
>좀 갈쳐 주세요...답답해
죽겠습니다... ㅎㅎ
간단하게 배열변수를 사용하면 되겠네요.
체크는 in_array() 함수 사용.
만약 열쇠가 없는 사물함에 대한 배열변수는
$열쇠없음 = array(10,12,14);
if(in_array($i,$열쇠없음))
{
echo "$i 는 열쇠가 없습니다.";
}
else
{
echo "$i 는 열쇠가 있습니다.";
}
그외 array_search(), array_walk() 함수를 사용해도 되지만
위의 방법이 제일 간단하고 좋네요.
|