웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
초간단 설문조사 소스
2004.05.27 12:07
초간단 허접설문조사 소스입니다.
여기서 설문관련 소스 찾을려니까 없는것 같아서 제가 간단하게 만들어 봤습니다.
허접하지만 필요한 분이 있으면 좋겠네요..
설문조사는 총 3개의 페이지로 이루어 집니다.
저는 poll.php, pollinsert.php, pollview.php 이렇게 파일명을 만들었습니다.
제일먼저 mysql db 테이블을 만들어야 겠죠..
CREATE TABLE poll (
id int(11) DEFAULT '0' NOT NULL auto_increment,
answer varchar(20) NOT NULL,
wdate int(11) NOT NULL,
ip varchar NOT NULL,
PRIMARY KEY (id)
);
이렇게 만들면 됩니다. 간단하죠 ^^;;
이제 페이지 소스를 보도록 하겠습니다.
첫번째, poll.php 는 설문페이지 입니다.
제가 만든것은 찬성,반대 두개이지만 더 추가하실수 있습니다.
============== poll.php 소스 ==========================
<html>
<head>
<title>설문조사</title>
<script language=javascript>
function chkAnswer()
{
var Form = eval(document.form1);
var chk = 0;
if(Form.answer[0].checked == true) chk++;
if(Form.answer[1].checked == true) chk++; //답변추가시 이곳에 번호순으로 추가하세요
if(chk == 0) {
alert('선택해주세요. ^^');
return false;
}
Form.action = 'pollinsert.php';
Form.submit();
}
</script>
</head>
<body>
<form name=form1 method=post>
이거 찬성, 반대 말해봐봐~~~~ <br>
//답변추가시 이곳에 value를 번호순으로 추가하시면 됩니다.
찬성 <input type=radio name=answer value=1> <br>
반대 <input type=radio name=answer value=2> <br>
<br>
<a href=javascript:; onClick="chkAnswer(); return false;">설문<a>
</form>
</body>
</html>
두번째, pollinsert.php
이 페이지는 poll.php에서 넘어 온 값을 db에 만든 poll이라는 테이블에 저장하도록 하는 페이지입니다.
============== pollinsert.php 소스 ==========================
<?
$board = "테이블명"; //이곳은 db에 만들었던 테이블명을 적으면 됩니다. 위에서 poll이라고 만들었죠..
$conn = mysql_connect("localhost","db아이디","db비번");
mysql_select_db("db이름", $conn);
$wdate = time();
$ip = getenv("REMOTE_ADDR");
/*
아래 부분은 설문에 중복참여를 방지하는 곳입니다.
현재는 막아 놓았는데 필요하시다면 풀면 됩니다. (// <-이것 제거)
현재 ip주소가 같은면 중복으로 되어 있는데 회원제일 경우 회원 아이디로
변경하셔도 무방합니다.
*/
//$res1 = mysql_query("SELECT ip FROM $board WHERE ip='$ip'",$conn);
// 중복참여 체크
//if(mysql_num_rows($res1)) {
// @mysql_close($conn);
//echo("<script>alert('이미 이벤트에 참여하셧습니다.nn참여해주셔서 감사합니다.^^');history.back();</script>"); exit; }
// 설문 참여 성공 부분입니다. poll.php에서 넘어온 값이 이곳을 통해 db의 poll테이블에 저장니다.
$res2 = mysql_query("INSERT INTO $board (id,answer,wdate,ip) VALUES ('','$answer','$wdate','$ip')",$conn);
if(!$res2) dbError();
@mysql_close($conn);
echo("<script>alert('참여해주셔서 감사합니다.^^');self.location.href='pollview.php'</script>");
//설문을 마치고 돌아가는 페이지... (저는 설문결과보기가 되어 있는 pollview.php로 연결했습니다.
?>
세번째, pollview.php
이 페이지는 설문결과페이지입니다.
몇명이 설문에 응했는지 각번호(질문)를 몇분이 선택했는지 등이 나옵니다.
============== pollview.php 소스 ==========================
<?
$board = "테이블명"; //이곳은 db에 만들었던 테이블명을 적으면 됩니다. 위에서 poll이라고 만들었죠..
$conn = mysql_connect("localhost","db아이디","db비번");
mysql_select_db("db이름", $conn);
/*
각답변에 해당하는 번호를 선택하는 것입니다.
만약 답변이 더 많으면 번호순으로 더 늘리시면 됩니다.
*/
$res1 = mysql_query("select * from $board where answer=1", $conn);
$res2 = mysql_query("select * from $board where answer=2", $conn);
//각각 선택된답변이 몇개인지를 출력
$num1 = mysql_num_rows($res1);
$num2 = mysql_num_rows($res2);
$sum = $num1 + $num2; //전체적으로 답변된것이 몇개인지 출력 (즉 설문참여자가 총몇분인지 출력한다.)
//각 선택된 답변 백분율 구하기
$img1 = (int)(($num1*100)/$sum);
$img2 = (int)(($num2*100)/$sum);
echo("
<html>
<head>
<title>설문조사결과</title>
</head>
<table width=780 border=0 cellspacing=0 cellpadding=0 align=center>
<tr><td>
<table width=780 border=0 cellspacing=0 cellpadding=0 align=center><tr height=10><td></td></tr><tr height=1><td bgcolor=A4A4A4></td></tr><tr height=10><td></td></tr></table>
<table width=780 border=0 cellspacing=0 cellpadding=0 align=center style='border:1px #999999 solid'>
<tr height=25><td colspan=4 bgcolor=666666 align=center><font color=FFFFFF><b> 결과 (총 : $sum 표)</b></font></td></tr>
<tr><td colspan=4 bgcolor=999999></td></tr>
<tr><td>찬성($num1)</td><td><img src='bar.gif' width='$img1' height='13'></td><td>$img1 %</td></tr>
<tr><td>반대($num2)</td><td><img src='bar.gif' width='$img2' height='13'></td><td>$img2 %</td></tr>
</table>
</td></tr>
</table>
</body>
</html>
");
?>
이렇게 끝입니다.. ^^;;
여기서 설문관련 소스 찾을려니까 없는것 같아서 제가 간단하게 만들어 봤습니다.
허접하지만 필요한 분이 있으면 좋겠네요..
설문조사는 총 3개의 페이지로 이루어 집니다.
저는 poll.php, pollinsert.php, pollview.php 이렇게 파일명을 만들었습니다.
제일먼저 mysql db 테이블을 만들어야 겠죠..
CREATE TABLE poll (
id int(11) DEFAULT '0' NOT NULL auto_increment,
answer varchar(20) NOT NULL,
wdate int(11) NOT NULL,
ip varchar NOT NULL,
PRIMARY KEY (id)
);
이렇게 만들면 됩니다. 간단하죠 ^^;;
이제 페이지 소스를 보도록 하겠습니다.
첫번째, poll.php 는 설문페이지 입니다.
제가 만든것은 찬성,반대 두개이지만 더 추가하실수 있습니다.
============== poll.php 소스 ==========================
<html>
<head>
<title>설문조사</title>
<script language=javascript>
function chkAnswer()
{
var Form = eval(document.form1);
var chk = 0;
if(Form.answer[0].checked == true) chk++;
if(Form.answer[1].checked == true) chk++; //답변추가시 이곳에 번호순으로 추가하세요
if(chk == 0) {
alert('선택해주세요. ^^');
return false;
}
Form.action = 'pollinsert.php';
Form.submit();
}
</script>
</head>
<body>
<form name=form1 method=post>
이거 찬성, 반대 말해봐봐~~~~ <br>
//답변추가시 이곳에 value를 번호순으로 추가하시면 됩니다.
찬성 <input type=radio name=answer value=1> <br>
반대 <input type=radio name=answer value=2> <br>
<br>
<a href=javascript:; onClick="chkAnswer(); return false;">설문<a>
</form>
</body>
</html>
두번째, pollinsert.php
이 페이지는 poll.php에서 넘어 온 값을 db에 만든 poll이라는 테이블에 저장하도록 하는 페이지입니다.
============== pollinsert.php 소스 ==========================
<?
$board = "테이블명"; //이곳은 db에 만들었던 테이블명을 적으면 됩니다. 위에서 poll이라고 만들었죠..
$conn = mysql_connect("localhost","db아이디","db비번");
mysql_select_db("db이름", $conn);
$wdate = time();
$ip = getenv("REMOTE_ADDR");
/*
아래 부분은 설문에 중복참여를 방지하는 곳입니다.
현재는 막아 놓았는데 필요하시다면 풀면 됩니다. (// <-이것 제거)
현재 ip주소가 같은면 중복으로 되어 있는데 회원제일 경우 회원 아이디로
변경하셔도 무방합니다.
*/
//$res1 = mysql_query("SELECT ip FROM $board WHERE ip='$ip'",$conn);
// 중복참여 체크
//if(mysql_num_rows($res1)) {
// @mysql_close($conn);
//echo("<script>alert('이미 이벤트에 참여하셧습니다.nn참여해주셔서 감사합니다.^^');history.back();</script>"); exit; }
// 설문 참여 성공 부분입니다. poll.php에서 넘어온 값이 이곳을 통해 db의 poll테이블에 저장니다.
$res2 = mysql_query("INSERT INTO $board (id,answer,wdate,ip) VALUES ('','$answer','$wdate','$ip')",$conn);
if(!$res2) dbError();
@mysql_close($conn);
echo("<script>alert('참여해주셔서 감사합니다.^^');self.location.href='pollview.php'</script>");
//설문을 마치고 돌아가는 페이지... (저는 설문결과보기가 되어 있는 pollview.php로 연결했습니다.
?>
세번째, pollview.php
이 페이지는 설문결과페이지입니다.
몇명이 설문에 응했는지 각번호(질문)를 몇분이 선택했는지 등이 나옵니다.
============== pollview.php 소스 ==========================
<?
$board = "테이블명"; //이곳은 db에 만들었던 테이블명을 적으면 됩니다. 위에서 poll이라고 만들었죠..
$conn = mysql_connect("localhost","db아이디","db비번");
mysql_select_db("db이름", $conn);
/*
각답변에 해당하는 번호를 선택하는 것입니다.
만약 답변이 더 많으면 번호순으로 더 늘리시면 됩니다.
*/
$res1 = mysql_query("select * from $board where answer=1", $conn);
$res2 = mysql_query("select * from $board where answer=2", $conn);
//각각 선택된답변이 몇개인지를 출력
$num1 = mysql_num_rows($res1);
$num2 = mysql_num_rows($res2);
$sum = $num1 + $num2; //전체적으로 답변된것이 몇개인지 출력 (즉 설문참여자가 총몇분인지 출력한다.)
//각 선택된 답변 백분율 구하기
$img1 = (int)(($num1*100)/$sum);
$img2 = (int)(($num2*100)/$sum);
echo("
<html>
<head>
<title>설문조사결과</title>
</head>
<table width=780 border=0 cellspacing=0 cellpadding=0 align=center>
<tr><td>
<table width=780 border=0 cellspacing=0 cellpadding=0 align=center><tr height=10><td></td></tr><tr height=1><td bgcolor=A4A4A4></td></tr><tr height=10><td></td></tr></table>
<table width=780 border=0 cellspacing=0 cellpadding=0 align=center style='border:1px #999999 solid'>
<tr height=25><td colspan=4 bgcolor=666666 align=center><font color=FFFFFF><b> 결과 (총 : $sum 표)</b></font></td></tr>
<tr><td colspan=4 bgcolor=999999></td></tr>
<tr><td>찬성($num1)</td><td><img src='bar.gif' width='$img1' height='13'></td><td>$img1 %</td></tr>
<tr><td>반대($num2)</td><td><img src='bar.gif' width='$img2' height='13'></td><td>$img2 %</td></tr>
</table>
</td></tr>
</table>
</body>
</html>
");
?>
이렇게 끝입니다.. ^^;;
댓글 3
-
9000㎒
2004.05.27 17:38
-
이혁
2004.05.27 18:04
다수 문항도 할수 있답니다. ^^;;;
위에 소스가 그냥 찬성,반대로만 돼어 있어서 그렇지 다수문항의 설문도
위소스를 조금만 고치면 됩니다.
예를 드면
찬성 <input type=radio name=answer value=1> <br>
반대 <input type=radio name=answer value=2> <br>
이 부분을
답변1 <input type=radio name=answer value=1> <br>
답변2 <input type=radio name=answer value=2> <br>
답변3 <input type=radio name=answer value=3> <br>
답변4 <input type=radio name=answer value=4> <br>
이런식으로 느리면 되구요 나머지 그에 관련된 소스도 순서대로 늘리시면
다수문항도 충분히 할수 있습니다. ^^ -
9000㎒
2004.05.28 17:06
이혁 // 수동으로 하기가 귀찮아서 그렇죠 :) (뭐 관리자모드 만들어서 SQL에 SAVE 해서 구현하면 될테지만)
제목 | 글쓴이 | 날짜 |
---|---|---|
초간단 스팸방지 하면서 곧바로 메일 보내기 [3] | U2em | 2004.05.31 |
해당 ftp 파일 서버에서 다른곳의 ftp 파일 서버로 백업용도 및 전송하기.. [9] | 김동욱 | 2004.05.30 |
초간단 설문조사 소스 [3] | 이혁 | 2004.05.27 |
PHP로 구현하는 음악 감상실 [9] | 컴도미 | 2004.05.21 |
[국밥PHP] 1-1(1). 개념정리 Break Time (Build 1) [7] | 9000㎒ | 2004.05.18 |
팁 아닌 팁 한달전... | http://zentoo.com | 2004.05.15 |
포털사이트 처럼 시스템 점검중 만들기 [3] | http://zentoo.com | 2004.05.14 |
PHP 4에서 PHP 5로 이행 [5] | 이종현 | 2004.04.30 |
PHP5 RC2 Released. [4] | 써니루루☆ | 2004.04.27 |
트랙백 구현하기 - 2. 트랙백의 형식 | TheMics | 2004.04.22 |
트랙백 구현하기 - 2. 트랙백의 형식 | TheMics | 2004.04.22 |
엔지오 채널 따라하기 -_-& www자동 붙이기 [6] | 박종찬 | 2004.04.18 |
트랙백 구현하기 - 1. 트랙백이란 무엇인가? [4] | TheMics | 2004.04.18 |
[국에 밥말아먹는 PHP 프로그래밍] 1-1. PHP는 뭐하는 밥이냐?! (상) (Build 2) [17] | 9000㎒ | 2004.04.18 |
배열의 정렬에 대한 약간의 강의 [2] | ♡다솜지기♡ | 2004.04.02 |
드디어 PHP 5 RC1 발표(04.03.18) [8] | 써니루루☆ | 2004.03.19 |
PHP와 MYSQL연동 관련함수 [3] | 백무혼 | 2004.03.07 |
함수] Exec 함수에 대한 간략한 설명 [3] | NS | 2004.03.05 |
초간단 인라이브 방송여부 알아보기 프로그램. [12] | 심심타 | 2004.03.01 |
[허접팁]윈엠프 리스트창에 방송정보 보여주기;;[수정] [5] | 『처니리♂』 | 2004.02.29 |
정말 간단하고 좋군요. (그러나 다수의 문항이 필요한 것이면 낭패)