2 votes

besoin de conseils sur un système de points php

J'essaie de créer un système de points qui vérifie le nombre de points d'un utilisateur et lui attribue un titre spécifique.

J'ai préparé un tableau auquel le php script peut se référer pour vérifier quel titre doit être donné à un membre.

La structure de la table MYSQL est la suivante :
nom : ptb
structure : pts , titre

Par exemple, si vous avez 100 points, vous gagnez le titre de "Veteran", si vous avez 500 points, vous gagnez le titre de "Pro". disons que j'ai pts:100 , title:veteran y pts:500 , titre:pro rangées dans le table ptb.

Cependant, je suis tombé sur un déroutant fait.
Comment puis-je utiliser php pour déterminer le titre à donner à l'utilisateur en utilisant les données de la table ptb ?

Si un utilisateur a égale ou supérieure à 100 points permettent d'obtenir Ancien combattant pour le titre MAIS 500 est également PLUS QUE 100 ce qui signifie que le php script doit également s'assurer qu'il est inférieur à 500pts .

Je ne sais toujours pas comment utiliser php pour faire cela, car je suis moi-même confus. J'espère que quelqu'un pourra comprendre et me donner quelques directives.

MERCI !

3voto

PiTheNumber Points 8264

Vous sélectionnez tous les enregistrements ayant suffisamment de points, vous classez celui qui a le score le plus élevé en haut et vous éliminez le reste.

SELECT title FROM ptb WHERE pts <= $points ORDER BY pts DESC LIMIT 1

2voto

symcbean Points 27412

(La solution de PiTheNumber ne fonctionne pas très bien si vous voulez récupérer les titres pour plusieurs utilisateurs)

Étant donné que les points changent au fil du temps et que plusieurs utilisateurs peuvent avoir le même titre, il semble qu'il faille créer deux tableaux :

CREATE TABLE users (
  userid ...whatever type,
  points INTEGER NOT NULL DEFAULT 0
  PRIMARY KEY(userid)
);
CREATE TABLE titles (
  title VARCHAR(50),
  minpoints INTEGER NOT NULL DEFAULT 0
  PRIMARY KEY (title),
  UNIQUE INDEX (minpoints)
);

Puis....

SELECT u.userid, u.points, t.title
FROM users u, titles t
WHERE u.points>=t.minpoints
AND ....other criteria for filtering output....
AND NOT EXISTS (
   SELECT 1
   FROM titles t2
   WHERE t2.minpoints>=u.points
   AND t2.minpoints<=t.minpoints
); 

(il y a autres moyens pour écrire la requête)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X