묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
소스 보신후에 답변 부탁 드립니다
2003.09.01 14:02
아래의 소스는 제로보드 사용자가 지금까지 적은 글과 코맨트를 전부 계산하여서 포인트를 다시 계산하여서 수정하는 소스 입니다. 그런데 문제점이 있습니다. 회원수와 게시판의 글이 너무 많은 경우에 계산을 하다가 중간에 멈추어 버립니다. 그래서 쿼리문을 조정 하면 가능 할것 같아서 여쭈어 봅니다.
현재의 방식은 아래의 소스를 파일로 저장해서 올린 후에 실행 시키면 전체회원을 회원번호 1부터 시작해서 마지막 회원번호까지 차례대로 계산을 하는 방식 입니다. 이것을 수동으로 회원번호 1부터 500 , 501부터 1000 이렇게 짤라서 실행 시킬수 있는 방법을 좀 알려 주시면 감사 하겠습니다.
<?
/****************************************/
$db_id = "디비아이디"; // 디비 아이디
$db_name = "디비네임"; // 디비 네임
$db_pw = "디비비번"; // 디비 비밀번호
/****************************************/
mysql_connect("localhost","$db_id","$db_pw") || die("sql에 연결실패");
mysql_select_db("$db_name");
$mem_list = mysql_query("select no,name from zetyx_member_table order by no");
while($mem_data = mysql_fetch_array($mem_list)){
$mem_no = $mem_data[no];
$mem_name = $mem_data[name];
$write = 0;
$comment = 0;
$board_list = mysql_query("select name from zetyx_admin_table");
while($board_data = mysql_fetch_array($board_list)){
$board_name = $board_data[name];
$write_num = mysql_fetch_array(mysql_query("select count(no) from zetyx_board_$board_name where ismember='$mem_no'+ '+ '"));
$write += $write_num[0];
$comment_num = mysql_fetch_array(mysql_query("select count(no) from zetyx_board_comment_$board_name where ismember='$mem_no'"));
$comment += $comment_num[0];
}
mysql_query("update zetyx_member_table set point1='$write',point2='$comment' where no='$mem_no'");
echo("$mem_no 번 $mem_name(W:$write, C:$comment) 완료
");
}
echo("포인트 초기화 정리 완료!!!!!!!!!!!!!!");
mysql_close();
?>
현재의 방식은 아래의 소스를 파일로 저장해서 올린 후에 실행 시키면 전체회원을 회원번호 1부터 시작해서 마지막 회원번호까지 차례대로 계산을 하는 방식 입니다. 이것을 수동으로 회원번호 1부터 500 , 501부터 1000 이렇게 짤라서 실행 시킬수 있는 방법을 좀 알려 주시면 감사 하겠습니다.
<?
/****************************************/
$db_id = "디비아이디"; // 디비 아이디
$db_name = "디비네임"; // 디비 네임
$db_pw = "디비비번"; // 디비 비밀번호
/****************************************/
mysql_connect("localhost","$db_id","$db_pw") || die("sql에 연결실패");
mysql_select_db("$db_name");
$mem_list = mysql_query("select no,name from zetyx_member_table order by no");
while($mem_data = mysql_fetch_array($mem_list)){
$mem_no = $mem_data[no];
$mem_name = $mem_data[name];
$write = 0;
$comment = 0;
$board_list = mysql_query("select name from zetyx_admin_table");
while($board_data = mysql_fetch_array($board_list)){
$board_name = $board_data[name];
$write_num = mysql_fetch_array(mysql_query("select count(no) from zetyx_board_$board_name where ismember='$mem_no'+ '+ '"));
$write += $write_num[0];
$comment_num = mysql_fetch_array(mysql_query("select count(no) from zetyx_board_comment_$board_name where ismember='$mem_no'"));
$comment += $comment_num[0];
}
mysql_query("update zetyx_member_table set point1='$write',point2='$comment' where no='$mem_no'");
echo("$mem_no 번 $mem_name(W:$write, C:$comment) 완료
");
}
echo("포인트 초기화 정리 완료!!!!!!!!!!!!!!");
mysql_close();
?>
이런씩으로 줄수 있도록 만들만 될겁니다.
물론 1,500은 폼에서 변수로 받아서 적용할수 있으면 더 좋겠죠.
만약 500씩 짤라서 자동으로 한다면 for명령 이용해도 됩니다.