PHP는 지식질문답변 사이트에서 질문답변의 투표 및 채택 기능을 구현합니다.
인터넷의 발달과 함께 지식질문답 사이트는 점점 더 많은 이용자를 확보하고 있으며, 사람들이 지식을 얻고 문제를 해결하는 중요한 수단이 되었습니다. 이러한 질문 및 답변 웹 사이트에서 질문 답변의 투표 및 채택 기능은 사용자가 최상의 답변을 더 잘 선택하도록 돕고 질문의 신뢰성과 답변자의 평판을 높일 수 있습니다.
이 글에서는 PHP를 사용하여 질문 답변의 투표 및 채택 기능을 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다.
먼저, 질문과 답변 정보를 저장할 데이터베이스가 필요합니다. 데이터베이스에 두 개의 테이블이 있다고 가정합니다. 하나는 질문 정보를 저장하는 데 사용되는 질문이고 다른 하나는 답변 정보를 저장하는 데 사용되는 답변입니다. 질문 테이블의 구조는 다음과 같습니다.
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 );
답변 테이블의 구조는 다음과 같습니다.
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 );
다음으로, 질문 답변에 대한 투표 기능을 구현해야 합니다. 사용자는 질문 아래의 답변을 좋아하거나 싫어하여 답변에 대한 승인 또는 거부를 표현할 수 있습니다. 답변 테이블에 찬성 및 반대 투표라는 두 개의 새로운 필드를 추가하여 답변에 대한 좋아요 및 싫어요 수를 저장할 수 있습니다.
ALTER TABLE answers ADD COLUMN upvote INT(11) DEFAULT 0; ALTER TABLE answers ADD COLUMN downvote INT(11) DEFAULT 0;
질문 답변 목록에서 사용자가 버튼을 클릭하면 투표 유형(좋아요 또는 싫어요)과 답변 ID를 Ajax를 통해 서버로 보낼 수 있습니다. 요청한 다음 데이터베이스의 해당 답변에 대한 좋아요 또는 싫어요 수를 업데이트합니다. 다음은 간단한 코드 예입니다.
<!-- 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>
vote.php 파일에서 사용자가 보낸 투표 유형 및 답변 ID를 기반으로 데이터베이스의 해당 답변에 대한 좋아요 또는 싫어요 수를 업데이트할 수 있습니다. 간단한 코드 예시는 다음과 같습니다.
<?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"; } // 执行更新操作 // ... // 返回响应 // ... ?>
위는 질문 답변에 대한 투표 기능의 코드 예시입니다. 다음으로 질문 답변 수락 기능의 구현 방법을 소개하겠습니다.
질문 답변 채택 기능은 질문자가 질문에 대한 솔루션으로 가장 좋은 답변을 선택하고 채택으로 표시할 수 있음을 의미합니다. 답변 테이블에 새 필드 is_accepted를 추가하여 답변이 수락되었는지 여부를 나타낼 수 있습니다.
ALTER TABLE answers ADD COLUMN is_accepted TINYINT(1) DEFAULT 0;
질문 답변 목록에서 질문자가 버튼을 클릭하면 Ajax 요청을 통해 답변 ID를 서버로 전송한 후 해당 답변의 is_accepted 필드를 업데이트할 수 있습니다. 데이터베이스에서. 다음은 간단한 코드 예시입니다.
<!-- 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>
accept.php 파일에서 사용자가 보낸 답변 ID를 기반으로 데이터베이스에서 해당 답변의 is_accepted 필드를 업데이트할 수 있습니다. 다음은 간단한 코드 예시입니다.
<?php // accept.php // 获取答案ID $answerId = $_POST['answer_id']; // 更新答案的采纳状态 $sql = "UPDATE answers SET is_accepted = 1 WHERE id = $answerId"; // 执行更新操作 // ... // 返回响应 // ... ?>
위는 질문 답변 수락 기능의 코드 예시입니다. 이러한 코드 예제를 통해 지식 질문 및 답변 웹 사이트에서 질문 답변의 투표 및 채택 기능을 구현하여 사용자 경험과 정보 품질을 향상시킬 수 있습니다. 물론 위의 내용은 단순한 예시에 불과하며, 실제 적용 시에는 좀 더 자세한 내용과 보안이 고려되어야 할 것이다. 이 기사가 도움이 되기를 바랍니다!
위 내용은 PHP는 지식질문답변 웹사이트에서 질문답변의 투표 및 채택 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!