글내용에 설문조사 추가하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

글내용에 설문조사 추가하기 정보

글내용에 설문조사 추가하기

첨부파일

pollGnu4.zip (6.3K) 251회 다운로드 2006-09-30 23:54:36

본문

사이트에 전반적으로 넣어서 쓰는게 아니라.. 게시물마다 선택해서 넣는겁니다.

설문조사나 투표기능으로 이용하기 좋습니다.

(샘플은 http://www.alik.info/gnu/bbs/tb.php/alik/275 글 하단 참고)

0. 본팁은 게시판의 여유필드중에 wr_6 을 사용합니다.

1. 첨부화일을 압출풀면 나오는 3개의 화일을 그누보드의 bbs 폴더에 풀어넣어주세요.

2. 스킨의 view.skin.php 에서 투표결과나 투표입력창이 보여지기 원하는 곳에...
예를 들면 <?=$view[content];?> 의 밑이라던가....에

<? include "pollView.php"; ?> 라고 추가해주세요.

3. 스킨의 write.skin.php 에서 투표항목을 입력하는 부분이 들어가길 원하는 곳에 다음과 같에 넣어주세요.
예를 들면... </textarea><br /> 밑줄이라던가...에

<? include "pollWrite.php"; ?> 라고 추가해주세요.

 4. 스킨의 write.update.skin.php 의 내용은 다음과 같습니다. (이 화일이 아예 없으면 아래 내용으로 저장하시고 이미 있으면 아래 내용을 기존 화일에 추가하세여)

<?
//poll 관련
$wr_parent = 0 - $wr_id;
$do_poll = $_POST['wr_6']; //투표작성 여부
$pollReset = $_POST['pollReset']; //투표 새로작성 여부
$pollOptions = $_POST['pollOptions'];
if ($_POST['multiPoll'] == 1) $multipollno = $_POST['multiPollNo']; else $multipollno = "noMultiPoll"; //다중투표 허용 & 갯수
if ($_POST['PollTime'] < 1) $_POST['PollTime'] = 30;
$ca_name = strtotime("+".$_POST['PollTime']." days"); //투표 기간
$REMOTE_ADDR = $_POST['allowRePoll']; //재투표 허용 여부
//$REMOTE_ADDR = $_SERVER['REMOTE_ADDR']; //아이피
$re_poll = $_POST['re_poll']; //재투표 여부

//수정
if($w == "u" && $wr_id) {
 $pollCnt = 0;
 if ($do_poll != "1") {
  @mysql_query("delete from $write_table where wr_parent='$wr_parent'");
 } else {
  if ($pollReset == "1") {
  @mysql_query("delete from $write_table where wr_parent='$wr_parent'"); 

  $wr_subject = "pollOption";
  for ($i=0; $i<count($pollOptions); $i++) {
    if ($pollOptions[$i] != "") {
    $wr_content = htmlspecialchars($pollOptions[$i]);
    //투표항목 입력
    @mysql_query("insert into $write_table (wr_parent,mb_id,wr_subject,wr_password,wr_content,ca_name,wr_ip, wr_is_comment) values ('$wr_parent','$member[mb_id]','$wr_subject','$multipollno','$wr_content','$ca_name','$REMOTE_ADDR', '2')");
    $pollCnt ++;
    }
  }
  if($pollCnt == 0) {
    $do_poll = '';
  }
  } else {
  @mysql_query(" update $write_table set wr_ip='$REMOTE_ADDR', ca_name='$ca_name', wr_password='$multipollno' where wr_parent='$wr_parent' and wr_subject='pollOption' ");
  }
 }
 @mysql_query("update $write_table set wr_6='$do_poll' where wr_id='$wr_id'");
//답변 or 새글
} elseif(($w == "r" || $w == "w" || !$w) && $do_poll == "1") {
 $pollCnt = 0;
 $wr_subject = "pollOption";
 for ($i=0; $i<count($pollOptions); $i++) {
  if ($pollOptions[$i] != "") {
  $wr_content = htmlspecialchars($pollOptions[$i]);
  //투표항목 입력
  @mysql_query("insert into $write_table (wr_parent,mb_id,wr_subject,wr_password,wr_content,ca_name,wr_ip, wr_is_comment) values ('$wr_parent','$member[mb_id]','$wr_subject','$multipollno','$wr_content','$ca_name','$REMOTE_ADDR', '2')");
  $pollCnt ++;
  }
 }

 if($pollCnt == 0) {
  $do_poll = '';
 }
 @mysql_query("update $write_table set wr_6='$do_poll' where wr_id='$wr_id'"); 
}
//////////////
?>

5. 스킨의 delete.skin.php 의 내용은 다음과 같습니다. (이 화일이 아예 없으면 아래 내용으로 저장하시고 이미 있으면 아래 내용을 기존 화일에 추가하세여)

<?php
 $tmpWrID = (0 - $wr_id);
  sql_query(" delete from $write_table where wr_parent = '$tmpWrID' ");
?>

6. 스킨의 delete_all.skin.php 의 내용은 다음과 같습니다. (이 화일이 아예 없으면 아래 내용으로 저장하시고 이미 있으면 아래 내용을 기존 화일에 추가하세여)

<?php
for ($i=count($tmp_array)-1; $i>=0; $i--)
{
 $tmpWrID = (0 - $tmp_array[$i]);
  sql_query(" delete from $write_table where wr_parent = '$tmpWrID' ");
}
?>

7. 목록에 표시해주고 싶으시면..
스킨의 list.skin.php 에서...

        echo "<a href='{$list[$i][href]}'>"; 의 윗줄에 아래의 내용을 넣으세요....

  if($list[$i][wr_6]) {
  $writeTable = $g4[write_prefix] . $bo_table;
  $pollNo = ( 0 - $list[$i][wr_id] );
  $REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
  $poll_chk = mysql_fetch_row(mysql_query("select wr_id from $writeTable where wr_parent='$pollNo' and wr_subject='pollAnswer' and ((mb_id='$member[mb_id]') or (wr_ip='$REMOTE_ADDR')) limit 1"));
  $pollIcon = "<span title='설문조사 글 - 아직 참여하지 않으셨습니다'> <b>P</b></span> ";
  if ($poll_chk[0]) {
    $pollIcon = "<span title='설문조사 글 - 이미 참여하셨습니다'>P</span> ";
  }   
  echo $pollIcon;
  }


끝~

참고1 : 투표결과를 나타내는데 사용된 그래프는 무화님의 소스입니다. ^^ (링크는 주석 참고)
참고2:  설문주제는 직접 글의 하단에 입력하면 되는거죠....

시간되시면 http://www.alik.info 에서 다른 팁들도 적용해보시길...^^
추천
9

댓글 15개

멋진 팁 감사합니다.

근데 설문조사 제목 입력 부분이 따로 있었으면 더 좋을 것 같은데요

따로 제목 입력 부분 넣을 수 있게 업그레이드 해주실 순 없나요?

적용 : http://www.shim4u.net/gnu/bbs/board.php?bo_table=freeboard&wr_id=765
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT