묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
갤러리 통합 최근게시물 문의요..에러가 심합니다.
2003.10.14 14:58
제가 워낙에초보라서
여기저기서 스킨들을 구하고 그것들을 아주조금씨 수정하는정도로 제로보드를 사용하는데요....
제가 하고자하는것은 제품소개게시판(갤러리라고보죠..)에서 통합된 최근게시물을 뽑는것입니다...
초보라 어려운줄도 모르고 무턱대고 덤벼들었는데..ㅡ..ㅡ;;
일반게시물통합추출 소스는 구하였습니다. 하지만 이미지가 안나오네요...
나름데로 이미지나오는구문을 제로보드에서 카피해왔는데 치명적인오류가 떠요....
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1215 bytes) in /www/tklight/html/recent.php on line 100
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 150 bytes) in Unknown on line 0
이라는 아래에 소스를 카피해두었습니다.꼭좀 부탁드립니다.
<!--- 소스 시작. -->
<!-- 새로 php파일을 만들어 소스를 복사한 후 제로보드 경로와 게시판 아이디 부분을 수개한후 실행하세요 -->
<?
// 제로보드 디렉토리 설정부분 아웃로그인
// 주의: 아래부분의 설정은 자신의 계정에 맞게 고쳐주세요.
$_zb_url = "http://www.tklight.co.kr/bbs/";
$_zb_path = "/www/tklight/bbs/";
include $_zb_path."outlogin.php";
// 설정부분 끝.
//////////////////////////////////////////////////
// 최근게시물 함수 지정
///////////////////////////////////////////////////
function recent_gallery($skinname, $title, $num=10, $xsize=80, $ysize=80, $xnum=10) {
global $_zb_path, $_zb_url, $connect, $t_board, $t_comment, $admin_table, $mb_id, $mb_conf, $mb_title;
//////////////////////////////////////
// 스킨의 존재여부 검사
$str = zReadFile($_zb_path."latest_skin/".$skinname."/main.html");
if(!$str) {
echo "지정하신 $skinname 이라는 최근목록 스킨이 존재하지 않습니다<br>";
return;
}
//////////////////////////////////////
// 필요한 변수 받아내기
if(!$mb_conf[icon])
$ico = "<img src=".$zb_url."images/dot_green.gif width=7 height=7>";
else
$ico = $mb_conf[icon];
$id = $mb_id; // id 받기
$idTitle = $mb_title; //각 게시판의 이름 받기
$cutTimeMode = $mb_conf[timemode]; // 최근 게시물 시간 범위
$showCategory = 1 - $mb_conf[nocategory]; //카테고리 보이기 값
$showIdtitle = $mb_conf[showidtitle]; // 게시판 이름 보이기 값
$myTitle = $mb_conf[mytitle];
for( $i = 0; $i < sizeof($id); $i++){
$setup = mysql_fetch_array(mysql_query("select use_alllist, use_category from $admin_table where name='".$id[$i]."'"));
if($setup[use_alllist])
$target[$id[$i]] = "zboard.php?id=";
else
$target[$id[$i]] = "view.php?id=";
if($setup[use_category]) $use_category[$id[$i]] = 1;
$idTitle[$id[$i]] = $mb_title[$i];
}
// 스킨 관련 변수
$tmpStr = explode("[loop]",$str);
$header = $tmpStr[0];
$tmpStr2 = explode("[/loop]",$tmpStr[1]);
$loop = $tmpStr2[0];
$footer = $tmpStr2[1];
//////////////////////////////////////
// 처리 시작
$tc = 0; //전체 데이타 카운터
$icon_new = "<img src='".$_zb_url."images/new_writing.gif'>";
$time_new = time() - 3600 * 24;
/* 뽑을 게시물 시간범위 관련 설정 시작 */
// $cutTimeMode가 1 이면 24시간 이내의 게시물 추출
// $cutTimeMode가 2 이면 오늘 새벽 0시0분부터 올라온 게시물 추출
// $cutTimeMode가 0 혹은 기타 수일 때 그냥 최근올려진 순서로 추출(시간제한 없음)
if($cutTimeMode == 1){
$cut_time = time() - 3600 * 24; // 24시간이내
}else if($cutTimeMode == 2){
$cut_time = mktime(0,0,0,date("m"),date("d"),date("Y")); // 오늘 아침 0시부터
}else{
$cut_time = 0;
}
/* 뽑을 게시물 시간범위 관련 설정 끝. */
// 최근 글 순으로 게시물 뽑음
for( $i = 0; $i < sizeof($id); $i++){
$query = "select * from ".$t_board."_".$id[$i]." where is_secret=0 and reg_date > $cut_time order by no desc limit $num";
$result = mysql_query($query, $connect) or die(mysql_error());
while($data=mysql_fetch_array($result)){
if(eregi(".gif|.jpg",$data[file_name1])) $filename = $_zb_url.$data[file_name1];
elseif(eregi(".gif|.jpg",$data[file_name2])) $filename = $_zb_url.$data[file_name2];
else $filename="";
if($filename) $imgList.="<a href='".$_zb_url.$target."&no=$data[no]'><img src='$filename' border=1 style=border-color:black width=$xsize height=$ysize vspacing=10 hspacing=10></a>";
else $imgList.="<a href='".$_zb_url.$target."&no=$data[no]'><img src='[dir]t.gif' border=1 style=border-color:black width=$xsize height=$ysize vspacing=10 hspacing=10></a>";
$i++;
if($i>=$xnum) {
$imgList.="<br>";
$i=0;
} else {
$imgList.=" ";
}
$str = str_replace("[title]","<a href='".$_zb_url."zboard.php?id=".$id."'>".$title."</a>",$str);
$str = str_replace("[img]",$imgList,$str);
$str = str_replace("[dir]",$_zb_url."latest_skin/".$skinname."/images/",$str);
$ad[$tc][name] = stripslashes($data[name]);
$ad[$tc][subject] = cut_str(stripslashes($data[subject]), $textlen)."</font></b>";
$ad[$tc][date] = date($datetype, $data[reg_date]);
$ad[$tc][reg_date] = $data[reg_date];
$last_comment = mysql_fetch_array(mysql_query("select * from $t_comment"."_$id[$i] where parent='$data[no]' order by reg_date desc limit 1"));
$last_comment_time = $last_comment['reg_date'];
if(time()-$last_comment_time<3600*12)
$comment_num = "[<font color=red>".$data[total_comment]."</font>]";
elseif(time()-$last_comment_time<3600*24)
$comment_num = "[<font color=green>".$data[total_comment]."</font>]";
else
$comment_num = "[".$data[total_comment]."]";
$ad[$tc][comment] = $data[total_comment] ? $comment_num : "";
$ad[$tc][icon] = $data[reg_date] > $time_new ? $icon_new : "";
$ad[$tc][target] = $_zb_url.$target[$id[$i]].$id[$i]."&no=".$data[no];
$ad[$tc][catelink] = $_zb_url."zboard.php?id=".$id[$i]."&category=".$data[category];
$ad[$tc][id] = $id[$i];
$ad[$tc][no] = $data[no];
$category = $data[category];
$result_category = mysql_query("select * from zetyx_board_category_".$id[$i]." where no='$category'") or die(mysql_error());
$category = mysql_fetch_array($result_category);
$ad[$tc][cate] = $category[name];
$tm[$tc] = $data[reg_date];
$map[$data[reg_date]] = $tc;
$tc++;
}
}
///////////////
// output
// 모든게시물을 시간순으로 정렬
if($tc)
sort($tm);
// 스킨관련 부분
// $mbName, $mbDate, $mbSubject, $mbComment, $mbCategory;
// 최근 게시물 순으로 $num만큼 출력
for($i = sizeof($tm)-1; $i >= sizeof($tm)-$num && $i >= 0; $i--){
$n = $map[$tm[$i]];
//print "$ico ";
$mbCategory = "";
// 게시판 이름 보이기
if($showIdtitle){
$mbCategory = "[ <a href=".$_zb_url."zboard.php?id=".$ad[$n][id]."><font color=black>".$idTitle[$ad[$n][id]]."</font></a>";
if($showCategory)
$mbCategory .= ">";
else
$mbCategory .= " ]";
}
// 카테고리 표시하지 않기를 선택했다면 카테고리 감추고 자신이 정의한 제목을 앞에 달음
if($showCategory){
if(!$showIdtitle) print "[ ";
$mbCategory .= "<a href=".$ad[$n][catelink]."><font color=black>".$ad[$n][cate]."</font></a> ]";
}else{
$mbCategory .= $myTitle;
}
$mbSubject = "<a href=".$ad[$n][target]." title='작성자:".$ad[$n][name]." 작성일:".$ad[$n][date]."'>";
$mbSubject .= $ad[$n][subject];
$mbSubject .= "</a> ".$ad[$n][icon];
$mbComment = $ad[$n][comment];
$mbName = $ad[$n][name];
$mbDate = $ad[$n][date];
$main = $loop;
$main = str_replace("[name]",$mbName,$main);
$main = str_replace("[date]",$mbDate,$main);
$main = str_replace("[subject]",$mbSubject,$main);
$main = str_replace("[comment]",$mbComment,$main);
$main = str_replace("[category]",$mbCategory,$main);
$main_data .= "n".$main;
}
// 전체 출력 문자열을 모아놓기
$list = $header.$main_data.$footer;
$list = str_replace("[title]",$title,$list);
$list = str_replace("[dir]",$_zb_url."latest_skin/".$skinname."/images/",$list);
// 출력
echo $str;
}
?>
여기저기서 스킨들을 구하고 그것들을 아주조금씨 수정하는정도로 제로보드를 사용하는데요....
제가 하고자하는것은 제품소개게시판(갤러리라고보죠..)에서 통합된 최근게시물을 뽑는것입니다...
초보라 어려운줄도 모르고 무턱대고 덤벼들었는데..ㅡ..ㅡ;;
일반게시물통합추출 소스는 구하였습니다. 하지만 이미지가 안나오네요...
나름데로 이미지나오는구문을 제로보드에서 카피해왔는데 치명적인오류가 떠요....
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1215 bytes) in /www/tklight/html/recent.php on line 100
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 150 bytes) in Unknown on line 0
이라는 아래에 소스를 카피해두었습니다.꼭좀 부탁드립니다.
<!--- 소스 시작. -->
<!-- 새로 php파일을 만들어 소스를 복사한 후 제로보드 경로와 게시판 아이디 부분을 수개한후 실행하세요 -->
<?
// 제로보드 디렉토리 설정부분 아웃로그인
// 주의: 아래부분의 설정은 자신의 계정에 맞게 고쳐주세요.
$_zb_url = "http://www.tklight.co.kr/bbs/";
$_zb_path = "/www/tklight/bbs/";
include $_zb_path."outlogin.php";
// 설정부분 끝.
//////////////////////////////////////////////////
// 최근게시물 함수 지정
///////////////////////////////////////////////////
function recent_gallery($skinname, $title, $num=10, $xsize=80, $ysize=80, $xnum=10) {
global $_zb_path, $_zb_url, $connect, $t_board, $t_comment, $admin_table, $mb_id, $mb_conf, $mb_title;
//////////////////////////////////////
// 스킨의 존재여부 검사
$str = zReadFile($_zb_path."latest_skin/".$skinname."/main.html");
if(!$str) {
echo "지정하신 $skinname 이라는 최근목록 스킨이 존재하지 않습니다<br>";
return;
}
//////////////////////////////////////
// 필요한 변수 받아내기
if(!$mb_conf[icon])
$ico = "<img src=".$zb_url."images/dot_green.gif width=7 height=7>";
else
$ico = $mb_conf[icon];
$id = $mb_id; // id 받기
$idTitle = $mb_title; //각 게시판의 이름 받기
$cutTimeMode = $mb_conf[timemode]; // 최근 게시물 시간 범위
$showCategory = 1 - $mb_conf[nocategory]; //카테고리 보이기 값
$showIdtitle = $mb_conf[showidtitle]; // 게시판 이름 보이기 값
$myTitle = $mb_conf[mytitle];
for( $i = 0; $i < sizeof($id); $i++){
$setup = mysql_fetch_array(mysql_query("select use_alllist, use_category from $admin_table where name='".$id[$i]."'"));
if($setup[use_alllist])
$target[$id[$i]] = "zboard.php?id=";
else
$target[$id[$i]] = "view.php?id=";
if($setup[use_category]) $use_category[$id[$i]] = 1;
$idTitle[$id[$i]] = $mb_title[$i];
}
// 스킨 관련 변수
$tmpStr = explode("[loop]",$str);
$header = $tmpStr[0];
$tmpStr2 = explode("[/loop]",$tmpStr[1]);
$loop = $tmpStr2[0];
$footer = $tmpStr2[1];
//////////////////////////////////////
// 처리 시작
$tc = 0; //전체 데이타 카운터
$icon_new = "<img src='".$_zb_url."images/new_writing.gif'>";
$time_new = time() - 3600 * 24;
/* 뽑을 게시물 시간범위 관련 설정 시작 */
// $cutTimeMode가 1 이면 24시간 이내의 게시물 추출
// $cutTimeMode가 2 이면 오늘 새벽 0시0분부터 올라온 게시물 추출
// $cutTimeMode가 0 혹은 기타 수일 때 그냥 최근올려진 순서로 추출(시간제한 없음)
if($cutTimeMode == 1){
$cut_time = time() - 3600 * 24; // 24시간이내
}else if($cutTimeMode == 2){
$cut_time = mktime(0,0,0,date("m"),date("d"),date("Y")); // 오늘 아침 0시부터
}else{
$cut_time = 0;
}
/* 뽑을 게시물 시간범위 관련 설정 끝. */
// 최근 글 순으로 게시물 뽑음
for( $i = 0; $i < sizeof($id); $i++){
$query = "select * from ".$t_board."_".$id[$i]." where is_secret=0 and reg_date > $cut_time order by no desc limit $num";
$result = mysql_query($query, $connect) or die(mysql_error());
while($data=mysql_fetch_array($result)){
if(eregi(".gif|.jpg",$data[file_name1])) $filename = $_zb_url.$data[file_name1];
elseif(eregi(".gif|.jpg",$data[file_name2])) $filename = $_zb_url.$data[file_name2];
else $filename="";
if($filename) $imgList.="<a href='".$_zb_url.$target."&no=$data[no]'><img src='$filename' border=1 style=border-color:black width=$xsize height=$ysize vspacing=10 hspacing=10></a>";
else $imgList.="<a href='".$_zb_url.$target."&no=$data[no]'><img src='[dir]t.gif' border=1 style=border-color:black width=$xsize height=$ysize vspacing=10 hspacing=10></a>";
$i++;
if($i>=$xnum) {
$imgList.="<br>";
$i=0;
} else {
$imgList.=" ";
}
$str = str_replace("[title]","<a href='".$_zb_url."zboard.php?id=".$id."'>".$title."</a>",$str);
$str = str_replace("[img]",$imgList,$str);
$str = str_replace("[dir]",$_zb_url."latest_skin/".$skinname."/images/",$str);
$ad[$tc][name] = stripslashes($data[name]);
$ad[$tc][subject] = cut_str(stripslashes($data[subject]), $textlen)."</font></b>";
$ad[$tc][date] = date($datetype, $data[reg_date]);
$ad[$tc][reg_date] = $data[reg_date];
$last_comment = mysql_fetch_array(mysql_query("select * from $t_comment"."_$id[$i] where parent='$data[no]' order by reg_date desc limit 1"));
$last_comment_time = $last_comment['reg_date'];
if(time()-$last_comment_time<3600*12)
$comment_num = "[<font color=red>".$data[total_comment]."</font>]";
elseif(time()-$last_comment_time<3600*24)
$comment_num = "[<font color=green>".$data[total_comment]."</font>]";
else
$comment_num = "[".$data[total_comment]."]";
$ad[$tc][comment] = $data[total_comment] ? $comment_num : "";
$ad[$tc][icon] = $data[reg_date] > $time_new ? $icon_new : "";
$ad[$tc][target] = $_zb_url.$target[$id[$i]].$id[$i]."&no=".$data[no];
$ad[$tc][catelink] = $_zb_url."zboard.php?id=".$id[$i]."&category=".$data[category];
$ad[$tc][id] = $id[$i];
$ad[$tc][no] = $data[no];
$category = $data[category];
$result_category = mysql_query("select * from zetyx_board_category_".$id[$i]." where no='$category'") or die(mysql_error());
$category = mysql_fetch_array($result_category);
$ad[$tc][cate] = $category[name];
$tm[$tc] = $data[reg_date];
$map[$data[reg_date]] = $tc;
$tc++;
}
}
///////////////
// output
// 모든게시물을 시간순으로 정렬
if($tc)
sort($tm);
// 스킨관련 부분
// $mbName, $mbDate, $mbSubject, $mbComment, $mbCategory;
// 최근 게시물 순으로 $num만큼 출력
for($i = sizeof($tm)-1; $i >= sizeof($tm)-$num && $i >= 0; $i--){
$n = $map[$tm[$i]];
//print "$ico ";
$mbCategory = "";
// 게시판 이름 보이기
if($showIdtitle){
$mbCategory = "[ <a href=".$_zb_url."zboard.php?id=".$ad[$n][id]."><font color=black>".$idTitle[$ad[$n][id]]."</font></a>";
if($showCategory)
$mbCategory .= ">";
else
$mbCategory .= " ]";
}
// 카테고리 표시하지 않기를 선택했다면 카테고리 감추고 자신이 정의한 제목을 앞에 달음
if($showCategory){
if(!$showIdtitle) print "[ ";
$mbCategory .= "<a href=".$ad[$n][catelink]."><font color=black>".$ad[$n][cate]."</font></a> ]";
}else{
$mbCategory .= $myTitle;
}
$mbSubject = "<a href=".$ad[$n][target]." title='작성자:".$ad[$n][name]." 작성일:".$ad[$n][date]."'>";
$mbSubject .= $ad[$n][subject];
$mbSubject .= "</a> ".$ad[$n][icon];
$mbComment = $ad[$n][comment];
$mbName = $ad[$n][name];
$mbDate = $ad[$n][date];
$main = $loop;
$main = str_replace("[name]",$mbName,$main);
$main = str_replace("[date]",$mbDate,$main);
$main = str_replace("[subject]",$mbSubject,$main);
$main = str_replace("[comment]",$mbComment,$main);
$main = str_replace("[category]",$mbCategory,$main);
$main_data .= "n".$main;
}
// 전체 출력 문자열을 모아놓기
$list = $header.$main_data.$footer;
$list = str_replace("[title]",$title,$list);
$list = str_replace("[dir]",$_zb_url."latest_skin/".$skinname."/images/",$list);
// 출력
echo $str;
}
?>