Maison > développement back-end > tutoriel php > Utilisez PHP pour développer des fonctions de classement des points des utilisateurs et de classement dans le site Web de questions et réponses de connaissances.

Utilisez PHP pour développer des fonctions de classement des points des utilisateurs et de classement dans le site Web de questions et réponses de connaissances.

WBOY
Libérer: 2023-07-01 20:26:01
original
1466 Les gens l'ont consulté

Utilisez PHP pour développer des fonctions de classement des points utilisateur et de classement dans le site Web de questions et réponses de connaissances

Avec le développement d'Internet, le site Web de questions et réponses de connaissances est devenu l'un des moyens importants permettant aux gens d'acquérir des connaissances et de résoudre des problèmes. Dans ce type de site Web, le classement des points des utilisateurs et les fonctions de classement sont très importants. Ils peuvent encourager les utilisateurs à participer activement aux activités de questions-réponses et à augmenter l'activité du site Web. Dans cet article, nous utiliserons PHP pour développer les fonctions de classement des points utilisateur et de classement dans le site Web de questions et réponses de connaissances, et fournirons des exemples de code correspondants.

Le classement des points utilisateur est basé sur les points obtenus par les utilisateurs lors des activités de questions-réponses. Les utilisateurs avec des points plus élevés sont mieux classés. La fonction de classement peut afficher le classement par points de l'utilisateur afin que les utilisateurs puissent comprendre leur statut sur le site Web.

1. Conception de la base de données

Tout d'abord, nous devons concevoir la table des utilisateurs et la table des points dans la base de données. La table utilisateur stocke les informations de base de l'utilisateur et la table de points stocke les enregistrements de points obtenus par l'utilisateur dans les activités de questions et réponses.

La structure du tableau des utilisateurs est la suivante :

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Copier après la connexion

La structure du tableau des points est la suivante :

CREATE TABLE `scores` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) unsigned NOT NULL,
  `score` int(11) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `scores_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Copier après la connexion

2. Calcul des points et mise à jour du classement

Une fois que l'utilisateur a gagné des points dans l'activité Q&A, nous devons calculer les points et mettre à jour le classement de l'utilisateur.

Tout d'abord, nous pouvons créer une fonction pour calculer les points de l'utilisateur. Voici un exemple de fonction :

function calculateScore($user_id, $score)
{
    // 将用户积分插入积分表
    $insertQuery = "INSERT INTO scores (user_id, score) VALUES ($user_id, $score)";
    // 执行插入操作...

    // 查询用户总积分
    $query = "SELECT SUM(score) as total_score FROM scores WHERE user_id = $user_id";
    // 执行查询操作...

    // 更新用户总积分和排名
    $updateQuery = "UPDATE users SET total_score = $total_score WHERE id = $user_id";
    // 执行更新操作...

    // 更新用户排名
    $updateRankQuery = "SET @rank := 0;";
    $updateRankQuery .= "
        UPDATE users SET rank = (@rank := @rank + 1) ORDER BY total_score DESC;
    ";
    // 执行更新操作...
}
Copier après la connexion

Dans le code ci-dessus, nous insérons d'abord les points de l'utilisateur dans le tableau des points. Nous interrogeons ensuite le total de points de l'utilisateur et mettons à jour le total de points et le classement de l'utilisateur. Enfin, nous utilisons la variable @rank pour marquer le classement de l'utilisateur puis mettre à jour le classement de tous les utilisateurs.

3. Affichage du classement

Pour afficher le classement de l'utilisateur, nous pouvons écrire une fonction pour interroger la liste de classement des utilisateurs. Voici un exemple de fonction :

function getRankings()
{
    $query = "SELECT name, total_score, rank FROM users ORDER BY rank";
    // 执行查询操作...
    // 输出排行列表...
}
Copier après la connexion

Dans le code ci-dessus, nous interrogeons la table des utilisateurs et renvoyons le nom de l'utilisateur, le total des points et son classement par ordre de classement.

4. Exemple d'appel

Ce qui suit est un exemple d'utilisation de la fonction ci-dessus pour obtenir des fonctions de classement des points utilisateur et de classement :

// 用户获得积分后调用计算和更新积分函数
calculateScore($user_id, $score);

// 显示用户的排行
getRankings();
Copier après la connexion

En appelant l'exemple de fonction, nous pouvons calculer les points de l'utilisateur, mettre à jour le classement de l'utilisateur et afficher la liste de classement de l'utilisateur.

Résumé :

Cet article présente comment utiliser PHP pour développer des fonctions de classement par points utilisateur et de classement dans un site Web de questions et réponses de connaissances. Tout d’abord, nous avons conçu la structure de la base de données de la table des utilisateurs et de la table des points. Ensuite, nous avons écrit les fonctions correspondantes pour calculer les points, mettre à jour les classements et afficher la liste de classement. En appelant ces fonctions, nous pouvons implémenter des fonctions de classement et de classement des points utilisateur. J'espère que cet article vous sera utile lors du développement d'un système de points sur un site Web similaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal