PHP melaksanakan fungsi pengundian dan penerimaan jawapan soalan dalam laman web soalan dan jawapan pengetahuan.
Dengan perkembangan Internet, laman web soal jawab pengetahuan telah mendapat lebih ramai pengguna, dan telah menjadi cara penting untuk orang ramai memperoleh pengetahuan dan menyelesaikan masalah. Dalam laman web soal jawab ini, fungsi undian dan penerimaan jawapan soalan adalah sangat penting. Ia boleh membantu pengguna memilih jawapan yang terbaik, meningkatkan kredibiliti soalan dan reputasi penjawab.
Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pengundian dan penerimaan jawapan soalan, dan menyediakan contoh kod yang sepadan.
Pertama, kami memerlukan pangkalan data untuk menyimpan maklumat soal jawab. Katakan terdapat dua jadual dalam pangkalan data kami, satu ialah soalan yang digunakan untuk menyimpan maklumat soalan, dan satu lagi adalah jawapan yang digunakan untuk menyimpan maklumat jawapan. Struktur jadual soalan adalah seperti berikut:
CREATE TABLE questions ( id INT(11) PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
Struktur jadual jawapan adalah seperti berikut:
CREATE TABLE answers ( id INT(11) PRIMARY KEY AUTO_INCREMENT, question_id INT(11) NOT NULL, content TEXT NOT NULL, is_accepted TINYINT(1) DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
Seterusnya, kita perlu melaksanakan fungsi undian untuk jawapan soalan. Pengguna boleh menyukai atau tidak menyukai jawapan di bawah soalan untuk menyatakan persetujuan atau penolakan mereka terhadap jawapan. Kita boleh menambah dua medan baharu pada jadual jawapan, undian naik dan undi turun, untuk menyimpan bilangan suka dan tidak suka untuk jawapan.
ALTER TABLE answers ADD COLUMN upvote INT(11) DEFAULT 0; ALTER TABLE answers ADD COLUMN downvote INT(11) DEFAULT 0;
Dalam senarai jawapan soalan, kami boleh menambah butang undian untuk setiap jawapan Apabila pengguna mengklik butang, kami boleh menghantar jenis undian (suka atau tidak suka) dan ID jawapan kepada pelayan melalui Ajax. permintaan, dan kemudian Kemas kini bilangan suka atau tidak suka untuk jawapan yang sepadan dalam pangkalan data. Berikut ialah contoh kod mudah:
<!-- question.php --> <div> <h3>问题标题</h3> <p>问题内容</p> </div> <div> <h4>答案列表</h4> <?php // 从数据库中获取问题的答案列表 $answers = get_answers($question_id); foreach ($answers as $answer) { echo '<div>'; echo '<p>' . $answer['content'] . '</p>'; echo '<p>点赞数:' . $answer['upvote'] . '</p>'; echo '<p>点踩数:' . $answer['downvote'] . '</p>'; echo '<button onclick="vote(' . $answer['id'] . ', 'upvote')">点赞</button>'; echo '<button onclick="vote(' . $answer['id'] . ', 'downvote')">点踩</button>'; echo '</div>'; } ?> </div> <script> function vote(answerId, type) { // 发起Ajax请求 $.ajax({ url: 'vote.php', method: 'POST', data: { answer_id: answerId, type: type }, success: function(response) { // 更新点赞或点踩数 if (type === 'upvote') { $('#' + answerId + ' .upvote').text(parseInt($('#' + answerId + ' .upvote').text()) + 1); } else if (type === 'downvote') { $('#' + answerId + ' .downvote').text(parseInt($('#' + answerId + ' .downvote').text()) + 1); } } }); } </script>
Dalam fail vote.php, kami boleh mengemas kini bilangan suka atau tidak suka untuk jawapan yang sepadan dalam pangkalan data berdasarkan jenis undian dan ID jawapan yang dihantar oleh pengguna. Berikut ialah contoh kod mudah:
<?php // vote.php // 获取答案ID和投票类型 $answerId = $_POST['answer_id']; $type = $_POST['type']; // 更新答案的点赞或点踩数 if ($type === 'upvote') { $sql = "UPDATE answers SET upvote = upvote + 1 WHERE id = $answerId"; } else if ($type === 'downvote') { $sql = "UPDATE answers SET downvote = downvote + 1 WHERE id = $answerId"; } // 执行更新操作 // ... // 返回响应 // ... ?>
Di atas adalah contoh kod fungsi undian untuk jawapan soalan. Seterusnya, kami akan memperkenalkan cara melaksanakan fungsi penerimaan jawapan soalan.
Fungsi penerimaan jawapan soalan bermakna penyoal boleh memilih jawapan yang terbaik sebagai penyelesaian kepada soalan dan menandakannya sebagai diterima pakai. Kita boleh menambah medan baru is_accepted dalam jadual jawapan untuk menunjukkan sama ada jawapan itu diterima.
ALTER TABLE answers ADD COLUMN is_accepted TINYINT(1) DEFAULT 0;
Dalam senarai jawapan soalan, kami boleh menambah butang terima untuk setiap jawapan Apabila penanya mengklik butang, kami boleh menghantar ID jawapan kepada pelayan melalui permintaan Ajax, dan kemudian mengemas kini medan is_accepted bagi jawapan yang sepadan. dalam pangkalan data. Berikut ialah contoh kod mudah:
<!-- question.php --> <div> <h3>问题标题</h3> <p>问题内容</p> </div> <div> <h4>答案列表</h4> <?php // 从数据库中获取问题的答案列表 $answers = get_answers($question_id); foreach ($answers as $answer) { echo '<div>'; echo '<p>' . $answer['content'] . '</p>'; echo '<p>点赞数:' . $answer['upvote'] . '</p>'; echo '<p>点踩数:' . $answer['downvote'] . '</p>'; echo '<button onclick="vote(' . $answer['id'] . ', 'upvote')">点赞</button>'; echo '<button onclick="vote(' . $answer['id'] . ', 'downvote')">点踩</button>'; if ($question['user_id'] === $_SESSION['user_id']) { // 如果是提问者 echo '<button onclick="accept(' . $answer['id'] . ')">采纳</button>'; } echo '</div>'; } ?> </div> <script> function accept(answerId) { // 发起Ajax请求 $.ajax({ url: 'accept.php', method: 'POST', data: { answer_id: answerId }, success: function(response) { // 更新答案的采纳状态 $('#' + answerId).addClass('accepted'); } }); } </script>
Dalam fail accept.php, kami boleh mengemas kini medan is_accepted bagi jawapan yang sepadan dalam pangkalan data berdasarkan ID jawapan yang dihantar oleh pengguna. Berikut ialah contoh kod mudah:
<?php // accept.php // 获取答案ID $answerId = $_POST['answer_id']; // 更新答案的采纳状态 $sql = "UPDATE answers SET is_accepted = 1 WHERE id = $answerId"; // 执行更新操作 // ... // 返回响应 // ... ?>
Di atas adalah contoh kod fungsi penerimaan jawapan soalan. Melalui contoh kod ini, kami boleh melaksanakan fungsi pengundian dan penerimaan jawapan soalan dalam laman web soalan dan jawapan pengetahuan, meningkatkan pengalaman pengguna dan kualiti maklumat. Sudah tentu, perkara di atas hanyalah contoh mudah, dan lebih banyak butiran dan keselamatan perlu dipertimbangkan dalam aplikasi sebenar. Semoga artikel ini dapat membantu anda!
Atas ialah kandungan terperinci PHP melaksanakan fungsi pengundian dan penerimaan jawapan soalan dalam laman web soalan dan jawapan pengetahuan.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!