제로보드4 설문조사 버그 해결했습니다. ^^; 블록

제로보드4 설문조사 스킨에서 설문제목을 입력하고 항목추가를 하면 설문제목과 항목 내용이 같아지는 문제점을 해결했습니다.

bbs/skin/zero_vote/view.php 파일과 bbs/include/vote_check.php 파일을 아래와 같이 수정해 주면 됩니다. 핵심은 $data[subject]와 $data[vote] 를 DB 쿼리를 사용하여 depth가 0인 데이타를 찾아 $data2[subject]와 $data2[vote] 로 적절히 치환해 주면 된다는 겁니다. 와 깔끔하게 해결해서 너무나 기분이 좋네요.

[bbs/skin/zero_vote/view.php]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?
$data2=mysql_fetch_array(mysql_query("select * from $t_board"."_$id where headnum='$data[headnum]' and depth=0"));
?>
<table border=0 width=<?=$width?> cellspacing=0 cellpadding=0>
<col width=13></col> <col width=></col> <col width=13></col>
<tr>
    <td><img src=<?=$dir?>/1.gif border=0></td>
    <td background=<?=$dir?>/2.gif width=100%>
    <td><img src=<?=$dir?>/3.gif border=0></td>
</tr>
<tr>
    <td background=<?=$dir?>/4.gif><img src=<?=$dir?>/4.gif border=0></td>
    <td width=100%>
        <table border=0 cellspacing=0 cellpadding=0 width=100% height=25>
        <tr>
            <td width=70>Subject</td>
            <td style='word-break:break-all;'><img src=images/t.gif border=0 height=1><br><?=$data2[subject]?><font size=1 color=444444>(<?=$data2[vote]?> voted)</td>
        </tr>
        </table>
<?
//// 삭제하지 마세요;; 설문조사를 위한 프로그램 불러오는 부분입니다 //////
include "include/vote_check.php";
//// 위의 파일에서는 현재 스킨디렉토리의 vote_list.php파일을 불러씁니다///
?>
 
    </td>
    <td background=<?=$dir?>/6.gif><img src=<?=$dir?>/6.gif border=0></td>
</tr>
<tr>
    <td background=<?=$dir?>/4.gif><img src=<?=$dir?>/4.gif border=0></td>
    <td><font color="blue">투표합계 검증: </font>개별투표수와 전체 투표수가 <? if(($data2[vote]==1&&$hop_vote==0)||$data2[vote]==$hop_voteecho "일치함"else echo "<font color='red'>일치하지 않음!</font>"?></td>
    <td background=<?=$dir?>/6.gif><img src=<?=$dir?>/6.gif border=0></td>
</tr>
<tr>
    <td><img src=<?=$dir?>/7.gif border=0></td>
    <td background=<?=$dir?>/8.gif width=100%>
    <td><img src=<?=$dir?>/9.gif border=0></td>
</tr>
</table>
<!-- 간단한 답글 시작하는 부분 -->
<?=$hide_comment_start?>

[bbs/include/vote_check.php]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
if(preg_match("/:\/\//i",$dir)||preg_match("/\.\./i",$dir)) $dir ="./";
 
$data2=mysql_fetch_array(mysql_query("select * from $t_board"."_$id where headnum='$data[headnum]' and depth=0"));
$reply_result=mysql_query("select * from $t_board"."_$id where headnum='$data[headnum]' and depth>0 order by arrangenum");
 
if(!$data2[vote]) $data2[vote]=1;
$hop_vote=0;
while($reply_data=mysql_fetch_array($reply_result)) {
    include "include/reply_check.php";
    $subject=$reply_data[subject];
    $a_vote="<a href=apply_vote.php?id=$id&no=$data[no]&sub_no=$reply_data[no]&page=$page&page_num=$page_num&select_arrange=$select_arrange&desc=$des&cn=$sn&ss=$ss&sc=$sc&keyword=$keyword&category=$category>";
    $bar_size=(int)(($reply_data[vote]/$data2[vote])*100);
    $vote=$reply_data[vote];
    $hop_vote+=$vote;
    include "$dir/vote_list.php";
}
?>

덧글

  • Hide_D 2014/12/08 21:14 # 답글

    해결책이 '한번 더' 쿼리한다....인건 근본적인 해결은 전혀 아닌 것 같지만.........

    zb4 코드는 원래부터 스파게티 코드였으니, 해결책이 별로 안 예뻐도 상관은 없을지도 모르겠네요.
  • 희망의빛™ 2014/12/08 21:22 #

    네 ^^; 사실 저도 한번 더 쿼리 부분이 좀 신경이 쓰였는데 완벽하게 돌아가니 상관없을 것 같더라구요. 이 방법밖에는 떠오르지가 않아서... ㅋㅋ 더 좋은 방법이 있으면 좋으련만... 이게 오늘 궁리해서 결국 찾아낸 방법이네요.
  • 개노잼 2014/12/08 21:43 # 삭제 답글

    사용자가 한명인 게시판인데 설문조사 기능이 왜 필요할까
  • 2014/12/08 22:24 # 삭제 답글

    현업인경우 한번 더 쿼리가 미치는 영향이 얼마나 큰지 잘 모르는군.
  • Hide_D 2014/12/10 11:18 #

    게시판 코드들이 엉망이라는 점을 보여주는 증거 하나가 더 생기니 다행이지요 :)
  • 희망의빛™ 2014/12/10 21:30 #

    혹시 다른 방법이라도... 발견하신 거 있으면 좀 알고 싶네요.
  • 희망의빛™ 2015/09/24 18:40 # 답글

    크롬 버그 때문에 요새 다른 소스를 원래대로 환원한 게 7 페이지 정도 되는데 이것도 아마 크롬의 버그 같아 보이네요. 황당하네요. 소스 열심히 고쳐 놓으니까 소스를 원래대로 환원해 놓네요. 이건 무슨 경우래요? 참 제가 이제 크롬 버그까지 고쳐야 하나요? ㅡ_ㅡ
  • 희망의빛™ 2015/01/30 15:29 #

    소스가 누더기가 된 다음 버그 수정해 놓는 건 무슨 경우입니까? 참 황당하네.
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색