갤러리에서 분류셀렉트박스를 풀려면.. 정보
갤러리에서 분류셀렉트박스를 풀려면..본문
짤방갤러리 스킨을 사용하고 있습니다.
list 상단에 분류가 셀렉트 박스를 사용하고 있자나요.
해당 부분이
<table width="100%" cellspacing="0" cellpadding="0">
<tr height="25">
<? if ($is_category) { ?>
<form name="fcategory" method="get">
<td width="50%">
<select name=sca onchange="location='<?=$category_location?>'+this.value;">
<option value=''>전체</option>
<?=$category_option?>
</select>
</td>
</form>
<? } ?>
<td align="right">
게시물 <?=number_format($total_count)?>건
<? if ($rss_href) { ?><a href='<?=$rss_href?>'><img src='<?=$board_skin_path?>/img/btn_rss.gif' border=0 align=absmiddle></a><?}?>
<? if ($admin_href) { ?><a href="<?=$admin_href?>"><img src="<?=$board_skin_path?>/img/admin_button.gif" title="관리자" width="63" height="22" border="0" align="absmiddle"></a><?}?></td>
</tr>
<tr><td height=5></td></tr>
</table>
인것 같습니다.
이대로 하면 셀렉트 박스로 분류가 나오자나요.
이것을 풀려고 합니다.
전체 | a | b | c| 모 이런식으로요...
나름 열심히 고쳐 밨는데...계속 에러가 나네요..
list 상단에 분류가 셀렉트 박스를 사용하고 있자나요.
해당 부분이
<table width="100%" cellspacing="0" cellpadding="0">
<tr height="25">
<? if ($is_category) { ?>
<form name="fcategory" method="get">
<td width="50%">
<select name=sca onchange="location='<?=$category_location?>'+this.value;">
<option value=''>전체</option>
<?=$category_option?>
</select>
</td>
</form>
<? } ?>
<td align="right">
게시물 <?=number_format($total_count)?>건
<? if ($rss_href) { ?><a href='<?=$rss_href?>'><img src='<?=$board_skin_path?>/img/btn_rss.gif' border=0 align=absmiddle></a><?}?>
<? if ($admin_href) { ?><a href="<?=$admin_href?>"><img src="<?=$board_skin_path?>/img/admin_button.gif" title="관리자" width="63" height="22" border="0" align="absmiddle"></a><?}?></td>
</tr>
<tr><td height=5></td></tr>
</table>
인것 같습니다.
이대로 하면 셀렉트 박스로 분류가 나오자나요.
이것을 풀려고 합니다.
전체 | a | b | c| 모 이런식으로요...
나름 열심히 고쳐 밨는데...계속 에러가 나네요..
댓글 전체
아래쪽에 보시면..
<script language="JavaScript">
if ("<?=$sca?>") document.fcategory.sca.value = "<?=$sca?>";
if ("<?=$stx?>") {
document.fsearch.sfl.value = "<?=$sfl?>";
document.fsearch.sop.value = "<?=$sop?>";
}
</script>
이런 소스가 있을겁니다. 셀렉트 박스형식의 폼 관련 자바스크립트로..
가로 카테고리로 처리시 필요 없어집니다.
삭제 또는 주석 처리하시면 됩니다.
그나저나, '에러가 나옵니다.' 라고만 하시면 다른분들은 어떤 에러가 나오는지 알 수 없으므로 제대로 된 답변을 드릴 수 없습니다.
팝업으로 에러정보가 뜨지 않으면..익스 하단에 오류표시인 노란느낌표를 더블클릭하면.. 오류정보가 뜹니다.
그 오류를 작성해주시면 50%정도는 원인파악이 쉽게 되니 빠른 답변을 얻으실 수 있을겁니다.
<script language="JavaScript">
if ("<?=$sca?>") document.fcategory.sca.value = "<?=$sca?>";
if ("<?=$stx?>") {
document.fsearch.sfl.value = "<?=$sfl?>";
document.fsearch.sop.value = "<?=$sop?>";
}
</script>
이런 소스가 있을겁니다. 셀렉트 박스형식의 폼 관련 자바스크립트로..
가로 카테고리로 처리시 필요 없어집니다.
삭제 또는 주석 처리하시면 됩니다.
그나저나, '에러가 나옵니다.' 라고만 하시면 다른분들은 어떤 에러가 나오는지 알 수 없으므로 제대로 된 답변을 드릴 수 없습니다.
팝업으로 에러정보가 뜨지 않으면..익스 하단에 오류표시인 노란느낌표를 더블클릭하면.. 오류정보가 뜹니다.
그 오류를 작성해주시면 50%정도는 원인파악이 쉽게 되니 빠른 답변을 얻으실 수 있을겁니다.
답변 감사드립니다. 질문이 좀 에매습니다.
이것저것 계속 고치느라고.. 걍 원본만 올리고 질문했습니다. 죄송..
알려주신대로 , 하단의 스크립트는 주석처리 했고요.
<tr height="25">
<? if ($is_category) { ?>
<form name="fcategory" method="get">
<td colspan="2"><input type="hidden" name="sca" value="<?=$category_option?>">
<a href="<?=$list_href?>">전체</a> | <?=$category_option?>
</td>
</form>
<? } ?>
상단의 셀렉트 부분을 이처럼 고쳤는데요..
전체를 누르면 Forbidden 이 나오구요.. 나머지들은 분류는 표시 되는데 링크가 안나와여..
이것저것 계속 고치느라고.. 걍 원본만 올리고 질문했습니다. 죄송..
알려주신대로 , 하단의 스크립트는 주석처리 했고요.
<tr height="25">
<? if ($is_category) { ?>
<form name="fcategory" method="get">
<td colspan="2"><input type="hidden" name="sca" value="<?=$category_option?>">
<a href="<?=$list_href?>">전체</a> | <?=$category_option?>
</td>
</form>
<? } ?>
상단의 셀렉트 부분을 이처럼 고쳤는데요..
전체를 누르면 Forbidden 이 나오구요.. 나머지들은 분류는 표시 되는데 링크가 안나와여..
이번에는
이렇게 고쳐밨는데요...
<form name="fcategory" method="get">
<? if ($is_category) { ?>
<tr height="25">
<input type="hidden" name="sca" value="<?=$category_option?>">
<a href="<?=$list_href?>">전체</a>
| <a href="<?=$list_href?>"><?=$category_option?></a></td>
</tr>
<? } ?>
</form>
역시 forbidden 에러 나와요.. ㅜ.ㅜ
이렇게 고쳐밨는데요...
<form name="fcategory" method="get">
<? if ($is_category) { ?>
<tr height="25">
<input type="hidden" name="sca" value="<?=$category_option?>">
<a href="<?=$list_href?>">전체</a>
| <a href="<?=$list_href?>"><?=$category_option?></a></td>
</tr>
<? } ?>
</form>
역시 forbidden 에러 나와요.. ㅜ.ㅜ
음...
어디부터 알려드려야 할지
일단 bbs/list.php 를 열어봅니다.
$category_option = get_category_option($bo_table); // SELECT OPTION 태그로 넘겨받음
라는 부분이 있을겁니다. 아하 분류명이 옵션태그로 구현받아서 넘어돈다는걸 알 수 있습니다.
그럼 get_category_option 은 어디에 있을까요. 제일 의심가는 lib/common.lib.php를 열어봅시다.
function get_category_option($bo_table='')
{
global $g4, $board;
$arr = explode("|", $board[bo_category_list]); // 구분자가 , 로 되어 있음
$str = "";
for ($i=0; $i<count($arr); $i++)
if (trim($arr[$i]))
$str .= "<option value='$arr[$i]'>$arr[$i]</option>\n";
return $str;
}
라고 되어있군요.
위상태에서는 $bo_table을 넘기는게 무의미 하겠네요.
일단 우리는 옵션태그를 원하는게 아니고 링크를 원합니다.
저 함수에서
$arr = explode("|", $board[bo_category_list]); // 구분자가 , 로 되어 있음
부분을 유심히 보시면
$board[bo_category_list] 라는곳에 분류명들이 "|" 를 구분자로 하는 문자열로 저장되어 있는것을 알수 있습니다.
주석에는 구분자가 , 로 되어있음 이렇게 되어있는데 실은 | 로 되어있군요 (뭥미)
explode라는 함수는 앞의 문자(열)을 중심으로 뒤의 문자열을 분리하여 배열로 저장하라는 것입니다.
비슷한 함수로는 split 가 있구요, split는 좀 더 광범위하게 자를 수 있지만, explode가 기능은 좀 떨어지되 속도면에서 빠릅니다.
즉 $board[bo_category_list] 에 "개|고양이|오리|돼지|이구아나" 이렇게 되어있다면
위의 명령은
$arr[0]="개",$arr[1]=고양이,$arr[2]=오리...
이런식으로 쪼개서 저장해달라는 말이 되겠습니다.
그럼 쪼개봅시다.
$cat_list = explode("|",$board['bo_category_list']);
(여담이지만, 연관배열을 쓰실때 $board[bo_category_list] 보다 $board['bo_category_list'] 가 더 빠릅니다. 단 " " 안에 들어갈때 쓰시면 에러납니다. 헷갈리시면 그냥 작은따옴표 빼서 쓰세요.)
그럼 분류명들이 $cat_list[숫자] 에 차례대로 배열로 들어갔겠네요.
이걸 뿌려줘 봅시다. for 문으로 반복해서 뿌려주면 되겠지요? 근데 어디까지 반복을 해야할까요?
일단 $cat_list[] 의 크기를 알아야 겠네요.
배열의 크기를 아는 함수는 size_of 와 count가 있습니다. 여기서도 배열의 경우는 count가 더빠르겠습니다.
for($ii=0;$ii<count($cat_list);$ii++){
}
이렇게 반복하면 되겠습니다만, 반복할때마다 count 함수를 호출하게 되므로 별로 좋지 않습니다.
까짓꺼 하나 저장해 놉시다.
$cat_list_size = count($cat_list);
또한 php만의 특성으로 $ii++ 보다 ++$ii 가 몇배정도 빠릅니다. 다른언어는 똑같은데 php만 빠릅니다.
for($ii=0;$ii<$cat_list_size;$++ii) 가 좋겠군요.
또 알아야 할 것이 있습니다. 분류를 적용하는 파라메터 인데요.
이건 분류를 변경할때 보시면 주소줄에 sca=분류명 이렇게 추가되는걸 보셨을껍니다.
아하 sca로 분류명을 넘기면 되겠군요...
이제 준비는 다 됐습니다. 그럼 짜볼까요.
$cat_list = explode("|",$board['bo_category_list']); //분류를 분리하고
$cat_list_size = count($cat_list); // 몇개인지 계산해서 저장합니다.
for($ii=0;$ii<$cat_list_size;$++ii){//그 숫자만큼 반복하겠지요?
echo "<a href='$g4[bbs_path]/board.php?bo_table=$bo_table&sca=$cat_list[$ii]'>$cat_list[$ii]</a>"; //sca로 카테고리 이름을 넘기는 링크를 출력합니다.
}
완성입니다. 단 카테고리 이름이 붙어서 주르륵 나와버리겠군요.
예쁘게 가공하는건 마님의집사님 몫으로 남겨드리겠습니다.
어디부터 알려드려야 할지
일단 bbs/list.php 를 열어봅니다.
$category_option = get_category_option($bo_table); // SELECT OPTION 태그로 넘겨받음
라는 부분이 있을겁니다. 아하 분류명이 옵션태그로 구현받아서 넘어돈다는걸 알 수 있습니다.
그럼 get_category_option 은 어디에 있을까요. 제일 의심가는 lib/common.lib.php를 열어봅시다.
function get_category_option($bo_table='')
{
global $g4, $board;
$arr = explode("|", $board[bo_category_list]); // 구분자가 , 로 되어 있음
$str = "";
for ($i=0; $i<count($arr); $i++)
if (trim($arr[$i]))
$str .= "<option value='$arr[$i]'>$arr[$i]</option>\n";
return $str;
}
라고 되어있군요.
위상태에서는 $bo_table을 넘기는게 무의미 하겠네요.
일단 우리는 옵션태그를 원하는게 아니고 링크를 원합니다.
저 함수에서
$arr = explode("|", $board[bo_category_list]); // 구분자가 , 로 되어 있음
부분을 유심히 보시면
$board[bo_category_list] 라는곳에 분류명들이 "|" 를 구분자로 하는 문자열로 저장되어 있는것을 알수 있습니다.
주석에는 구분자가 , 로 되어있음 이렇게 되어있는데 실은 | 로 되어있군요 (뭥미)
explode라는 함수는 앞의 문자(열)을 중심으로 뒤의 문자열을 분리하여 배열로 저장하라는 것입니다.
비슷한 함수로는 split 가 있구요, split는 좀 더 광범위하게 자를 수 있지만, explode가 기능은 좀 떨어지되 속도면에서 빠릅니다.
즉 $board[bo_category_list] 에 "개|고양이|오리|돼지|이구아나" 이렇게 되어있다면
위의 명령은
$arr[0]="개",$arr[1]=고양이,$arr[2]=오리...
이런식으로 쪼개서 저장해달라는 말이 되겠습니다.
그럼 쪼개봅시다.
$cat_list = explode("|",$board['bo_category_list']);
(여담이지만, 연관배열을 쓰실때 $board[bo_category_list] 보다 $board['bo_category_list'] 가 더 빠릅니다. 단 " " 안에 들어갈때 쓰시면 에러납니다. 헷갈리시면 그냥 작은따옴표 빼서 쓰세요.)
그럼 분류명들이 $cat_list[숫자] 에 차례대로 배열로 들어갔겠네요.
이걸 뿌려줘 봅시다. for 문으로 반복해서 뿌려주면 되겠지요? 근데 어디까지 반복을 해야할까요?
일단 $cat_list[] 의 크기를 알아야 겠네요.
배열의 크기를 아는 함수는 size_of 와 count가 있습니다. 여기서도 배열의 경우는 count가 더빠르겠습니다.
for($ii=0;$ii<count($cat_list);$ii++){
}
이렇게 반복하면 되겠습니다만, 반복할때마다 count 함수를 호출하게 되므로 별로 좋지 않습니다.
까짓꺼 하나 저장해 놉시다.
$cat_list_size = count($cat_list);
또한 php만의 특성으로 $ii++ 보다 ++$ii 가 몇배정도 빠릅니다. 다른언어는 똑같은데 php만 빠릅니다.
for($ii=0;$ii<$cat_list_size;$++ii) 가 좋겠군요.
또 알아야 할 것이 있습니다. 분류를 적용하는 파라메터 인데요.
이건 분류를 변경할때 보시면 주소줄에 sca=분류명 이렇게 추가되는걸 보셨을껍니다.
아하 sca로 분류명을 넘기면 되겠군요...
이제 준비는 다 됐습니다. 그럼 짜볼까요.
$cat_list = explode("|",$board['bo_category_list']); //분류를 분리하고
$cat_list_size = count($cat_list); // 몇개인지 계산해서 저장합니다.
for($ii=0;$ii<$cat_list_size;$++ii){//그 숫자만큼 반복하겠지요?
echo "<a href='$g4[bbs_path]/board.php?bo_table=$bo_table&sca=$cat_list[$ii]'>$cat_list[$ii]</a>"; //sca로 카테고리 이름을 넘기는 링크를 출력합니다.
}
완성입니다. 단 카테고리 이름이 붙어서 주르륵 나와버리겠군요.
예쁘게 가공하는건 마님의집사님 몫으로 남겨드리겠습니다.
감사합니다. 100% 아니지만 이해됬습니다. 이해 한거랑, 소스 적용하는거랑은
차이가 있네요...이해는 했는데 쉽게 안나오는걸 보면요..
for($ii=0;$ii<$cat_list_size;$++ii){//그 숫자만큼 반복하겠지요?
이부분에서(이것이 52번 )
Parse error: parse error, expecting `T_VARIABLE' or `'$'' in c:\apm_setup\htdocs\gnuboard4\skin\board\zzalbang\list.skin.php on line 52
게 에러가 나와요..
<? if ($is_category) {
<? $cat_list = explode("|",$board['bo_category_list']); //분류를 분리하고
$cat_list_size = count($cat_list); // 몇개인지 계산해서 저장합니다.
for($ii=0;$ii<$cat_list_size;$++ii){//그 숫자만큼 반복하겠지요?
echo "<a href='$g4[bbs_path]/board.php?bo_table=$bo_table&sca=$cat_list[$ii]'>$cat_list[$ii]</a>"; //sca로 카테고리 이름을 넘기는 링크를 출력합니다.
}
}
이렇게 넣었습니다.
?>
차이가 있네요...이해는 했는데 쉽게 안나오는걸 보면요..
for($ii=0;$ii<$cat_list_size;$++ii){//그 숫자만큼 반복하겠지요?
이부분에서(이것이 52번 )
Parse error: parse error, expecting `T_VARIABLE' or `'$'' in c:\apm_setup\htdocs\gnuboard4\skin\board\zzalbang\list.skin.php on line 52
게 에러가 나와요..
<? if ($is_category) {
<? $cat_list = explode("|",$board['bo_category_list']); //분류를 분리하고
$cat_list_size = count($cat_list); // 몇개인지 계산해서 저장합니다.
for($ii=0;$ii<$cat_list_size;$++ii){//그 숫자만큼 반복하겠지요?
echo "<a href='$g4[bbs_path]/board.php?bo_table=$bo_table&sca=$cat_list[$ii]'>$cat_list[$ii]</a>"; //sca로 카테고리 이름을 넘기는 링크를 출력합니다.
}
}
이렇게 넣었습니다.
?>
죄송합니다.
$--ii가 아니고 --$ii 입니다.
흙 오타냈어요 ㅠㅠ
늦게 답글 달아서
죄송해요
일하느라
$--ii가 아니고 --$ii 입니다.
흙 오타냈어요 ㅠㅠ
늦게 답글 달아서
죄송해요
일하느라
아이고 무슨 말씀을 제가 더 감사하지요...
알려주신대로 소스를 이렇게 수정했더니..
아주 잘됩니다. 검색창을 아주 손쉽게 푸는 방법인듯 합니다.
<? if ($is_category) {
$cat_list = explode("|",$board['bo_category_list']); //분류를 분리하고
$cat_list_size = count($cat_list); // 몇개인지 계산해서 저장합니다.
for($ii=0;$ii<$cat_list_size;++$ii){//그 숫자만큼 반복하겠지요?
echo "<a href='$g4[bbs_path]/board.php?bo_table=$bo_table&sca=$cat_list[$ii]'>$cat_list[$ii]</a>"; //sca로 카테고리 이름을 넘기는 링크를 출력합니다.
}
}
?>
알려주신대로 소스를 이렇게 수정했더니..
아주 잘됩니다. 검색창을 아주 손쉽게 푸는 방법인듯 합니다.
<? if ($is_category) {
$cat_list = explode("|",$board['bo_category_list']); //분류를 분리하고
$cat_list_size = count($cat_list); // 몇개인지 계산해서 저장합니다.
for($ii=0;$ii<$cat_list_size;++$ii){//그 숫자만큼 반복하겠지요?
echo "<a href='$g4[bbs_path]/board.php?bo_table=$bo_table&sca=$cat_list[$ii]'>$cat_list[$ii]</a>"; //sca로 카테고리 이름을 넘기는 링크를 출력합니다.
}
}
?>
엑스엠엘님 답변 감사합니다.
알려주신 링크의 자료가 맞습니다.
거기서 알려준대로 하면 되긴 됩니다.
근데, 기능은 이상없이 잘되는데...하단 완료 표시되는 곳에
분류를 선택하여 가면 순간적으로 오류가 있다 모 이렇게 표시되고
다시 없어져요.. 이것만 없음 아주 좋은데..ㅎㅎ
전 그래서 스킨을 다른것으로 바꾸고 스킨자료실에 있던데요..
ag_category 이 스킨으로 바꿨고요...
이소스의
<!-- 분류 셀렉트 박스, 게시물 몇건, 관리자화면 링크 -->
<table width="100%" cellspacing="0" cellpadding="0">
<? $list_href = "./board.php?bo_table=$bo_table"; ?>
<tr><td height=4></td></tr>
<form name="fcategory" method="get">
<? if ($is_category) { ?>
<tr height="25">
<td colspan="2"><input type="hidden" name="sca" value="<?=$category_option?>"> <a href="<?=$list_href?>">전체</a> | <?=$category_option?></td>
</tr>
<? } ?>
</form>
<tr height="25">
<td align="right">
게시물 <?=number_format($total_count)?>건
<? if ($rss_href) { ?><a href='<?=$rss_href?>'><img src='<?=$board_skin_path?>/img/btn_rss.gif' border=0 align=absmiddle></a><?}?>
<? if ($admin_href) { ?><a href="<?=$admin_href?>"><img src="<?=$board_skin_path?>/img/admin_button.gif" title="관리자" width="63" height="22" border="0" align="absmiddle"></a><?}?></td>
</tr>
<tr><td height=2 ></td></tr>
</table>
요 해당 부분을 위처럼 바꿨더니...정상적으로 표시됩니다...
답변감사했고요...그치만 짤방스킨에서 왜 안됬는지 이유를 잘 모르겠어요...
짤방스킨에서 <? $list_href = "./board.php?bo_table=$bo_table"; ?>
부분이 정의가 없어서 그런거 같아서 상단에 이 구문도 추가 했었는데...
전체는 되는데, 나머지가 안되더라구요.. 쩝...
알려주신 링크의 자료가 맞습니다.
거기서 알려준대로 하면 되긴 됩니다.
근데, 기능은 이상없이 잘되는데...하단 완료 표시되는 곳에
분류를 선택하여 가면 순간적으로 오류가 있다 모 이렇게 표시되고
다시 없어져요.. 이것만 없음 아주 좋은데..ㅎㅎ
전 그래서 스킨을 다른것으로 바꾸고 스킨자료실에 있던데요..
ag_category 이 스킨으로 바꿨고요...
이소스의
<!-- 분류 셀렉트 박스, 게시물 몇건, 관리자화면 링크 -->
<table width="100%" cellspacing="0" cellpadding="0">
<? $list_href = "./board.php?bo_table=$bo_table"; ?>
<tr><td height=4></td></tr>
<form name="fcategory" method="get">
<? if ($is_category) { ?>
<tr height="25">
<td colspan="2"><input type="hidden" name="sca" value="<?=$category_option?>"> <a href="<?=$list_href?>">전체</a> | <?=$category_option?></td>
</tr>
<? } ?>
</form>
<tr height="25">
<td align="right">
게시물 <?=number_format($total_count)?>건
<? if ($rss_href) { ?><a href='<?=$rss_href?>'><img src='<?=$board_skin_path?>/img/btn_rss.gif' border=0 align=absmiddle></a><?}?>
<? if ($admin_href) { ?><a href="<?=$admin_href?>"><img src="<?=$board_skin_path?>/img/admin_button.gif" title="관리자" width="63" height="22" border="0" align="absmiddle"></a><?}?></td>
</tr>
<tr><td height=2 ></td></tr>
</table>
요 해당 부분을 위처럼 바꿨더니...정상적으로 표시됩니다...
답변감사했고요...그치만 짤방스킨에서 왜 안됬는지 이유를 잘 모르겠어요...
짤방스킨에서 <? $list_href = "./board.php?bo_table=$bo_table"; ?>
부분이 정의가 없어서 그런거 같아서 상단에 이 구문도 추가 했었는데...
전체는 되는데, 나머지가 안되더라구요.. 쩝...
헉 답글 다는 동안 쵸코님 께서 열심히 설명해 주셨네요...
허거걱...열심히 읽어보고 이해해보구...꼭 적용해보겠습니다.
감사, 감사...
허거걱...열심히 읽어보고 이해해보구...꼭 적용해보겠습니다.
감사, 감사...