채택완료

최신글 자동갱신 하는법

2016-11-22 (화) 10:19:14 4,720

제가 달력을 이용한 일정게시판을 만들었는데요,, 이 게시판에서는 그날의 일정만 보여주도록 만들었습니다. 예를들어 22일이면 22일에 저장된 글만 나오게 만들었는데요

최신글에서 이 게시판을 불러오면 해당 날짜에 맞게 자동으로 갱신되지않고 수동으로 서버에 계속 올려줘야 날짜가 변경되더군요.. 그래서 매일 해당 게시판처럼 자동으로 갱신되게 하려면 어떻게 해야하나요??

<최신글>

Copy
<?php for ($i=0; $i<count($list); $i++) {  ?><?php echo substr($list[$i]['wr_2'],0,4).".".substr($list[$i]['wr_2'],4,2).".".substr($list[$i]['wr_2'],6,2); ?></div>      <?php	  $str1 = $list[$i]['wr_content'];	  $str2 = $list[$i]['wr_3'];            echo "<a href=\"".$list[$i]['href']."\">";				echo str_replace(',', '<br>', $str1);				echo str_replace(',', '<br>', $str2);            echo "</a>";     ?>    <?php }  ?>    <?php if (count($list) == 0) { //게시물이 없을 때  ?>    <div>게시물이 없습니다.</div>    <?php }  ?>

<게시판>

Copy
...<?$cday = 1;$sel_mon = sprintf("%02d",$month);	$query = "SELECT * FROM $write_table WHERE left(wr_1,6) <= '$year$sel_mon' and left(wr_2,6) >= '$year$sel_mon' ORDER BY wr_id ASC";$result = sql_query($query);$j=0; // layer id// 내용을 보여주는 부분while ($row = sql_fetch_array($result)) {  // 제목글 뽑아서 링크 문자열 만들기..  if( substr($row[wr_1],0,6) <  $year.$sel_mon ) {	 $start_day =1; 	 $start_day= (int)$start_day;  } else {	 $start_day = substr($row[wr_1],6,2);     $start_day= (int)$start_day;  }   if( substr($row[wr_2],0,6) >  $year.$sel_mon ) {	 $end_day = $lastday[$month];	 $end_day= (int)$end_day;  } else {	 $end_day = substr($row[wr_2],6,2);	 $end_day= (int)$end_day;  }   for ($i = $start_day ; $i <= $end_day;  $i++) {     $j++; // layer ID     if ($member[mb_level] < $board[bo_read_level]) {      $showLayer="" ;    } else {       $showLayer=" onmouseover=\"PopupShow('".$j."')\" onmouseout=\"PopupHide('".$j."')\" ";    }?><?    $html = 0;    if (strstr($row[wr_option], "html1"))      $html = 1;    else if (strstr($row[wr_option], "html2"))      $html = 2;      $viewlist = cut_str(conv_content($row[wr_content], $html),200,"…");	  $viewdiner = cut_str(conv_content($row[wr_3], $html),200,"…");?><?		//오늘 스케줄 구하기	if ($row[wr_id] != $sc_id && date('Ymd', strtotime($row[wr_1])) <= date(Ymd) && date('Ymd', strtotime($row[wr_2])) >= date(Ymd)) {				$today_schedule .= "<div class='food_head'>".substr($row['wr_1'],4,2)." 월&nbsp;".substr($row['wr_1'],6,2)." 일 <img src='../images/icon_today.png'></div>"; 		$str1 = $viewlist;		$str2 = $viewdiner;				$view1 = str_replace(',', '<br>', $str1);		$view2 = str_replace(',', '<br>', $str2); 		$today_schedule .= "<a href='".G5_BBS_URL."/board.php?bo_table=$bo_table&year=$year&month=$month&wr_id=$row[wr_id]&sc_no=$sc_no'>".$view1."</a>";		$today_schedule .= "<a href='".G5_BBS_URL."/board.php?bo_table=$bo_table&year=$year&month=$month&wr_id=$row[wr_id]&sc_no=$sc_no'>".$view2."</a>";	}		$sc_id = $row[wr_id];    }  }  // 달력의 틀을 보여주는 부분  $temp = 7- (($lastday[$month]+$dayoftheweek)%7);  if ($temp == 7) $temp = 0;     $lastcount = $lastday[$month]+$dayoftheweek + $temp;  for ($iz = 1; $iz <= $lastcount; $iz++) { // 42번을 칠하게 된다.    $bgcolor = "#ffffff";  // 쭉 흰색으로 칠하고    if ($b_year==$year && $b_mon==$month && $b_day==$cday) $bgcolor = "#003876";   // 오늘날짜 표기    if (($iz%7) == 1) echo ("<tr>"); // 주당 7개씩 한쎌씩을 쌓는다.    if ($dayoftheweek < $iz  &&  $iz <= $lastday[$month]+$dayoftheweek)	{	// 전체 루프안에서 숫자가 들어가는 셀들만 해당됨	// 즉 11월 달에서 1일부터 30 일까지만 해당	$daytext = "$cday";   // $cday 는 숫자 예> 11월달은 1~ 30일 까지	//$daytext 은 셀에 써질 날짜 숫자 넣을 공간	$daycontcolor = "" ; 	$daycolor = ""; 	if ($iz%7 == 1) $daycolor = "red"; // 일요일	if ($iz%7 == 0) $daycolor = "blue"; // 토요일	if ($b_year==$year && $b_mon==$month && $b_day==$cday) $daycolor = "white";	// 여기까지 숫자와 들어갈 내용에 대한 변수들의 세팅이 끝나고 	// 이제 여기 부터 직접 셀이 그려지면서 그 안에 내용이 들어 간다.	echo ("<td width=$col_width height=$col_height bgcolor=$bgcolor valign=top>"); 	$f_date = $year.sprintf("%02d",$month).sprintf("%02d",$cday); 	// 기념일 파일 내용 비교위한 변수 선언, 월과 일을 두자리 포맷으로 고정	if (strlen($month) == 1) { 		$monthp = "0".$month ;	} else {		$monthp = $month ; 	}	if (strlen($cday) == 1) {		$cdayp = "0".$cday ;	} else { 		$cdayp = $cday ; 	}	$memday = $year.$monthp.$cdayp;	$daycont = "" ;	// 기념일(양력) 표시	for($i=0 ; $i < sizeof($dayfile) ; $i++) {  // 파일 첫 행부터 끝행까지 루프		$arrDay = explode("|", $dayfile[$i]);		if($memday == $year.$arrDay[0]) {			$daycont = $arrDay[1]; 			$daycontcolor = $arrDay[2];			if(substr($arrDay[2],0,3)=="red") $daycolor = "red"; // 공휴일은 날짜를 빨간색으로 표시		}	}     if ($write_href) {       // $write_href (글쓰기 권한)이 있으면      // 날짜를 클릭하면 글씨쓰기가 가능한 링크를 넣어서 출력하기      echo "<a href='".G5_BBS_URL."/board.php?bo_table=$bo_table&year=$year&month=$month&wr_id=$row[wr_id]&sc_no=$sc_no'><font color='$daycolor'>$daytext</font></a>$moonday <font color='$daycontcolor'>$daycont</font>$blank $annivmoonday";    } else { // 글쓰기 권한이 없으면 글쓰기 링크는 넣지 않고 그냥 숫자와 기념일 내용만 출력하기        echo "<a href='".G5_BBS_URL."/board.php?bo_table=$bo_table&year=$year&month=$month&wr_id=$row[wr_id]&sc_no=$sc_no'><font color='$daycolor'>$daytext</font></a>";    }    echo $html_day[$cday];    echo ("</td>");  // 한칸을 마무리    $cday++; // 날짜를 카운팅  }   // 유효날짜가 아니면 그냥 회색을 칠한다.  else { echo ("     <td width=$col_width height=$col_height bgcolor=#ffffff valign=top>&nbsp;</td>"); }  if (($iz%7) == 0) echo ("  </tr>");   } // 반복구문이 끝남 ?>...

답변 2개 / 댓글 3개

채택된 답변
+20 포인트
2016-11-22 (화) 11:20:25

최신글 추출을 latest 스킨을 사용하시나요?

그렇다면 latest.lib.php 파일을 좀 수정해야할 필요가 있습니다.

그럴경우 제가 글로써 설명해드리기 어렵고, latest.lib.php 파일도 작업을해야하니..

최신글 추출부분만 따로 제작하는걸 추천해드립니다.

예제)

$ymd = date('Ymd');
$sql = " select * from 테이블명 where   left(wr_1,6) = '$ymd' ";
$result = sql_query($sql);

for($i=0; $i<$row=sql_fetch_array($result); $i++)  {

echo substr($row['wr_2'],0,4).".".substr($row['wr_2'],4,2).".".substr($row['wr_2'],6,2);

$str1 = $row['wr_content'];
$str2 = $row['wr_3'];
echo "<a href=\"".$row['href']."\">";
echo str_replace(',', '<br>', $str1);
echo str_replace(',', '<br>', $str2);
echo "</a>";

}

이런식으로 따로 쿼리로 추출.. 

답변에 대한 댓글 2개

2016-11-22 (화) 11:50:27
진짜 죄송한데.. 테이블 명에 제가 사용하는 게시판 테이블이름이 g5_write_aa 라고가정했을때
g5_write_aa 를 넣었는데 공백으로 나오면 어떻게하나요..?? sql 외부접근도 풀어놓은상태입니다ㅜㅜ
혹시몰라 'g5_write_aa' 처럼 ''도 넣어봤는데도 공백만나옵니다..ㅜㅜ
<?php
$ymd = date('Ymd');
$sql = " select * from g5_write_aa where left(wr_1,6) = '$ymd' ";
$result = sql_query($sql);
for($i=0; $i<$row=sql_fetch_array($result); $i++) {
?>
<?php echo substr($row['wr_1'],0,4).".".substr($row['wr_1'],4,2).".".substr($row['wr_1'],6,2); //제목 ?>

<?php
$str1 = $row['wr_content'];
$str2 = $row['wr_3'];

echo "<a href=\"".$row['href']."\">";
echo str_replace(',', '<br>', $str1);
echo str_replace(',', '<br>', $str2);
echo "</a>";
?>

<?php } ?>
2016-11-22 (화) 12:10:37
아 해결했습니다!! left(wr_1,6) >>left(wr_1,8) 로 하니 나오네요 ㅎㅎ
예제까지 작성해주시면서 답변 정말 감사합니다!!(__) :D
2016-11-22 (화) 10:26:47

최신글 올려주신건  쿼리를 가지고 보여지는 부분이고

쿼리쪽을 봐야 알거같아요.

$ymd = date('Ymd');

$query = "SELECT * FROM $write_table WHERE left(wr_1,6) = '$ymd' ";


이런식의 쿼리가 있어야하겠죠..

답변에 대한 댓글 1개

2016-11-22 (화) 10:34:14
음.. 아래 게시판에서 보여주는 부분도있는데 그곳에
$cday = 1;
$sel_mon = sprintf("%02d",$month);

$query = "SELECT * FROM $write_table WHERE left(wr_1,6) <= '$year$sel_mon' and left(wr_2,6) >= '$year$sel_mon' ORDER BY wr_id ASC";
라고 쿼리가 있긴하네용
최신글 쿼리문은
if (!G5_USE_CACHE || !file_exists($cache_file)) {
$list = array();

$sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
$board = sql_fetch($sql);
입니다

답변을 작성하려면 로그인이 필요합니다.