어려운거 하나 끝났습니다.

게시판 상단에 추첨 하기 버튼 만들고 추천 버튼 클릭시 랜덤하게 글 1개를 골라서 특정 게시판으로 이동하는 기능 만들었습니다.
변수가 헛갈려서 오래 걸렸네요..
귀차니즘에 직접 적은것도 있구 ㅋㅋ

아래는 소스입니다.
참고 하세요.
<참고로 테이블 명은 강제로 지정했습니다. 자동으로 안받는게 좋아서요 ^^>

<?
<?
include_once("./_common.php");

// $query = "select * from g4_write_kira_1 order by menu_no asc";
$query = "select * from g4_write_kira_1";
$result = mysql_query($query);
$rand_num = mysql_affected_rows();
?>

 

<!-- 랜덤추첨 -->
<script>
function rand() {
tot=<?=$rand_num?> // 자료수
cnt=1; // 추첨인원
data=new Array(tot);

<?
for ($i = 0; $i < $rand = mysql_fetch_array($result); $i++) {
$num = $i+1;


echo <<<TEXT
data[{$num}]=new Array("{$rand[wr_id]}");
TEXT;
}?>

lot=new Array(tot);
lot[1]=0;

for (i=1;i<=cnt;i++)
{
    flag=0;
    while(flag==0) {
    result=Math.floor(Math.random()*tot+1);
   
    for(j=1;j<=i;j++) {
       if (result==lot[j]) {
          flag=0;
          break;
       } else {
          flag=1;
       }
    }
   
    }
    lot[i]=result;
}
temp=0;
for (i=1;i<=cnt-1;i++)  {
for (j=i+1;j<=cnt;j++) {
 if (lot[i]>lot[j]) {
  temp=lot[i];
  lot[i]=lot[j];
  lot[j]=temp;
 }
}
}

for (i=1;i<=cnt;i++)  {
 window.location = "?id="+data[lot[i]];
}
}
</script>

<?
if($id == "undefined"){
  echo "추첨될 업체가 없습니다.";
  }else if($id == ""){
?>
<form name="form">
<input type="button" value="추첨하기 " onClick="rand();">
</form>
<?
}else if ($id == $id){
?>
 값으로 접근하셨습니다.<br>
<?
$query2 = "select * from g4_write_kira_1 where wr_id = '$id' order by wr_id";
$result2 = mysql_query($query2);
$value = mysql_fetch_array($result2);
echo $value[wr_subject];
?>

 

<?
///////////////////////////////////////////// 환경설정
$sw = "copy";                              // 이동으로 설정
$write_table = "g4_write_kira_1";          // 현제게시판
///////////////////////////////////////////// 현제게시판 정보 불러오기
$query1 = "select * from g4_write_kira_1"; //
$result1 = mysql_query($query1);           //
$rand_ = mysql_fetch_array($result1);      //
///////////////////////////////////////////// 현제게시판 정보 불러오기 끝
$wr_id_list = $id;                         // 아이디 값 변수 지정
$bo_table = "kira_1";                      // 원본 게시판 테이블명
$move_bo_table = "kira2";                  // 이동되는 게시판 테이블명
$move_bo_table_name = "kira2";             // 이동되는 게시판 테이블명
$wr_num = $id;                             // 게시판 속성(wr_num) 담기
///////////////////////////////////////////// 환경설정 끝


// 원본 파일 디렉토리
$src_dir = "$g4[path]/data/file/$bo_table";

$save = array();
$save_count_write = 0;
$save_count_comment = 0;
$cnt = 0;

// SQL Injection 으로 인한 코드 보완
//$sql = " select distinct wr_num from $write_table where wr_id in (" . stripslashes($wr_id_list) . ") order by wr_id ";
$sql = " select distinct wr_num from $write_table where wr_id in ($wr_id_list) order by wr_id ";
$result = sql_query($sql);
while ($row = sql_fetch_array($result))
{
    $wr_num = $row[wr_num];
    for ($i=0; $i<count($move_bo_table_name); $i++)
    {
        $move_bo_table = $move_bo_table_name;
        $move_write_table = $g4['write_prefix'] . $move_bo_table;

        $src_dir = "$g4[path]/data/file/$bo_table"; // 원본 디렉토리
        $dst_dir = "$g4[path]/data/file/$move_bo_table"; // 복사본 디렉토리

        $count_write = 0;
        $count_comment = 0;

        $next_wr_num = get_next_num($move_write_table);

        $sql2 = " select * from $write_table where wr_num = '$wr_num' order by wr_parent, wr_comment desc, wr_id ";
        $result2 = sql_query($sql2);
        while ($row2 = sql_fetch_array($result2))
        {
            $nick = cut_str($member[mb_nick], $config[cf_cut_name]);
            if (!$row2[wr_is_comment] && $config[cf_use_copy_log])
                $row2[wr_subject] .= "[지정]";

            $sql = " insert into $move_write_table
                        set wr_num            = '$next_wr_num',
                            wr_reply          = '$row2[wr_reply]',
                            wr_is_comment     = '$row2[wr_is_comment]',
                            wr_comment        = '$row2[wr_comment]',
                            wr_comment_reply  = '$row2[wr_comment_reply]',
                            ca_name           = '".addslashes($row2[ca_name])."',
                            wr_option         = '$row2[wr_option]',
                            wr_subject        = '".addslashes($row2[wr_subject])."',
                            wr_content        = '".addslashes($row2[wr_content])."',
                            wr_link1          = '".addslashes($row2[wr_link1])."',
                            wr_link2          = '".addslashes($row2[wr_link2])."',
                            wr_link1_hit      = '$row2[wr_link1_hit]',
                            wr_link2_hit      = '$row2[wr_link2_hit]',
                            wr_trackback      = '".addslashes($row2[wr_trackback])."',
                            wr_hit            = '$row2[wr_hit]',
                            wr_good           = '$row2[wr_good]',
                            wr_nogood         = '$row2[wr_nogood]',
                            mb_id             = '$row2[mb_id]',
                            wr_password       = '$row2[wr_password]',
                            wr_name           = '".addslashes($row2[wr_name])."',
                            wr_email          = '".addslashes($row2[wr_email])."',
                            wr_homepage       = '".addslashes($row2[wr_homepage])."',
                            wr_datetime       = '$row2[wr_datetime]',
                            wr_last           = '$row2[wr_last]',
                            wr_ip             = '$row2[wr_ip]',
                            wr_1              = '".addslashes($row2[wr_1])."',
                            wr_2              = '".addslashes($row2[wr_2])."',
                            wr_3              = '".addslashes($row2[wr_3])."',
                            wr_4              = '".addslashes($row2[wr_4])."',
                            wr_5              = '".addslashes($row2[wr_5])."',
                            wr_6              = '".addslashes($row2[wr_6])."',
                            wr_7              = '".addslashes($row2[wr_7])."',
                            wr_8              = '".addslashes($row2[wr_8])."',
                            wr_9              = '".addslashes($row2[wr_9])."',
                            wr_10             = '".addslashes($row2[wr_10])."' ";
            sql_query($sql);

            $insert_id = mysql_insert_id();

            // 코멘트가 아니라면
            if (!$row2[wr_is_comment])
            {
                $save_parent = $insert_id;

                $sql3 = " select * from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' order by bf_no ";
                $result3 = sql_query($sql3);
                for ($k=0; $row3 = sql_fetch_array($result3); $k++)
                {
                    if ($row3[bf_file])
                    {
                        // 원본파일을 복사하고 퍼미션을 변경
                        @copy("$src_dir/$row3[bf_file]", "$dst_dir/$row3[bf_file]");
                        @chmod("$dst_dir/$row3[bf_file]", 0606);
                    }

                    $sql = " insert into $g4[board_file_table]
                                set bo_table = '$move_bo_table',
                                    wr_id = '$insert_id',
                                    bf_no = '$row3[bf_no]',
                                    bf_source = '$row3[bf_source]',
                                    bf_file = '$row3[bf_file]',
                                    bf_download = '$row3[bf_download]',
                                    bf_content = '".addslashes($row3[bf_content])."',
                                    bf_filesize = '$row3[bf_filesize]',
                                    bf_width = '$row3[bf_width]',
                                    bf_height = '$row3[bf_height]',
                                    bf_type = '$row3[bf_type]',
                                    bf_datetime = '$row3[bf_datetime]' ";
                    sql_query($sql);

                    if ($sw == "move" && $row3[bf_file])
                        $save[$cnt][bf_file][$k] = "$src_dir/$row3[bf_file]";
                }

                $count_write++;

                if ($sw == "move" && $i == 0)
                {
                    // 스크랩 이동
                    sql_query(" update $g4[scrap_table] set bo_table = '$move_bo_table', wr_id = '$save_parent' where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' ");

                    // 최신글 이동
                    sql_query(" update $g4[board_new_table] set bo_table = '$move_bo_table', wr_id = '$save_parent', wr_parent = '$save_parent' where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' ");
                }
            }
            else
            {
                $count_comment++;

                if ($sw == "move")
                {
                    // 최신글 이동
                    sql_query(" update $g4[board_new_table] set bo_table = '$move_bo_table', wr_id = '$insert_id', wr_parent = '$save_parent' where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' ");
                }
            }

            sql_query(" update $move_write_table set wr_parent = '$save_parent' where wr_id = '$insert_id' ");

            if ($sw == "move")
                $save[$cnt][wr_id] = $row2[wr_parent];

            $cnt++;
        }


        sql_query(" update $g4[board_table] set bo_count_write   = bo_count_write   + '$count_write'   where bo_table = '$move_bo_table' ");
        sql_query(" update $g4[board_table] set bo_count_comment = bo_count_comment + '$count_comment' where bo_table = '$move_bo_table' ");
    }

    $save_count_write += $count_write;
    $save_count_comment += $count_comment;
}

if ($sw == "move")
{
    for ($i=0; $i<count($save); $i++)
    {
        for ($k=0; $k<count($save[$i][bf_file]); $k++)
            @unlink($save[$i][bf_file][$k]);   

        sql_query(" delete from $write_table where wr_parent = '{$save[$i][wr_id]}' ");
        sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' and wr_id = '{$save[$i][wr_id]}' ");
        sql_query(" delete from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '{$save[$i][wr_id]}' ");
    }
    sql_query(" update $g4[board_table] set bo_count_write = bo_count_write - '$save_count_write', bo_count_comment = bo_count_comment - '$save_count_comment' where bo_table = '$bo_table' ");
}
?>

 

 

<?}?>

|

댓글 11개

결론. 오늘도 장대비(// 주석처리)가 넘치네요...
코드가 늘어날수록 주석의 필요성을 느낀답니다 ㄷㄷ
darby님의 말씀이 맞습니다.

저 같은경우는 장대비 주석을 많이 쓰는데..
구분하기 쉽고 추가한것을 보기 편해서 좋더라구요.
일부 같은경우는 더 불편하다고들 하는데...
이해가 안간다는 ^^
소셜연동 게시판을 보니 코드중간에 장마가....- -;;
ㅋㅋㅋㅋ
제가 자주 쓰는 주석 기법입니다.
주석에 모양을 낼경우 주석이 확실히 눈에 띄기 때문에 수정하기 쉽더라구요.
로드가 자주되니.. 괜한 기분탓인지.. 트래픽이 늘언다는 느낌때문에 일부 지우고 사용중입니다 ㅋㅋ
그럴경우도 있지요.
아직도 페이스북은 문제가 많네요...
도대체 어떻게 해야 할지 모르겠다는...
^^
그런데 다고치셨나요???
아참! 감사하게 잘 쓰고 있습니다. 정말 감사합니다!^^
^^
저에게 감사할게 아니죠
그누에 감사를 ~~
전 차려진 밥상에 계란후라이 부쳐서 올린것 뿐이라는...
재미있는 기능이에요
이런생각을 어떻게 하셨죠!~!
필요에 의한 창조이지요 ~
필요해서 짰어요 ㅠ.ㅠ;;;;

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기
🐛 버그신고