PHP를 사용하여 강력한 온라인 투표 플랫폼 만들기

WBOY
풀어 주다: 2023-08-08 10:58:02
원래의
927명이 탐색했습니다.

PHP를 사용하여 강력한 온라인 투표 플랫폼 만들기

PHP를 사용하여 강력한 온라인 투표 플랫폼 만들기

소개:
인터넷의 발전으로 온라인 투표는 의견을 수집하고 결정을 내리는 일반적이고 편리한 방법이 되었습니다. 이 기사에서는 PHP를 사용하여 사용자가 쉽게 투표에 참여하고 결과를 볼 수 있는 강력한 온라인 투표 플랫폼을 만들어 보겠습니다. 이 기능을 구현하기 위해 HTML, CSS, PHP의 조합을 사용할 것입니다.

1단계: 데이터베이스 만들기
먼저 투표 관련 데이터를 저장할 데이터베이스를 만들어야 합니다. 이 작업을 수행하기 위해 MySQL 데이터베이스를 사용할 수 있습니다. MySQL에 "voting_platform"이라는 데이터베이스를 만들고 그 안에 두 개의 테이블을 만듭니다. 하나는 투표 질문과 옵션을 저장하고 다른 하나는 사용자 투표 결과를 저장합니다.

투표 질문 및 옵션 테이블 만들기:

CREATE TABLE questions (questions (
id int(11) NOT NULL AUTO_INCREMENT,
question varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE options (
id int(11) NOT NULL AUTO_INCREMENT,
question_id int(11) NOT NULL,
option varchar(255) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (question_id) REFERENCES questions (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建用户投票结果表:

CREATE TABLE votes (
id int(11) NOT NULL AUTO_INCREMENT,
question_id int(11) NOT NULL,
option_id int(11) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (question_id) REFERENCES questions (id) ON DELETE CASCADE,
FOREIGN KEY (option_id) REFERENCES options (id id int(11) NOT NULL AUTO_INCREMENT,
question varchar( 255) NOT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE options (

id code> int(11) NOT NULL AUTO_INCREMENT,<br> <code>question_id int(11) NOT NULL,

option varchar(255) NOT NULL,

PRIMARY KEY(id code>),<br> FOREIGN KEY (<code>question_id) REFERENCES questions (id) ON DELETE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;🎜 🎜사용자 투표 결과 테이블 생성: 🎜🎜CREATE TABLE votes (🎜 id int(11) NOT NULL AUTO_INCREMENT,🎜 question_id int( 11) NOT NULL,🎜 option_id int(11) NOT NULL,🎜 PRIMARY KEY(id),🎜 FOREIGN KEY(question_id) REFERENCES 질문 (id) ON DELETE CASCADE,🎜 FOREIGN KEY (option_id) REFERENCES options (id code> ) ON DELETE CASCADE🎜) ENGINE=InnoDB DEFAULT CHARSET=utf8;🎜🎜2단계: 투표 플랫폼 페이지 생성🎜다음으로 투표 플랫폼의 프런트 엔드 페이지 생성을 시작할 수 있습니다. 우리는 아름답고 사용자 친화적인 인터페이스를 만들기 위해 HTML과 CSS를 사용할 것입니다. 페이지에는 투표 질문과 옵션이 표시되고 사용자가 선택할 수 있는 투표 버튼이 제공됩니다. 동시에 투표 결과도 표시됩니다. 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:html;toolbar:false;'>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;在线投票平台&lt;/title&gt; &lt;style&gt; /* 样式定义 */ &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;在线投票平台&lt;/h1&gt; &lt;?php // 连接到数据库 $conn = new mysqli('localhost', 'username', 'password', 'voting_platform'); // 检查连接是否成功 if ($conn-&gt;connect_error) { die(&quot;连接数据库失败: &quot; . $conn-&gt;connect_error); } // 查询投票问题和选项 $sql = &quot;SELECT id, question FROM questions&quot;; $result = $conn-&gt;query($sql); if ($result-&gt;num_rows &gt; 0) { // 输出投票问题 while($row = $result-&gt;fetch_assoc()) { echo &quot;&lt;h2&gt;&quot; . $row[&quot;question&quot;] . &quot;&lt;/h2&gt;&quot;; // 查询投票选项 $sql = &quot;SELECT id, option FROM options WHERE question_id=&quot; . $row[&quot;id&quot;]; $options = $conn-&gt;query($sql); if ($options-&gt;num_rows &gt; 0) { // 输出投票选项 while($option = $options-&gt;fetch_assoc()) { echo &quot;&lt;input type='radio' name='option_&quot; . $row[&quot;id&quot;] . &quot;' value='&quot; . $option[&quot;id&quot;] . &quot;'&gt;&quot; . $option[&quot;option&quot;] . &quot;&lt;br&gt;&quot;; } } echo &quot;&lt;button onclick='vote(&quot; . $row[&quot;id&quot;] . &quot;)'&gt;投票&lt;/button&gt;&quot;; } } // 关闭数据库连接 $conn-&gt;close(); ?&gt; &lt;h2&gt;投票结果&lt;/h2&gt; &lt;?php // 连接到数据库 $conn = new mysqli('localhost', 'username', 'password', 'voting_platform'); // 检查连接是否成功 if ($conn-&gt;connect_error) { die(&quot;连接数据库失败: &quot; . $conn-&gt;connect_error); } // 查询投票结果 $sql = &quot;SELECT questions.id, questions.question, options.option, COUNT(votes.id) as count FROM questions JOIN options ON questions.id = options.question_id LEFT JOIN votes ON options.id = votes.option_id GROUP BY options.id&quot;; $result = $conn-&gt;query($sql); if ($result-&gt;num_rows &gt; 0) { // 输出投票结果 while($row = $result-&gt;fetch_assoc()) { echo &quot;&lt;p&gt;&quot; . $row[&quot;question&quot;] . &quot;&lt;br&gt;&quot;; echo $row[&quot;option&quot;] . &quot;: &quot; . $row[&quot;count&quot;] . &quot; 票&lt;/p&gt;&quot;; } } // 关闭数据库连接 $conn-&gt;close(); ?&gt; &lt;script&gt; // 使用AJAX发送投票请求 function vote(questionId) { var options = document.getElementsByName('option_' + questionId); var selectedOptionId; for (var i = 0; i &lt; options.length; i++) { if (options[i].checked) { selectedOptionId = options[i].value; break; } } if (selectedOptionId) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { alert(&quot;投票成功!&quot;); location.reload(); // 刷新页面以更新投票结果 } else { alert(&quot;投票失败!&quot;); } } }; xhr.open('POST', 'vote.php', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send('question_id=' + questionId + '&amp;option_id=' + selectedOptionId); } else { alert(&quot;请选择一个选项进行投票!&quot;); } } &lt;/script&gt; &lt;/body&gt; &lt;/html&gt;</pre><div class="contentsignin">로그인 후 복사</div></div>🎜3단계: 투표 요청 처리🎜투표 요청을 처리하고 결과를 데이터베이스에 저장하려면 "vote.php"라는 PHP 파일을 만듭니다. 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;?php // 获取问题ID和选项ID $questionId = $_POST['question_id']; $optionId = $_POST['option_id']; // 连接到数据库 $conn = new mysqli('localhost', 'username', 'password', 'voting_platform'); // 检查连接是否成功 if ($conn-&gt;connect_error) { die(&quot;连接数据库失败: &quot; . $conn-&gt;connect_error); } // 插入投票结果到数据库 $sql = &quot;INSERT INTO votes (question_id, option_id) VALUES ($questionId, $optionId)&quot;; if ($conn-&gt;query($sql) === TRUE) { echo &quot;投票成功!&quot;; } else { echo &quot;投票失败!&quot;; } // 关闭数据库连接 $conn-&gt;close(); ?&gt;</pre><div class="contentsignin">로그인 후 복사</div></div>🎜결론: 🎜위의 단계를 통해 우리는 강력한 온라인 투표 플랫폼을 성공적으로 만들었습니다. 사용자는 질문과 해당 옵션을 선택하여 투표할 수 있으며, 투표 결과도 볼 수 있습니다. PHP와 데이터베이스를 사용하여 간단하면서도 강력한 투표 플랫폼을 구현하여 의사 결정 및 의견 수집을 위한 편리하고 효율적인 도구를 제공합니다. 🎜

위 내용은 PHP를 사용하여 강력한 온라인 투표 플랫폼 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿