ホームページ  >  記事  >  バックエンド開発  >  PHPはナレッジQ&Aサイトにおける質問回答収集・共有機能を実装しています。

PHPはナレッジQ&Aサイトにおける質問回答収集・共有機能を実装しています。

王林
王林オリジナル
2023-07-01 19:01:131270ブラウズ

PHP は知識 Q&A サイトにおける質問回答の収集と共有機能を実現します

1. 背景
インターネットの急速な発展に伴い、知識 Q&A サイトは徐々に一般的なものになってきました。人々が知識を獲得し、経験を交換するための重要なプラットフォーム。このようなサイトでは、ユーザーが自分の質問を投稿し、他のユーザーがそれらの質問に回答することができます。より良いユーザーエクスペリエンスを提供するために、この記事では、ナレッジQ&A Webサイトに質問回答の収集と共有機能をPHPを使用して実装する方法を紹介します。

2. 質問回答収集機能の実装
ナレッジ質問回答サイトでは、ユーザーが興味のある質問や回答に対する回答を収集し、後で閲覧することができます。以下は、質問回答収集機能を実装するコード例です。

  1. まず、ユーザーの収集情報を保存するデータベース テーブルを作成する必要があります。次のフィールドを含む「bookmarks」という名前のテーブルを作成できます。

    CREATE TABLE bookmarks (
     id INT AUTO_INCREMENT PRIMARY KEY,
     user_id INT,
     answer_id INT,
     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
  2. ユーザーがログインした後、PHP セッション メカニズムを通じてユーザーの ID を取得し、そのユーザー ID を結合します。と質問の回答 「ブックマーク」テーブルに ID を挿入します:

    // 获取当前用户的 ID
    $userId = $_SESSION['user_id'];
    
    // 获取问题答案的 ID
    $answerId = $_GET['answer_id'];
    
    // 插入数据到数据库表中
    $query = "INSERT INTO bookmarks (user_id, answer_id) VALUES ($userId, $answerId)";
    $result = mysqli_query($connection, $query);
  3. ユーザーがお気に入りの質問の回答を表示する必要がある場合、ユーザーの ID に基づいてデータベース テーブルをクエリできます。 :

    // 获取当前用户的 ID
    $userId = $_SESSION['user_id'];
    
    // 查询数据库表,获取用户收藏的问题答案
    $query = "SELECT * FROM bookmarks WHERE user_id = $userId";
    $result = mysqli_query($connection, $query);
    
    // 循环显示问题答案
    while ($row = mysqli_fetch_assoc($result)) {
     $answerId = $row['answer_id'];
    
     // 根据答案的 ID 查询相关的问题答案信息,并显示在页面上
     $query = "SELECT * FROM answers WHERE id = $answerId";
     $answerResult = mysqli_query($connection, $query);
    
     // 显示问题答案信息
     $answerRow = mysqli_fetch_assoc($answerResult);
     echo $answerRow['content'];
    }

3. 質問回答共有機能の実装
質問の回答を収集するだけでなく、質問に対する回答を共有することもできます。彼らは他のユーザーにとって価値があると考えています。以下は、質問と回答の共有機能を実装するコード例です。

  1. 質問と回答のページに、「共有」ボタンを追加し、ボタンがクリックされると、 JavaScript 関数がトリガーされ、AJAX リクエストを通じて渡され、質問の回答の ID がサーバー側に送信されます。

    <button onclick="shareAnswer(<?php echo $answerId ?>)">分享</button>
    
    <script>
    function shareAnswer(answerId) {
     // 发送 AJAX 请求
     var xhr = new XMLHttpRequest();
     xhr.open('POST', 'share.php');
     xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
     xhr.onload = function() {
         if (xhr.status === 200) {
             alert('问题答案分享成功!');
         } else {
             alert('问题答案分享失败!');
         }
     };
     xhr.send('answer_id=' + answerId);
    }
    </script>
  2. サーバー側では、PHP を通じて質問の回答の ID を取得します。それを「shares」という名前のデータベース テーブルに挿入します。 中:

    // 获取问题答案的 ID
    $answerId = $_POST['answer_id'];
    
    // 插入数据到数据库表中
    $query = "INSERT INTO shares (answer_id) VALUES ($answerId)";
    $result = mysqli_query($connection, $query);
    if ($result) {
     echo 'success';
    } else {
     echo 'failure';
    }
  3. 他のユーザーが質問に対する回答を表示すると、質問に対する回答が表示された回数を表示できます。共有:

    // 获取问题答案的 ID
    $answerId = $_GET['answer_id'];
    
    // 查询数据库表,获取问题答案的分享次数
    $query = "SELECT COUNT(*) AS shares_count FROM shares WHERE answer_id = $answerId";
    $result = mysqli_query($connection, $query);
    $row = mysqli_fetch_assoc($result);
    
    // 显示问题答案的分享次数
    echo $row['shares_count'] . "次分享";

4. まとめ
上記のコード例を通じて、ナレッジ Q&A Web サイトに質問と回答の収集および共有機能を実装できます。コレクション機能により、ユーザーは興味のある質問に対する回答を後で閲覧できるように保存することができ、共有機能により、ユーザーは貴重な質問や回答を他のユーザーに渡すことができます。これらの機能の実装は、知識の質問と回答の Web サイトのユーザー エクスペリエンスを向上させるために非常に重要であり、ユーザー間のコミュニケーションと共有も促進します。この記事が開発者にとって役立つことを願っています。

以上がPHPはナレッジQ&Aサイトにおける質問回答収集・共有機能を実装しています。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。