투표하면 자동댓글달기... 정보
투표하면 자동댓글달기...본문
오류가 나는곳의 주소를 알려주시면 더 빠르고 정확하게 답변 받을 수 있습니다.
오류 주소 :
오류가 나는곳의 주소를 알려주시면 더 빠르고 정확하게 답변 받을 수 있습니다.
오류 주소 :
http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=74733&sca=&sfl=wr_subject%7C%7Cwr_content&stx=alik&sop=and
위와 같은 alik님의 게시판을 사용합니다.
그런데 설문에 대한 답변이 필요한데, 사람들이 그 설문조차도 안하는 경우가 있었습니다.
그래서 원하는 항목을 선택하고 투표하기 버튼을 눌렀을 때, 투표 뿐만 아니라 리플도 자동으로 달리게 할 수 없을까요?
위 질문에 대한 alik님의 답변은 그누보드가 아닌 제로보드의 답변은 다음과 같습니다.
poll.php 의 전체 소스입니다. 덮어씌우시면 될겁니다.
(직접 테스트해봤습니다. 잘 됩니다. ^^)
나중에 '아무개'님이 투표에 참여하셨습니다.... 이부분을 수정하신다면 ' 나 " 같은 따옴표는 왠만하면 쓰지 말아주세요...
이하 소스 ------------------
<?PHP
if (!$mode) $mode = $_POST['mode'];
if (!$no) $no = $_POST['no'];
if (!$id) $id = $_POST['id'];
$parent = 0 - $no;
$do_poll = $_POST['do_poll']; //투표작성 여부
$pollReset = $_POST['pollReset']; //투표 새로작성 여부
$pollAnswers = $_POST['pollAnswers'];
$pollOptions = $_POST['pollOptions'];
if ($_POST['multiPoll'] == 1) $password = $_POST['multiPollNo']; else $password = "noMultiPoll"; //다중투표 허용 & 갯수
if ($_POST['PollTime'] < 1) $_POST['PollTime'] = 30;
$reg_date = strtotime("+".$_POST['PollTime']." days"); //투표 기간
$REMOTE_ADDR = $_POST['allowRePoll']; //재투표 허용 여부
//$REMOTE_ADDR = $_SERVER['REMOTE_ADDR']; //아이피
$re_poll = $_POST['re_poll']; //재투표 여부
//글쓰기 관련
//수정
if($mode == "modify" && $no) {
$pollCnt = 0;
if ($do_poll != "1") {
@mysql_query("delete from $t_comment"."_$id where parent='$parent'");
}
if ($pollReset == "1") {
@mysql_query("delete from $t_comment"."_$id where parent='$parent'");
$name = "pollOption";
for ($i=0; $i<count($pollOptions); $i++) {
if ($pollOptions[$i] != "") {
$memo = del_html($pollOptions[$i]);
//투표항목 입력
@mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip) values ('$parent','$member[no]','$name','$password','$memo','$reg_date','$REMOTE_ADDR')");
$pollCnt ++;
}
}
if($pollCnt == 0) {
$do_poll = '';
}
} else {
@mysql_query(" update $t_comment"."_$id set ip='$REMOTE_ADDR', reg_date='$reg_date', password='$password' where parent='$parent' and name='pollOption' ");
}
@mysql_query("update $t_board"."_$id set poll='$do_poll' where no='$no'");
//답변 or 새글
} elseif(($mode == "reply" || $mode == "write") && $do_poll == "1") {
$pollCnt = 0;
$name = "pollOption";
for ($i=0; $i<count($pollOptions); $i++) {
if ($pollOptions[$i] != "") {
$memo = del_html($pollOptions[$i]);
//투표항목 입력
@mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip) values ('$parent','$member[no]','$name','$password','$memo','$reg_date','$REMOTE_ADDR')");
$pollCnt ++;
}
}
if($pollCnt == 0) {
$do_poll = '';
}
@mysql_query("update $t_board"."_$id set poll='$do_poll' where no='$no'");
//////투표관련
} elseif($mode == "poll" && $no > 0 && $id != "") {
include "lib.php"; // 라이브러리 함수 파일 인크루드
if(!$connect) $connect=dbConn(); // DB 연결
$member=member_info(); // 멤버정보 구하기
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR']; //아이피
$pollChkTmp = @mysql_fetch_row(mysql_query("select no from $t_comment"."_$id where parent='$parent' and name='pollAnswer' and ((ismember='$member[no]' and password='$member[name]') or (ip='$REMOTE_ADDR')) limit 1"));
$pollChk = $pollChkTmp[0];
//중복투표 체크
if ($pollChk && $re_poll != "1") {
head();
echo "<script>alert('이미 투표 하셨습니다');</script>";
foot();
exit;
}
if (count($pollAnswers) > 0) {
$name = "pollAnswer";
$reg_date = time();
$password = $member['name'];
for ($i=0; $i<count($pollAnswers); $i++) {
if ($pollAnswers[$i] != "") {
//투표결과 입력
$memo = $pollAnswers[$i];
@mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip) values ('$parent','$member[no]','$name','$password','$memo','$reg_date','$REMOTE_ADDR')");
}
}
if($member[no]) {
$name = addslashes($member[name]);
$password = addslashes($member[password]);
} else {
$name = '방문객';
$password = mt_rand();
}
$memo = addslashes("$name"."님이 설문에 참여하셨습니다!");
@mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip) values ('$no','$member[no]','$name','$password','$memo','$reg_date','poll_msg')");
$total=mysql_fetch_array(mysql_query("select count(*) from $t_comment"."_$id where parent='$no'"));
@mysql_query("update $t_board"."_$id set total_comment='$total[0]' where no='$no'");
} else {
// 재투표!! [회원전용 기능]
if ($re_poll == "1") {
@mysql_query("delete from $t_comment"."_$id where parent='$parent' and name='pollAnswer' and ismember='$member[no]' and password='$member[name]'");
@mysql_query("delete from $t_comment"."_$id where parent='$no' and name='$member[name]' and ismember='$member[no]' and password='$member[password]' and ip='poll_msg'");
$total=mysql_fetch_array(mysql_query("select count(*) from $t_comment"."_$id where parent='$no'"));
@mysql_query("update $t_board"."_$id set total_comment='$total[0]' where no='$no'");
}
}
echo "<script>parent.location.replace(parent.document.location.href);</script>";
}
?>
이렇게 하면 투표를 하게되면 자동으로 '아이디'님이 설문에 참여하셨습니다! 라고 나옵니다.
그런데 그누보드와 제로보드 코딩자체가 틀려 어떻게 해야 할지 모르겠습니다.
고수님들 한수 부탁드립니다.
오류 주소 :
오류가 나는곳의 주소를 알려주시면 더 빠르고 정확하게 답변 받을 수 있습니다.
오류 주소 :
http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=74733&sca=&sfl=wr_subject%7C%7Cwr_content&stx=alik&sop=and
위와 같은 alik님의 게시판을 사용합니다.
그런데 설문에 대한 답변이 필요한데, 사람들이 그 설문조차도 안하는 경우가 있었습니다.
그래서 원하는 항목을 선택하고 투표하기 버튼을 눌렀을 때, 투표 뿐만 아니라 리플도 자동으로 달리게 할 수 없을까요?
위 질문에 대한 alik님의 답변은 그누보드가 아닌 제로보드의 답변은 다음과 같습니다.
poll.php 의 전체 소스입니다. 덮어씌우시면 될겁니다.
(직접 테스트해봤습니다. 잘 됩니다. ^^)
나중에 '아무개'님이 투표에 참여하셨습니다.... 이부분을 수정하신다면 ' 나 " 같은 따옴표는 왠만하면 쓰지 말아주세요...
이하 소스 ------------------
<?PHP
if (!$mode) $mode = $_POST['mode'];
if (!$no) $no = $_POST['no'];
if (!$id) $id = $_POST['id'];
$parent = 0 - $no;
$do_poll = $_POST['do_poll']; //투표작성 여부
$pollReset = $_POST['pollReset']; //투표 새로작성 여부
$pollAnswers = $_POST['pollAnswers'];
$pollOptions = $_POST['pollOptions'];
if ($_POST['multiPoll'] == 1) $password = $_POST['multiPollNo']; else $password = "noMultiPoll"; //다중투표 허용 & 갯수
if ($_POST['PollTime'] < 1) $_POST['PollTime'] = 30;
$reg_date = strtotime("+".$_POST['PollTime']." days"); //투표 기간
$REMOTE_ADDR = $_POST['allowRePoll']; //재투표 허용 여부
//$REMOTE_ADDR = $_SERVER['REMOTE_ADDR']; //아이피
$re_poll = $_POST['re_poll']; //재투표 여부
//글쓰기 관련
//수정
if($mode == "modify" && $no) {
$pollCnt = 0;
if ($do_poll != "1") {
@mysql_query("delete from $t_comment"."_$id where parent='$parent'");
}
if ($pollReset == "1") {
@mysql_query("delete from $t_comment"."_$id where parent='$parent'");
$name = "pollOption";
for ($i=0; $i<count($pollOptions); $i++) {
if ($pollOptions[$i] != "") {
$memo = del_html($pollOptions[$i]);
//투표항목 입력
@mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip) values ('$parent','$member[no]','$name','$password','$memo','$reg_date','$REMOTE_ADDR')");
$pollCnt ++;
}
}
if($pollCnt == 0) {
$do_poll = '';
}
} else {
@mysql_query(" update $t_comment"."_$id set ip='$REMOTE_ADDR', reg_date='$reg_date', password='$password' where parent='$parent' and name='pollOption' ");
}
@mysql_query("update $t_board"."_$id set poll='$do_poll' where no='$no'");
//답변 or 새글
} elseif(($mode == "reply" || $mode == "write") && $do_poll == "1") {
$pollCnt = 0;
$name = "pollOption";
for ($i=0; $i<count($pollOptions); $i++) {
if ($pollOptions[$i] != "") {
$memo = del_html($pollOptions[$i]);
//투표항목 입력
@mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip) values ('$parent','$member[no]','$name','$password','$memo','$reg_date','$REMOTE_ADDR')");
$pollCnt ++;
}
}
if($pollCnt == 0) {
$do_poll = '';
}
@mysql_query("update $t_board"."_$id set poll='$do_poll' where no='$no'");
//////투표관련
} elseif($mode == "poll" && $no > 0 && $id != "") {
include "lib.php"; // 라이브러리 함수 파일 인크루드
if(!$connect) $connect=dbConn(); // DB 연결
$member=member_info(); // 멤버정보 구하기
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR']; //아이피
$pollChkTmp = @mysql_fetch_row(mysql_query("select no from $t_comment"."_$id where parent='$parent' and name='pollAnswer' and ((ismember='$member[no]' and password='$member[name]') or (ip='$REMOTE_ADDR')) limit 1"));
$pollChk = $pollChkTmp[0];
//중복투표 체크
if ($pollChk && $re_poll != "1") {
head();
echo "<script>alert('이미 투표 하셨습니다');</script>";
foot();
exit;
}
if (count($pollAnswers) > 0) {
$name = "pollAnswer";
$reg_date = time();
$password = $member['name'];
for ($i=0; $i<count($pollAnswers); $i++) {
if ($pollAnswers[$i] != "") {
//투표결과 입력
$memo = $pollAnswers[$i];
@mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip) values ('$parent','$member[no]','$name','$password','$memo','$reg_date','$REMOTE_ADDR')");
}
}
if($member[no]) {
$name = addslashes($member[name]);
$password = addslashes($member[password]);
} else {
$name = '방문객';
$password = mt_rand();
}
$memo = addslashes("$name"."님이 설문에 참여하셨습니다!");
@mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip) values ('$no','$member[no]','$name','$password','$memo','$reg_date','poll_msg')");
$total=mysql_fetch_array(mysql_query("select count(*) from $t_comment"."_$id where parent='$no'"));
@mysql_query("update $t_board"."_$id set total_comment='$total[0]' where no='$no'");
} else {
// 재투표!! [회원전용 기능]
if ($re_poll == "1") {
@mysql_query("delete from $t_comment"."_$id where parent='$parent' and name='pollAnswer' and ismember='$member[no]' and password='$member[name]'");
@mysql_query("delete from $t_comment"."_$id where parent='$no' and name='$member[name]' and ismember='$member[no]' and password='$member[password]' and ip='poll_msg'");
$total=mysql_fetch_array(mysql_query("select count(*) from $t_comment"."_$id where parent='$no'"));
@mysql_query("update $t_board"."_$id set total_comment='$total[0]' where no='$no'");
}
}
echo "<script>parent.location.replace(parent.document.location.href);</script>";
}
?>
이렇게 하면 투표를 하게되면 자동으로 '아이디'님이 설문에 참여하셨습니다! 라고 나옵니다.
그런데 그누보드와 제로보드 코딩자체가 틀려 어떻게 해야 할지 모르겠습니다.
고수님들 한수 부탁드립니다.
댓글 전체

스크랩기능을 보면
댓글을 다는 기능이 있습니다. 이걸 응용하시면 될 겁니다.
참고해 보세요.
댓글을 다는 기능이 있습니다. 이걸 응용하시면 될 겁니다.
참고해 보세요.