Rumah > pembangunan bahagian belakang > tutorial php > Cipta platform pengundian dalam talian yang berkuasa menggunakan PHP

Cipta platform pengundian dalam talian yang berkuasa menggunakan PHP

WBOY
Lepaskan: 2023-08-08 10:58:02
asal
960 orang telah melayarinya

Cipta platform pengundian dalam talian yang berkuasa menggunakan PHP

Gunakan PHP untuk mencipta platform pengundian dalam talian yang berkuasa

Pengenalan:
Dengan perkembangan Internet, pengundian dalam talian telah menjadi cara biasa dan mudah untuk mengumpul pendapat dan membuat keputusan. Dalam artikel ini, kami akan menggunakan PHP untuk mencipta platform pengundian dalam talian yang berkuasa yang membolehkan pengguna mengambil bahagian dalam pengundian dengan mudah dan melihat keputusan. Kami akan menggunakan gabungan HTML, CSS dan PHP untuk mencapai fungsi ini.

Langkah 1: Buat pangkalan data
Pertama, kita perlu mencipta pangkalan data untuk menyimpan data berkaitan pengundian. Kita boleh menggunakan pangkalan data MySQL untuk menyelesaikan tugas ini. Cipta pangkalan data bernama "voting_platform" dalam MySQL dan buat dua jadual di dalamnya: satu untuk menyimpan soalan dan pilihan pengundian, dan satu lagi untuk menyimpan hasil undian pengguna.

Buat jadual soalan undian dan pilihan:

BUAT JADUAL soalan (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) BUKAN NULL AUTO_INCREMENT,
soalan varchar( 255) BUKAN NULL,

KUNCI UTAMA (id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CIPTA JADUAL pilihan (

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

option varchar(255) NOT NULL,

PRIMARY KEY (id code>),<br> FOREIGN KUNCI (<code>question_id) RUJUKAN soalan (id) ON DELETE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;🎜 🎜Buat jadual keputusan pengundian pengguna: 🎜🎜BUAT JADUAL undi (🎜 id int(11) BUKAN NULL AUTO_INCREMENT,🎜 id_soalan int( 11) BUKAN NULL,🎜 id_pilihan int(11) BUKAN NULL,🎜 KUNCI UTAMA (id),🎜 KUNCI ASING (id_soalan) RUJUKAN soalan (id) ON DELETE CASCADE,🎜 FOREIGN KEY (option_id) RUJUKAN options (id code> kod> ) ON DELETE CASCADE🎜) ENGINE=InnoDB DEFAULT CHARSET=utf8;🎜🎜Langkah 2: Buat halaman platform mengundi🎜Seterusnya, kita boleh mula mencipta halaman hadapan platform pengundian. Kami akan menggunakan HTML dan CSS untuk mencipta antara muka yang cantik dan mesra pengguna. Pada halaman, kami akan memaparkan soalan dan pilihan pengundian, dan menyediakan butang undian untuk dipilih oleh pengguna. Pada masa yang sama, kami juga akan memaparkan keputusan pengundian. 🎜<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">Salin selepas log masuk</div></div>🎜Langkah 3: Proses permintaan pengundian🎜Buat fail PHP bernama "vote.php" untuk memproses permintaan pengundian dan menyimpan keputusan ke pangkalan data. 🎜<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">Salin selepas log masuk</div></div>🎜Kesimpulan: 🎜Melalui langkah di atas, kami berjaya mencipta platform pengundian dalam talian yang berkuasa. Pengguna boleh memilih soalan dan pilihan yang sepadan untuk mengundi, dan juga boleh melihat keputusan pengundian. Dengan menggunakan PHP dan pangkalan data, kami melaksanakan platform pengundian yang mudah tetapi berkuasa, menyediakan alat yang mudah dan cekap untuk membuat keputusan dan pengumpulan pendapat. 🎜

Atas ialah kandungan terperinci Cipta platform pengundian dalam talian yang berkuasa menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan