글내용에 설문조사 추가하기 정보
글내용에 설문조사 추가하기첨부파일
본문
사이트에 전반적으로 넣어서 쓰는게 아니라.. 게시물마다 선택해서 넣는겁니다.
설문조사나 투표기능으로 이용하기 좋습니다.
(샘플은 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 에서 다른 팁들도 적용해보시길...^^
설문조사나 투표기능으로 이용하기 좋습니다.
(샘플은 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
9
댓글 15개
아흑 ㅜ... 멋져요~
마치 미니위니의 설문조사! ></
멋진 팁이군요...
좋은 팁 올려주셔서 감사합니다..
좋은 팁 올려주셔서 감사합니다..
멋져요. 이거 그누보드 본체의 업그레이드 하면 안되거나 하진 않겠죠?
멋진 팁 감사합니다.
근데 설문조사 제목 입력 부분이 따로 있었으면 더 좋을 것 같은데요
따로 제목 입력 부분 넣을 수 있게 업그레이드 해주실 순 없나요?
적용 : http://www.shim4u.net/gnu/bbs/board.php?bo_table=freeboard&wr_id=765
근데 설문조사 제목 입력 부분이 따로 있었으면 더 좋을 것 같은데요
따로 제목 입력 부분 넣을 수 있게 업그레이드 해주실 순 없나요?
적용 : http://www.shim4u.net/gnu/bbs/board.php?bo_table=freeboard&wr_id=765
write.update.skin.php와 list.skin.php는 어떤 폴더에 저장해야 하나요?
skin/board/적용스킨/ 이곳에 저장하면 되지 않을까요?
게시판의 여유필드중에 wr_6 을 사용한다고 쓰셨는데 그것은 어떻게 하는 것인가요?
감사합니다
본문 설문조사
적용해보니까 아주 괜찬네요. 추천합니다.
적용해보니까 정말 좋네요. 필요한 기능이었습니다. 감사합니다!
설문을 올리면 만료되었다고만 나오는데요, 뭐가 문제일까요?;;
아..... write.update.skin.php가 아니라 write_update.skin.php 로 하니까 되네요;;;
적용해봐야겠네요