PHP 프로그래밍

본문 바로가기
사이트 내 전체검색


Web Programming >> PHP Programming
[목차]
제11장 설문조사 프로그램(MySQL)

    1. MySQL을 이용한 설문조사 프로그램

 설문조사 프로그램은 현재 인터넷의 많은 사이트들에서 사용하고 있습니다. 이는 해당 사이트를 찾는 사람들이 그 사이트에 대한 평가나 어떤 이슈에 대한 사용자 들의 선호도를 판단함으로써 타켓 마케팅을 실현하기 위해서입니다. 또한 개인 사이트라면 자신의 홈페이지를 찾는 사람들이 원하는 자료등을 설문 받아 참고할 수 있습니다.

설문조사 프로그램은 광범위하게 여러 가지 많은 내용을 선택하거나 단답형으로 대답하는 방식이나 간단하게 한가지 주제에 대해 준비된 답안 중 자신에게 가장 맞는 내용을 선택하는 방식이 있습니다.

여기서 만들어  볼 설문조사 프로그램은 한가지 부여된 주제로 사용자에게 설문을 받는 프로그램입니다.

1. DB 설계

CREATE TABLE poll(

num int not null default '0' auto_increment,

poll varchar(255),

ex1 varchar(80),

ex2 varchar(80),

ex3 varchar(80),

ex4 varchar(80),

ans1 int(11) not null default '0',

ans2 int(11) not null default '0',

ans3 int(11) not null default '0',

ans4 int(11) not null default '0',

date date,

primary key(num));

 

 

2.  설문 등록하기(poll_registe.html)

<?

if( $flag == "") {

   echo "

      <center>

      <table border=0 bgcolor=555555 cellpadding=3 cellspacing=1 width=400>

      <tr>

      <form method=post action='poll_registe.html'>

      <td align=center width=120 bgcolor=cccccc><font size=2>

      투표 주제</td>

      <td bgcolor=white>

      <textarea name=POLL cols=35 rows=3></textarea>

      </td>

      <tr>

      <td align=center width=120 bgcolor=cccccc><font size=2>

      보기 1</td>

      <td bgcolor=white>

      <input type=text size=35 name=EX1>

      </td>

      <tr>

      <td align=center width=120 bgcolor=cccccc><font size=2>

      보기 2</td>

      <td bgcolor=white>

      <input type=text size=35 name=EX2>

      </td>

      <tr>

      <td align=center width=120 bgcolor=cccccc><font size=2>

      보기 3</td>

      <td bgcolor=white>

      <input type=text size=35 name=EX3>

      </td>

      <tr>

      <td align=center width=120 bgcolor=cccccc><font size=2>

      보기 4</td>

      <td bgcolor=white>

      <input type=text size=35 name=EX4>

      </td>

      </table>

      <br>

      <input type=submit value='투표등록'>

      <input type=hidden name=flag value='Y'>

      </form>";

   exit;

}

else {

$connect = mysql_connect("localhost","php","php99") or die("DB접속 에러!!");

mysql_select_db("sample",$connect);

 

$query = "insert into poll (poll,ex1,ex2,ex3,ex4,date)  values ('$POLL','$EX1','$EX2','$EX3','$EX4',now())";

mysql_query($query,$connect);

 

echo "

<br>

<br>

<center>

<font size=2>

새로운 투표가 등록되었습니다.

<br>

<br>";

 

}

?>

 

 

3. 설문조사하기(poll.html)

 

<?

   // Mysql db에 접속

   $dbconn = mysql_connect("localhost","php","php99");

   mysql_select_db("sample",$dbconn);

 

   // 투표를 체크한 경우에 해당 항목의 카운터를 1 증가시킴

   if( $ans != "" && $ans != NULL )

   {

      $query = "update poll set $ans=$ans+1 where num=$sel_num";

      mysql_query($query,$dbconn);

   }

 

 

   // 투표 데이터에서 제일 마지막 데이터를 얻어냄

   if( $sel_num != "")

   {

      $query = "select * from poll where num=$sel_num";

   }

   else

   {

      $query = "select * from poll order by num desc";

   }

 

   $res = mysql_query($query,$dbconn);

   $poll = mysql_fetch_array($res);

 

 

   echo "

     <script language=javascript>

     function poll_ok()

     {

        window.open('','poll','width=400,height=280,scrollbars=yes');

        document.poll.submit();

     }

     </script>

     <table border=1 width=100% cellpadding=3 cellspacing=0 bordercolordark=ffffff bordercolorlight=555555>

     <tr>

     <form name=poll action=./poll.html target=poll>

     <input type=hidden name=flag value=ok>

     <input type=hidden name=sel_num value=$poll[num]>

     <td align=center bgcolor=ccccff><font size=2 face=impact color=222222>*^^* 깜짝 투표 *^^*

     </td>

     <tr>

     <td bgcolor=white><font size=2>

     $poll[poll]<br><br>";

 

  // 투표화면인지 결과화면인지를 flag 를 이용하여 구분, 디스플레이를 다르게 해줌

 

  if( $flag == "ok" || $flag == "no")

  {

   $total = $poll[ans1] + $poll[ans2] + $poll[ans3] + $poll[ans4];

   echo "<table border=0 bgcolor=888888 cellpadding=2 cellspacing=1 width=100%>";

   if( $poll[ex1] != "" )

   {

     $tmp=0;

     if( $poll[ans1] > 0 )$tmp = ((int)$poll[ans1]*100) / $total;

     $ex = $poll[ex1];

     echo "<tr bgcolor=white>";

     echo "<td><font size=2>$ex</td>";

     echo "<td align=center width=30><font size=2>$poll[ans1]</td><td align=left WIDTH=100>

           <table border=0 width=$tmp%><td height=10 bgcolor=orange></td></table>

           </td>";

   }

   if( $poll[ex2] != "" )

   {

     $tmp=0;

     if( $poll[ans2] > 0 )$tmp = ((int)$poll[ans2]*100) / $total;

     $ex = $poll[ex2];

     echo "<tr bgcolor=white>";

     echo "<td><font size=2>$ex</td>";

     echo "<td align=center width=30><font size=2>$poll[ans2]</td><td align=left>

           <table border=0 width=$tmp%><td height=10 bgcolor=orange></td></table>

           </td>";

   }

   if( $poll[ex3] != "" )

   {

     $tmp=0;

     if( $poll[ans3] > 0 )$tmp = ((int)$poll[ans3]*100) / $total;

     $ex = $poll[ex3];

     echo "<tr bgcolor=white>";

     echo "<td><font size=2>$ex</td>";

     echo "<td align=center width=30><font size=2>$poll[ans3]</td><td align=left>

           <table border=0 width=$tmp%><td height=10 bgcolor=orange></td></table>

           </td>";

   }

   if( $poll[ex4] != "" )

   {

     $tmp=0;

     if( $poll[ans4] > 0 )$tmp = ((int)$poll[ans4]*100) / $total;

     $ex = $poll[ex4];

     echo "<tr bgcolor=white>";

     echo "<td><font size=2>$ex</td>";

     echo "<td align=center width=30><font size=2>$poll[ans4]</td><td align=left>

           <table border=0 width=$tmp%><td height=10 bgcolor=orange></td></table>

           </td>";

   }

   echo "<tr><td colspan=3 bgcolor=ccccdd><font size=2>총 투표인원 : $total 명</td>";

   echo "</table></td></table>";

   echo "<table border=0><tr><td></table><center>

      <input type=button value=확인 onclick=window.close()>";

 

  }

  else

  {

   if( $poll[ex1] != "" )

     echo "<input type=radio name=ans value=ans1>$poll[ex1]<br>";

   if( $poll[ex2] != "" )

     echo "<input type=radio name=ans value=ans2>$poll[ex2]<br>";

   if( $poll[ex3] != "" )

     echo "<input type=radio name=ans value=ans3>$poll[ex3]<br>";

   if( $poll[ex4] != "" )

     echo "<input type=radio name=ans value=ans4>$poll[ex4]<br>";

 

   echo "

     </td>

     <tr>

     <td align=center>

     <input type=button value=투표/결과보기 onclick='return poll_ok();'>

     </td></table>

   ";

  }

?>

 

4. 전체 설문조사 목록보기(poll_list.html)

<?

 

   if( $nowpage == "" )

     $nowpage=1;

 

   $connect = mysql_connect("localhost","php","php99") or error("USER DB 연결 실패!!");

 

   mysql_select_db("sample",$connect);

 

   $query = "select * from poll order by num desc";

   $res = mysql_query($query,$connect);

   $total = mysql_num_rows($res);

   $pagenum = (int)($total/10) +1;

   if( $pagenum < 1 ) $pagenum = 1;

 

?>

<html>

<script language=javascript>

function poll_ans(num)

{

   url = "poll.html?flag=no&num="+num;

   window.open(url,'poll_win','width=300,height=250,scrollbars=yes');

}

</script>

<body><center><br>

<font size=2 color=white>

++ 그동안 진행한 깜짝투표 전체 보기 ++<br><br>

<table border=0 width=95%>

<tr><td align=left><font size=2 color=white>

<?

   echo "총 $total 건</td>";

   echo "<td align=right><font size=2 color=white>($nowpage/$pagenum)</td></tr></table>";

?>

<table border=0 cellpadding=3 cellspacing=1 bgcolor=black width=95%>

<tr bgcolor=dddddd>

<td align=center width=30><font size=2>번호</td>

<td align=center width=80><font size=2>등록일</td>

<td align=center><font size=2>투표 주제</td>

<td align=center width=60><font size=2>투표 인원</td>

<td align=center width=70><font size=2>결과보기</td>

</tr>

<?

   for( $j = 0 ; $j < ($nowpage-1)*10; $j++ ){

       mysql_fetch_array($res1);

   }

 

   $j=1;

   while( $row1 = mysql_fetch_array($res) ){

        $tmp = $row1[ans1] + $row1[ans2] + $row1[ans3] + $row1[ans4];

        echo "

          <tr bgcolor=white>

          <td align=center><font size=3>$row1[num]</td>

          <td align=center><font size=2>$row1[date]</td>

          <td align=center><font size=2>$row1[poll]</td>

          <td align=center><font size=2>$tmp</td>

          <td align=center><font size=2>[

          <a style=color:brown href=javascript:poll_ans('$row1[num]')>결과보기</a>]</td>

          </tr>

        ";

        $j++;

        if($j > 10) break;

   }

   echo "</table><br>";

   $k = $nowpage-1;

   if( $k >= 1 )

    echo "[<a href=poll_list.html?nowpage=$k>이전목록</a>]";

   else

    echo "[이전목록]";

   $k = $nowpage+1;

   echo "&nbsp;&nbsp;&nbsp;";

   if( $k <= $pagenum )

    echo "[<a href=poll_list.html?nowpage=$k>다음목록</a>]";

   else

    echo "[다음목록]";

 

?>

 

 

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.