sun's longitude:241 43 33.39 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
1762 번 글의 답장글: Re: php 질문2
글쓴이: 산이 [홈페이지] 글쓴날: 2003년 11월 08일 19:02:39 토(저녁) 조회: 861

[김성민]님이 남기신 글:

>안녕하세요.
>
>답변 주신 내용은 알겠습니다. 감사합니다.
>그래도 모르겠는 부분이 있는데...
>
>A사용자 last_vist 필드에는 '2003-11-01 14:00:12' Date('Y-m-d
H:i:s')
>로 들어가 있습니다.
>
>오늘날짜를 2003-11-06 일로 구한다고 가정 하면?
>
>2003-11-01 이후부터 5일째인 2003-11-06 까지 방문기록이 없는
사용자
>를 찾을려고 합니다.
>중간에 방문을 했다면 2003-11-01 은 2003-11-03 등이 될수가
있겠고,
>이러면 검색대상이 아닌거죠...
>
>이럴경우에 쿼리를 어떻게 해야하는지 모르겠습니다. 시간을
어떻게
>계산해야 하는지..
>
>출석체크를 하는건데 5일동안 한번도 안나온 사람을
찾는거거든요..

>

mysql 3.23.x 라면 약간 복잡합니다.
이유는 서브쿼리나 UNION 구문을 지원하지 않기 때문이죠.

member 테이블의 자료는 방문자만의 기록이 저장되기 때문에
특정 기간(2003-11-01 ~ 2003-11-06)에 대한 기록이 없으면
방문하지 않는 걸로 설계되어 있겠죠.

따라서 한번의 쿼리로 원하는 결과를 얻을 수 없고
두번의 쿼리에서 얻은 각각의 ID(유저) 를 서로 연산(빼기)해야

합니다.(물론 배열이 편하겠지요.)

## 전체 유저(출석부 명단)
##
$member_table = 'member'
$sql = 'SELECT id FROM '.$member_table.' GROUP BY id';
if($result = mysql_query($result))
{
  while($row = mysql_fetch_row($result))
  { $all_users[] = $row[0]; }
  @mysql_free_result($result);
}

## (2003-11-01 ~ 2003-11-06) 사이의 방문자 유저
##
## 기준이 오늘(2003-11-06)의
 시각(시간이 아님)이고
## 5일 전까지이므로
## 
$where = date('Y-m-d H:i:s',time()-(86400*5))

$sql = 'SELECT id FROM '.$member_table.' WHERE > '.$where.' GROUP BY id';
if($result = mysql_query($result))
{
  while($row = mysql_fetch_row($result))
  { $recent_users[] = $row[0]; }
  @mysql_free_result($result);
}

## 최근 5일 동안 방문하지 않는 유저 계산
##
$not_recent_users = array_diff($all_users,$recent_users);

## 디버깅
##
echo '<PRE>';
print_r($not_recent_users);


4.0.x 버전이라면 UNION 으로 시도해 보세요.

http://www.mysql.com/doc/en/UNION.html



그외에

http://www.mysql.com/doc/en/Subqueries.html

에 보면 서브쿼리라는 것이 있습니다.
그런데 mysql 4.1 이상에서 가능합니다.



>## 질문 2 ##
>
>$not_key = array(10,20,30,40); 이와 같이 사물함 번호
체크하는것은
>성공 했습니다.
>근데 배열로 만들어야 하는 10,20,30,40 이 번호들을 db 에 담아서
쓸려고
>하는데 db 에서 읽어서 넣으면 처음 10번만 되고 뒤로는
안되더라고요.
>
>config 이라는 테이블에 not_usercase_m, not_usercase_w 와 같은 필드를
만들어서 10,20,30,40 이렇게 varchar 타입으로
입력했습니다.
>
>그리고,아래와
 같이 불러서 넣었습니다.
>
>$query=mysql_query("select not_usercase_m, not_usercase_w from config where
no='1'");
>$key_check=mysql_fetch_array($query);
>
>$not_key = array($key_check[not_usercase_m]);
>
>$not_key 를 echo 로 찍으면 10,20,30,40 이라고 나오는데, 실제 array
로
>넣으면 10 만 적용되고 뒤에 20,30,40 은 안먹더라고요..

>

아 config 테이블 레코드가 1개이고 not_usercase_m 컬럼이
varchar 형이군요. varchar(32) 면 너무 적군요.
varchar(255) 로 수정하는것이 좋겠네요. 유연하게...

>$not_key = array($key_check[not_usercase_m]);

이부분을

$not_key = explode(',',$key_check['not_usercase_m']);

으로 해야 합니다.
이유는 $key_check['not_usercase_m'] 값이 컴마(,)로 분리된
하나의 문자열이기 때문이죠.

## 디버깅
##
echo '<PRE>';
var_dump($not_key);

>
>## 질문 3 ##
>
>환경설정 테이블을 만드는경우 필요한 필드가 몇개밖에
없는데
>
>CREATE TABLE config (
>  no int(6) unsigned NOT NULL auto_increment,
>  admin_id varchar(12) default NULL,
>  admin_pw varchar(30) NOT NULL default '',
>  admin_name varchar(12) default NULL,
>  admin_email varchar(50) default NULL,
>  admin_telephone varchar(20) default NULL,
>  PRIMARY KEY  (no)
>) TYPE=MyISAM;
>
>이런식으로 밖에 못하는지요?
>레코드가 1개 밖에 없는데 위와 no를 PRIMARY KEY 쓰던지 다른 것을
PRIMARY KEY 로 지정해서 쓰던지 할수 밖에 없는데....
>1개의 레코드를 쓰기 위해서 PRIMARY KEY 를 어떤것이던 1개는
지정해서
>써야 하는거 같습니다.
>제가 말하면서도 이상하네요...ㅎㅎ

>위와 같이 하는게 맞는건지 그냥 궁금해서요..

레코드가 하나이면 굳지 PRIMARY KEY 같은 것은 사용할 필요도
없습니다. 또한 no 컬럼도 필요없겠죠.

CREATE TABLE config (
  admin_id varchar(12) default NULL,
  admin_pw varchar(30) NOT NULL default '',
  admin_name varchar(12) default NULL,
  admin_email varchar(50) default NULL,
  not_usercase_m varchar(255) default NULL, /*** 빠져있네요 ***/
  not_usercase_w varchar(255) default NULL, /*** 이것도 ***/
  admin_telephone varchar(20) default NULL
) TYPE=MyISAM MAX_ROWS=1 COMMENT="관리자용
 설정 테이블";

> 
>
>다시 한번만 설명 주시면 감사 하겠습니다... 

========================================

 
이전글 : php 질문2
다음글 : 파일내부의 문구를 찾으려면..  
 from 61.254.75.40
JS(Redhands)Board 0.4 +@

php 질문2 파일내부의 문구를 찾으려면..
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2024. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds