웹마스터 팁

안녕하세요. 영택군 입니다.

^^흠.. 위젯 형식으로 만들면 좋겠지만 제가 XE를 공부를 안해서 ㅠ.ㅠ
( 개발 메뉴얼을 예전에 어디서 본것 같은데 어딘지 모르겟네요.. t.t )

일단 이건 제가 슬사모에서 출석부를 쓸려고 만든건데요. 필요하신분은 쓰세요.
(저만 테스트 한거라 오류에 대해서는.. 적어주시면.. 아는 한도내로 ^^; 답변 해드릴께요.)

두서가 없지만 설명 하겠습니다.

1. 작동방식

 - 우선 출석을 할 수 있는 게시판이 필요 합니다. ^^ 수동 출석 방식을 고수 하고 있습니다.
 - 출석 게시판에 글을 쓰면 출석으로 인정을 하게 되는거죠
 - 출석 게시판에 중복된 글을 남길수 있으며, 중복된 글을 남겨도 1회만 올라 갑니다.

2. 설치방법

 - 우선 게시판을 하나 생성 하세요. 그리고 글을 하나 써보세요
 - phpmyadmin등과 같은 툴을 이용해서 접속하여, xe_documents 라는 테이블이 있습니다.
 - xe_documents 라는 테이블 안에 보시면 좀전에 작성 하셨던 글이 보이실꺼예요.
 - 그글을 보시면 module_srl 이 몇번 인지 확인이 가능 하실꺼예요. ^^ 이걸 잘 기억해 주시기 바래용~
 - 그리고 아래 소스를 slothistory.php 라는 파일로 저장하세요. 
    (따른 이름으로 저장하셔도 됩니다만 관련된 소스 부분은 ^^ 잘 수정 하세요)
 - 그리고 저장하신 파일을 여신다음 아래의 해당부분을 수정 하세요.
 → $dbid : 자신의 MYSQL 계정 아이디
 → $dbpass : 자신의 MYSQL 계정 패스워트
 → $dbname : 자신의 MYSQL DB 네임~
 → $bbs : module_srl
 - 요렇게만 하시면 준비가 완료^^ 이제는 파일을 호스팅에 올리시고 불러 오시면 됩니다. ^^
 - 그리고 잘 꾸며서 사용 하시면 됩니다~
    ( ^^; 음!! 안에 문구등을 수정을 안했기 때문에 맞쳐서 수정 해서 사용하세요 )
 - 아또 그리고 calender.js 파일을 js 라는 폴더를 만드시고 안에 넣어주세요 ^^
    (같은 폴더에 넣으시면 <script src="js/calender.js" language="javascript"></script> 요부분 경로 수정 하세요 ^^)

123456.jpg456789.jpg

<?

$dbhost = "localhost";    
$dbid = ""; //계정, 아이디를 넣어 주세요       
$dbpass = "";  //계정, 패스워드를 넣어 주세요
$dbname = ""; //MYSQL DB네임을 넣어 주세요  
$connect=mysql_connect($dbhost,$dbid,$dbpass); 
mysql_select_db($dbname, $connect); 
mysql_query("set names utf8", $connect);

/* 기본설정 */

$bbs = 161; //

$reg_date=time();

/* 설정 */
$dbselect="xe_documents"; // 테이블

$result = mysql_query("select * from $dbselect", $connect);

$dbcount = mysql_num_rows($result);

/* 가장 마지막에 기록한 목록 */
$min_reg=mysql_fetch_array(mysql_query("select regdate from $dbselect where module_srl =$bbs ORDER BY regdate ASC LIMIT 0, 1",$connect));

/* 기본 분할 페이지 10 */
if(!isset($_GET['su'])||!ctype_digit($_GET['su'])){
$page=10;
}
else{
$page=$_GET['su'];
}

if(!isset($_GET['no'])||!ctype_digit($_GET['no'])){
$no=0;
}
else{
$no=$_GET['no'];
}

/* 기본 페이지 10 */
if(!isset($_GET['page'])||!ctype_digit($_GET['page'])){
$pagestart=0;
}
else{
if((ceil($dbcount/$page)-1)<$_GET['page']){
echo "<script>location.href = 'history.php';</script>;</script>";
}
else{
$pagestart=($_GET['page']*$page);
}
}

/* 날짜 검색 과련 */

if($_GET["now"]==0){
if(date(d,$reg_date)>=1&&date(d,$reg_date)<=31)
{
$now=date("Ym01000000",$reg_date);
}
}
else{
$now=date("Ymd000000",strtotime($_GET["now"]));
}

if($_GET["now1"]==0){
if(date(d,$reg_date)>=1&&date(d,$reg_date)<=31)
{
$now1=date("YmdHis",$reg_date);
}
}
else{
$now1=date("Ymd235959",strtotime($_GET["now1"]));
}

/* 조건에 맞는 검색 쿼리 */

$cesult = mysql_query("SELECT count(user_id) as total_sum , user_id , nick_name , regdate FROM xe_documents where module_srl =$bbs AND regdate >$now AND regdate <$now1 GROUP BY user_id", $connect);

$result = mysql_query("SELECT count(user_id) as total_sum , user_id , nick_name , max(regdate) as mdate FROM xe_documents where module_srl =$bbs AND regdate >$now AND regdate <$now1 GROUP BY user_id ORDER BY total_sum DESC LIMIT $pagestart , $page", $connect);


$cbcount = mysql_num_rows($cesult);
$dbcount = mysql_num_rows($result);

if(($cbcount/$page)<1) $tot_pages=0;
else $tot_pages = ceil($cbcount/$page)-1; // 전체 분할 페이지 수

/*  현재 선택된 분할 페이지 다음 페이지 리스트 수 */
$max_page = $_GET['page']+4;
if($tot_pages==0) $max_page=0;
elseif($max_page>$tot_pages) $max_page=$tot_pages;

/*  현재 선택된 분할 페이지 이전 페이지 리스트 수 */
$mix_page = $_GET['page']-4;
if($mix_page<=0) $mix_page=1;

?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>슬사모 출석 체크 리스트</title>
<!-- 달력 스크립트 -->
<script src="js/calender.js" language="javascript"></script>
<style type='text/css'>
a:link{text-decoration:none; color:#585458}
a:visited{text-decoration:none; color:#585458}
a:hover{text-decoration:none; color:#e757b7}
a:active{text-decoration:none; color:#e757b7}
</style>
<script type="text/javascript">
function go() // 날자 변수 가지고옴!!
{
location.href = "<?=$PHP_SELF?>?page=<?=$pagestart?>&su=<?=$page?><?if($no!=0){?>&no=<?=$no?><?}?>&now="+document.getElementById('now').value+"&now1="+document.getElementById('now1').value;
}
</script>
</head>
<body>
<form name='f' method="post" action="<?=$PHP_SELF?>"> 
<div style='width: 100%; padding: 10px; BORDER: #bbbbbb 3px solid; BACKGROUND-COLOR: #ffffff; font-size: 9pt; font-family: Comic Sans MS; text-align: center; background-color: #46C6C6; margin-bottom: 5px;'>
<div style='padding-bottom: 8;'>※ 슬사모 출석현황 [ <a href="slothistory.php">처음으로</a> ]</div>
<input type='text' name='now' style='border: #bbbbbb solid 1px;' onclick="check_mouse('f.'+this.name)" value="<?=$now?>" size='12'>
<input type='text' name='now1' style='border: #bbbbbb solid 1px;' onclick="check_mouse('f.'+this.name)" value="<?=$now1?>" size='12'>
<input type="button" onclick="javascript:go();" style="border: solid 1px; color:white; background-color:rgb(102,153,255); border-width:1; border-color:#E0E0E0; border-style:none;" value=" 검색 ">
</div>
</form>
<div style='width: 100%; padding: 5px; BORDER: #bbbbbb 3px solid; BACKGROUND-COLOR: #ffffff; font-size: 9pt; font-family: Comic Sans MS; text-align: center; margin-bottom: 5px;'>
페이지당 출력 수 : 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=10<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">10</a> | 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=20<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">20</a> | 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=30<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">30</a> | 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=40<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">40</a> | 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=50<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">50</a> | 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=60<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">60</a> | 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=70<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">70</a> | 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=80<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">80</a> | 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=90<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">90</a> | 
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=100<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">100</a> |
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=300<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">300</a> |
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=500<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">500</a> |
<a href="<?=$PHP_SELF?>?page=<?=$pagestart?>&su=1000<?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>">1000</a>
</div>
<table style='width: 100%; border: #bbbbbb solid 3px; font-size: 9pt; font-family: Comic Sans MS; text-align: center; '>
<tr align="center" style='height: 25; background-color: #a0a0a0;'>
<td width="30">순번</td>
<td width="150">최종출석일</td>
<td>닉네임</td>
<td>아이디</td>
<!--<td>출석일수</td>-->
<td>출석일수</td>
</tr>
<?
if($dbcount) {
$i=$pagestart;
while ($row = mysql_fetch_object($result)) {
$i=$i+1;
?>
<tr onmouseover="this.style.backgroundColor='#E7E7E7'" onmouseout="this.style.backgroundColor=''">
<td align="center"><?=$i?></td>
<td align="center" width="150"><?=mb_strcut("$row->mdate",0,4)."-".mb_strcut("$row->mdate",4,2)."-".mb_strcut("$row->mdate",6,2)." ".mb_strcut("$row->mdate",8,2).":".mb_strcut("$row->mdate",10,2).":".mb_strcut("$row->mdate",12,2)?></td>
<td align="center"><?=$row->nick_name?></td>
<td align="center"><?=$row->user_id?></td>
<!--<td align="center"><?=$row->total_sum?></td>-->
<td>
<?
$rjawmd = mysql_query("SELECT regdate FROM xe_documents WHERE module_srl =$bbs AND user_id ='$row->user_id' AND regdate >$now AND regdate <$now1 ORDER BY regdate ASC;", $connect);
for($g=0;$g<31;$g++){

$vv[$g]=0;

}
$sd=0;

while ($rows = mysql_fetch_object($rjawmd)) {

for($f=0;$f<(mb_strcut("$now1",6,2)*1);$f++) {

if(((mb_strcut("$now",0,8)*1)+$f)==(mb_strcut("$rows->regdate",0,8)*1)) {
$vv[$f]=1;

}

}

}

for($t=0;$t<(mb_strcut("$now1",6,2)*1);$t++){

$sd=$sd+$vv[$t];

}
echo $sd;
?>
</td>
</tr>
<?
}
}
?>
</table>
<div style='width: 100%; padding: 5px; BORDER: #bbbbbb 3px solid; BACKGROUND-COLOR: #ffffff; MARGIN-top: 5px; font-size: 9pt; font-family: Comic Sans MS; text-align: center;'>
<?

if($_GET['page']<10){
?>
<a href="<?$PHP_SELF?>?page=0&su=<?=$page?><?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>"> 처음 </a>
<?
}
elseif($_GET['page']>=10){
?>
<a href="<?$PHP_SELF?>?page=<?=($_GET['page']-10)?>&su=<?=$page?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>"> 이전 </a>
<?
}

/* 마지막 페이지 기준으로 분할페이지 표시 */
if(($tot_pages-$_GET['page']<4)&&$tot_pages>9){
if(($tot_pages-$_GET['page'])==0) $ss=8;
elseif(($tot_pages-$_GET['page'])==1) $ss=7;
elseif(($tot_pages-$_GET['page'+ '+ '])==2) $ss=6;
else $ss=5;
for($i=$_GET['page']-$ss;$i<=$_GET['page']-5;$i++)
{
$s=$i-1;
?>
[<a href="<?$PHP_SELF?>?page=<?=$s?>&su=<?=$page?><?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>"> <?=$i?> </a>]
<?
}
}

/* 현재 선택한 페이수 기준으로 앞 5 페이지 출력 */
for($i=$mix_page;$i<=$_GET['page'+ '];$i++)
{
$s=$i-1;
?>
[<a href="<?$PHP_SELF?>?page=<?=$s?>&su=<?=$page?><?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>"> <?=$i?> </a>]
<?
}

/* 분할페이지 표시 */
for($i=$_GET['page'];$i<=$max_page;$i++)
{
if($i==$_GET['page']){
if($_GET['page']==0){
$s=1;
}
else{
$s=$i+1;
$b=$i-1;
}
echo "<b>&nbsp;" .$s. "&nbsp;</b> ";
}
else{
$s=$i+1;
?>
[<a href="<?$PHP_SELF?>?page=<?=$i?>&su=<?=$page?><?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>"> <?=$s?> </a>]
<?
}
}
/* 처음페이지 선택 기준으로 5개 후미 5개 표시 */
if($mix_page<5&&$max_page>=4&&$tot_pages>5){
for($i=($_GET['page']+6);$i<=($tot_pages+1)&&$i<=10;$i++)
{
$s=$i-1;
?>
[<a href="<?$PHP_SELF?>?page=<?=$s?>&su=<?=$page?><?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>"> <?=$i?> </a>]
<?
}
}

if($tot_pages<($_GET['page']+10)){
$tot_pages=$tot_pages;
?>
<a href="<?$PHP_SELF?>?page=<?=$tot_pages?>&su=<?=$page?><?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>"> 마지막 </a>
<?
}
elseif($tot_pages>=($_GET['page']+10)){
?>
<a href="<?$PHP_SELF?>?page=<?=($_GET['page']+10)?>&su=<?=$page?><?if($no!=0){echo"&no=".$no."";}?><?if($now!=0){echo"&now=".$now."";}?><?if($now1!=0){echo"&now1=".$now1."";}?>"> 다음 </a>
<?
}
?>
</div>
</body>
</html>
<?
mysql_close($connect);
?>

제목 글쓴이 날짜
외부페이지 로그인 연동 [10] 응삼 2011.02.28
외부로그인을 어떻게 생성 하나요? [3] 엄경선 2011.02.08
외부에서 단독으로 xe게시판에 글 올리기, blogapi 기능 사용하여, [6] file 김기철980 2011.01.27
스크랩버튼 외부로 빼내기 [3] RainDrop+ 2011.01.04
외부에서 리눅스 텔넷 연결 [4] 화니 2003.10.21
외부페이지를 레이아웃에 결합시 상단 마진폭이 벌어지는 문제 해결방법 [6] file DuRi 2010.12.17
카페24 외부페이지로 트래픽 확인하기 [1] file teryboy 2010.10.09
FCKeditor에서도 확장 에디터를 외부로 빼내는 팁. file ZHANG™ 2010.08.15
''외부 페이지''에서 CSS/JS 파일 불러들이기 [2] xe-m 2010.06.11
외부프로그램에서 제로보드 xe 및 그누보드 회원 연동(로그인) 하기 - 초간단 [1] 한이73 2010.02.03
초보팁] 외부페이지에서 가져올 시 새창 띄우기 안되는거 수정하기(자바) [1] 파라테일 2009.12.10
싸이트 운영하면서 외부링크 차단하는방법 100% ok [12] 뭥미1 2009.07.10
외부문서에서 mms:// 태그 사용하기 [11] 아고라 2009.06.12
첨부파일의 외부 무단 링크 차단하기(XE) 게시판설정 [7] file 왕초보왕따 2009.03.02
외부페이지 또는 파일링크시 글자깨짐 현상 [1] file 소백산 2009.01.31
1.1.5 이후 버전 업데이트후 외부페이지에서 다음위젯이 표시안될때~ [3] 정박사닷컴 2009.01.23
제로보드XE 외부출석부 [1] file noirzo 2009.01.18
주소록 구현 (외부 페이지) [17] CSLab 2008.09.15
1.0.3버전 외부 페이지 쿼리 스트링 붙일때 주의 하세요. 그라미 2008.06.03
외부페이지 접근을 제로보드XE를 통해서만 접근을 허용 하고 싶다면 [9] 임기택924 2008.06.03