PHP/SQL - Classement numéroté avec table users pour jeu
24 messages
• Page 1 sur 2 • 1, 2
- ZelkiN
- WRInaute impliqué

- Messages: 500
- Inscription: 27 Juil 2007
PHP/SQL - Classement numéroté avec table users pour jeu
Bonjour, je fais apel aux connaisseurs du php car j'ai un pti souci qui m'ennui.
En effet je suis en plein develloppement d'un gros site (elevage virtuel) mais j'ai un souci, c'est le classement.
Voila j'ai une table "users" dans laquelle sont stocké bien évidemment toutes les infos du client mais aussi sont nombre de points qu'il gagne en faisant diverse truc sur le site. Le champs "exp_eleveur" est en INT et donc peut aller de 0 à 9999...+ .
Concernant le classement je n'ai aucun probleme pour afficher les noms des 30 premiers... une simple récupération d'information et une répétition limitée a 30. parcontre je séche au niveau de la numérotation.
Quant le client entre dans son espace perso, il voit "classement général : xxx eme" , enfaite c'est ce "xxx" que je n'arrive pas à mettre en oeuvre . quelqu'un aurait t-il une idée ? merci à vous
En effet je suis en plein develloppement d'un gros site (elevage virtuel) mais j'ai un souci, c'est le classement.
Voila j'ai une table "users" dans laquelle sont stocké bien évidemment toutes les infos du client mais aussi sont nombre de points qu'il gagne en faisant diverse truc sur le site. Le champs "exp_eleveur" est en INT et donc peut aller de 0 à 9999...+ .
Concernant le classement je n'ai aucun probleme pour afficher les noms des 30 premiers... une simple récupération d'information et une répétition limitée a 30. parcontre je séche au niveau de la numérotation.
Quant le client entre dans son espace perso, il voit "classement général : xxx eme" , enfaite c'est ce "xxx" que je n'arrive pas à mettre en oeuvre . quelqu'un aurait t-il une idée ? merci à vous
- bigjet
- WRInaute discret

- Messages: 211
- Inscription: 21 Nov 2004
À la fin de chaque journée, tu parcoures toute ta table en triant par le nombres de points.
Ensuite, tu mets à jour le champ position de chaque joueur, en créant préalablement une variable compteur qui sera incrémentée à chaque fois que tu lis une ligne.
Ensuite, tu mets à jour le champ position de chaque joueur, en créant préalablement une variable compteur qui sera incrémentée à chaque fois que tu lis une ligne.
- bigjet
- WRInaute discret

- Messages: 211
- Inscription: 21 Nov 2004
ok, donc pour commencer, rajoute un champ classement dans ta table users.
Ensuite pour récupérer le classement d'un joueur, tu auras seulement à faire
SELECT classement FROM users WHERE pseudo='ZelkiN'
- Code: Tout sélectionner
$rs = mysql_query("SELECT * FROM users ORDER BY nbpoints DESC);
$compteur = 1;
while($data=mysql_fetch_assoc($rs)
{
$pseudo = $data['pseudo']; //si tu as un champ id, prend lui
mysql_query("UPDATE users SET classement='$compteur' WHERE pseudo='$pseudo'")
$compteur ++;
}
Ensuite pour récupérer le classement d'un joueur, tu auras seulement à faire
SELECT classement FROM users WHERE pseudo='ZelkiN'
- ZelkiN
- WRInaute impliqué

- Messages: 500
- Inscription: 27 Juil 2007
ok c'est super cool de ta part, oui c'est vrai j'avais pas penser a ce genre d'incrémentation ^^, malgré qu'a mon avis ce soit un peu lourd avec plus de 100000 membres ... je verrai lol, je vais tester ca mais d'apres ton code tout doit marché nikel crome, thanks a toi 
- ZelkiN
- WRInaute impliqué

- Messages: 500
- Inscription: 27 Juil 2007
re bonjour, voila j'ai testé mais pti souci
le code :
apres avoir mis des parentheses oubliées
j'ai encore une erreur, mais je ne sais pas trop comment la résoudre, ca vient de compteur = 1;
while($data=mysql_fetch_assoc($rs);)
Parse error: parse error in c:\program files\easyphp1-8\www\...\classement.php on line 6
quelqu'un pourrait m'aidé ? ty
le code :
- Code: Tout sélectionner
$rs = mysql_query("SELECT * FROM users ORDER BY exp_eleveur DESC");
$compteur = 1;
while($data=mysql_fetch_assoc($rs);)
{
$id = $data['id']; //si tu as un champ id, prend lui
mysql_query("UPDATE users SET position='$compteur' WHERE id='$id'")
$compteur ++;
}
apres avoir mis des parentheses oubliées
while($data=mysql_fetch_assoc($rs);)
Parse error: parse error in c:\program files\easyphp1-8\www\...\classement.php on line 6
quelqu'un pourrait m'aidé ? ty
- ZelkiN
- WRInaute impliqué

- Messages: 500
- Inscription: 27 Juil 2007
lol, voila j'ai trouvé, enfaite il y en avais un de trop, jamais de point virgules dans un while lol...
mais la encore un souci, ca ne me reconnais pas $id ...
NOTION : Undefined index: id
- Code: Tout sélectionner
{
$id = $data['id']; //si tu as un champ id, prend lui
mysql_query("UPDATE users SET position='$compteur' WHERE id='$id'");
$compteur ++;
}
mais la encore un souci, ca ne me reconnais pas $id ...
NOTION : Undefined index: id
-

Suede - WRInaute accro

- Messages: 3722
- Inscription: 4 Oct 2002
rog a écrit:un count sur du numerique devrait etre instantané même sur 1000 000 de membres
rog
Si tu comptes le nombre de résultat que retourne une requete
select champs where nombre_de_point < nombre de point du joueur, tu as le nombre de personne classé avant lui.
Son classement est donc +1.
François
- ZelkiN
- WRInaute impliqué

- Messages: 500
- Inscription: 27 Juil 2007
j'y comprend rien, voila j'ai mis tout ce qu'il fallait, aucune erreur n'a lieu, ca a l'air de marché sauf que ... comme le dis "Suede" ca à l'air de m'updater +1...
enfaite j'ai 2 joueurs pour le moment (test), quand je lance le truc, ca me met que classement joueur 1 = 0 et que classement joueur 2 = 1, alors que joueur 1 est mieux classé que joueur 2... pti souci lol
enfaite j'ai 2 joueurs pour le moment (test), quand je lance le truc, ca me met que classement joueur 1 = 0 et que classement joueur 2 = 1, alors que joueur 1 est mieux classé que joueur 2... pti souci lol
- Robinson
- WRInaute passionné

- Messages: 2233
- Inscription: 25 Oct 2005
Perso, je n'affiche jamais le classement pour chacun (bon c'est vrai que pour moi, c'est pas primordial).
Mais éxécuter 100 000 fois (ou plus) une requête update en un seul script, ça me fait un peu peur...
La montée en charge ne doit pas être minime.
(je pourrai essayer mais j'ai la flemme lol)
Mais éxécuter 100 000 fois (ou plus) une requête update en un seul script, ça me fait un peu peur...
La montée en charge ne doit pas être minime.
(je pourrai essayer mais j'ai la flemme lol)
- bigjet
- WRInaute discret

- Messages: 211
- Inscription: 21 Nov 2004
Robinson a écrit:Perso, je n'affiche jamais le classement pour chacun (bon c'est vrai que pour moi, c'est pas primordial).
Mais éxécuter 100 000 fois (ou plus) une requête update en un seul script, ça me fait un peu peur...
La montée en charge ne doit pas être minime.
(je pourrai essayer mais j'ai la flemme lol)
Quand on a 100 000 membres, je pense qu'on a les infrastructures techniques pour faire face à ce genre de montée en charge
24 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Double table SQL et PHP
- instruction php dnas une table sql
- [sql] Tri d'une table selon un champ dans une autre table
- PHP MySql copy table à table [RESOLU]
- Dédoublonne une table SQL
- PB avec une table sql
- SQL Requete multi table
- Conseil création table BDD sql
- Recherche table SQL villes de France
- SQL n'affiche pas le premier enregistrement de ma table !
Consultez la description détaillée des produits ou services de Google suivants : Google Image Labeler, Google Whack
- Logiciel de référencement AgentWebRanking
AgentWebRanking est un logiciel professionnel qui permet d'analyser le positionnement d'un ou plusieurs sites dans plus de 300 moteurs de recherche dans le monde. Vous pouvez ainsi analyser les performances du référencement pour de nombreux mots-clés.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

