Accueil > Forum > > > > Problème Mysql / while / do
Problème Mysql / while / do
jeudi 7 juin 2007 à 05:10:13 |
Problème Mysql / while / do

OmbreNoir
|
Bonjour, Je m'explique, j'aimerais pouvoir avoir la position d'une table sans while ou do. En faite ma commande se fait comme ceci:
[code] <?Php $db = mysql_connect('localhost', ''.$db_users.'', ''.$db_pass.''); mysql_select_db($db_name, $db); $var 'SELECT * FROM users ORDER BY note ASC'; $i = 0; do { $data = mysql_fetch_asssoc($var); if (!$data) { break; } if ($data['users'] != 'OmbreNoir') { $i++; } } while(true); echo $i; ?> [/code]
Voilà cette commande vous montre se que je veux faire.. je veux retourner la position exacte de la personne ici OmbreNoir par rapport au NOTE exemple de table: [id] [users ][NOTE] [01][OmbreNoir][6 ] [02][Allo ][5 ] [03][Boh ][7 ] -------------------------- Si ont fait le do en haut OmbreNoir va être à la position 2 ($i = 2) Mais si j'ai 10 000 tables, qui dois être rafraichit à chaque page de mon site parce que son classement est afficher sur mon site, je suis pas mal sur que sa va prendre beaucoup trop du cpu Alors j'ai pensé qu'il avait peut-être un autre moyen de sortir la position sans faire le do... Merci de bien vouloir m'aider..
|
|
jeudi 7 juin 2007 à 09:35:15 |
Re : Problème Mysql / while / do

neigedhiver
|
Salut,
Tu lis pas la doc de MySQL ? Y'a des trucs intéressants comme la clause WHERE qui te permet de limiter les résultats en fonction d'un critère...
Par exemple :
// Admettons que
$user_name = 'OmbreNoir';
$sql = 'SELECT * FROM users WHERE user_name=\'' . $user_name . '\';';
Enfin je comprensd pas bien bien ce que tu veux exactement, vu qu'en plus tu te mélanges dans le vocabulaire.
Si tu as 10 000 tables dans ta base de données, faut peut-être penser à utiliser un serveur rien que pour ça, voire même des clusters, et Oracle serait plus adapté que MySQL.
Je pense que tu parlais plutôt d'enregistrements. La table, dans l'exemple que tu donnes, c'est 'users', les enregistrements, les membres. 10000 membres, oui, c'est mieux.
|
|
jeudi 7 juin 2007 à 12:08:45 |
Re : Problème Mysql / while / do

J_G
|
Salut,
Je crois qu'il ne veut former un tableau de score ordonné de ces utilisateurs (ça sens le jeu en ligne), mais n'afficher que la parti pertinente pour l'utilisateur actuellement connecté...
C'est à dire les trois directement meilleurs et les trois directement moins bons... Ainsi l'utilisateur suit ça progression dans le classement au fur et mesure des rechargements.
Si c'est ça... honnêtement, fais le en PHP. Ca ne va pas te coûter tant de temps que ça, surtout si tu n'as pas 10000 utilisateurs...
|
|
jeudi 7 juin 2007 à 15:59:44 |
Re : Problème Mysql / while / do

OmbreNoir
|
Ok je vais tenter de m'expliquer mieu désolé. Sur mon site, sur chacune des pages la personne vois ses informations dans un rectangle à gauche: ____________________ Inforamtion de OmbreNoir Note: 4/10 Position: 2304/15000 Membre depuis: 15 jours. ---------------------------
La position de OmbreNoir ici, si je fais ma commande que je vous ai montré plus haut sa va lui donner la bonne position. Mais (J_G) je mets une variables à 10 000 membres pour être sûr que si un jour le site arrive à 10 000 membres que le site étais préparer pour sa, personnelement sa serais possible que sa arrive. Mais bon donc si je fais faire une requête SQL à toute les pages, pour tout le monde sur une boucle de 10 000 fois (tout dépend de sa position) mais si il est 9 987 sa va faire la boucle 9 987 fois ... pour chaque personne du site (Si il a 1000 personnes de connecter en même temp, la boucle va se faire +/- 10 000 fois sur 1000 membres... je risque de faire tout sauté )
J'avais pensé qu'il existait peut-être un moyen de retourner la position de la personne avec une commande direct exemple... mysql_num_rows($sql); sa retourne la position (Je donne sa comme exemple je sais que sa pas rapport mais bon) Si non comment pourrais-je faire?
|
|
jeudi 7 juin 2007 à 16:34:43 |
Re : Problème Mysql / while / do

J_G
|
Réponse acceptée !
Ah, ok...
Si tu ne veux que trouver le classement... c'est très simple en fait :
select u.*, ( (select count(t.id) from utilisateurs as t where t.note > u.note ) + 1 ) as position from utilisateurs as u where u.nom='OmbreNoire'
Mieux ?
|
|
jeudi 7 juin 2007 à 17:17:09 |
Re : Problème Mysql / while / do

OmbreNoir
|
Hmm ok .. je comprends pas tout à fait la commande.. peux-tu me l'expliquer svp pour que je puisse m'en servir je dois la comprendre et savoir comment m'en servir :)
Merci à toi
|
|
jeudi 7 juin 2007 à 17:55:27 |
Re : Problème Mysql / while / do

J_G
|
Réponse acceptée !
Bien sur...
Donc, c'est une requête avec une sous requête.
La requête principale P(N) : select * -- récupérer les champ from utilisateur -- de l'utilisateur where nom=N -- s'appelant N
Prenons la sous requête S(N) : select count(id) -- compter le nombre from utilisateur -- des utilisateurs where note > x -- ayant un note supérieure à X
Donc de (P), tu récupères aussi la note de ton utilisateur nommé N, d'accord ?
Imaginons que tu utilises cette note comme variable X de (S)... Alors, tu vas avoir le nombre d'utilisateurs ayant une meilleure note que N. appelons ce nombre 'nb'.
Donc de nb, tu déduis facilement la position 'p' dans le classement de ton utilisateur N. Si nb=0, alors personne est meilleur, il est premier. si nb = 2, il est troisième... bref, p = nb +1 !
Donc, pour récupérer le p de N en même temps que ces autres champs, on modifie un peu (P) : select *, nb+1 as p from utilisateur where nom=N
Tu suis ? Appelons cette nouvelle requête P1(N,nb).
Donc P1(N) contient une variable nb. Cette variable est donnée par la requête (S), je fais brutalement du remplacement de variable : select *, S(X) + 1 as p from utilisateur where nom=N
ok ? là c'est P2(N,X)... qui retourne l'utilisateur avec sa position...
Alors que vaut X ? ben, c'est la note de l'utilisateur qu'on est en train de séléctionner... Ainsi : select *, S(note) + 1 as p
from utilisateur
where nom=N
Là j'ai Pp(N), où, par le simple paramètre N, la fonction (requête) me retourne l'utilisateur et sa position.
Bon, par la suite... il faut aider un petit MySQL est donner des noms aux deux tables utilisateurs afin que la mécanique sache comment faire (dans "note > note"... C'est la note de qui ?)
donc je nomme la table de (P) 'u' et celle de (S) 't' ... complètement arbitraire... ainsi : "t.note > u.note" devient compréhensible. Non ?
|
|
jeudi 7 juin 2007 à 17:57:22 |
Re : Problème Mysql / while / do

J_G
|
avec qques confusion de nommage... (P), P1(N)... c'est ça ;)
|
|
jeudi 7 juin 2007 à 22:10:45 |
Re : Problème Mysql / while / do

OmbreNoir
|
Ok je comprends sa semble être bon mais Comment je retourne.. $sql = 'select u.*, ( (select count(t.id) from utilisateurs as t where t.note > u.note ) + 1 ) as position from utilisateurs as u where u.nom='OmbreNoir''; echo $sql;
?
Merci énormément pour l'expliquation si clair sa m'aide vraiment!
|
|
jeudi 7 juin 2007 à 22:25:54 |
Re : Problème Mysql / while / do

J_G
|
Je suis très surpris par ta question....
Tu faisais comment là ?
$db = mysql_connect('localhost', ''.$db_users.'', ''.$db_pass.''); mysql_select_db($db_name, $db); $var 'SELECT * FROM users ORDER BY note ASC'; $i = 0; do { $data = mysql_fetch_asssoc($var);
...
En plus, c'est complètement faux ton script, j'avais pas vu. Va faire un tour sur www.php.net fonction mysql_query et regarde les exemples d'utilisation.
A+
|
|
Cette discussion est classée dans : mysql, db, do, while, position
Répondre à ce message
Sujets en rapport avec ce message
While inverse [ par Tilix ]
Bonjour,Je voudrais savoir comment faut-il faire pour inversé l'arrivé des données dans une table mysqlSource personnel :$db = mysql_connect('host', '
Problème d'utilisation d'une classe MySQL du site [ par tataye ]
Bonjour,Je suis en train de faire des tests avec la classe SQL de FhX (source N°33135) et je rencontre actuellement quelques difficultés.J'ai fait un
Scripts de connexion et script de gestion des utilisateur [ par moussa_abdou ]
Bonjour à tous, J'ai écrit deux scripts qui ne marchent pas bien : 1- un script d'administration des users ( création dans une table utilisateur avec
Parsing de données SQL qui marchait mais qui marche plus...à l'Aide ! [ par la_ptite_85 ]
Rhâ !Ca marchait très bien il a fallu que j'y mette mes deux mains gauches dedans...Voilà mon code : $host = "sql.free
Array & MySQl [ par boulika ]
BonjourJe dois faire une petit programme avec des données de mysql :je dois récupérer des infos d'une base de données mais de deux tables :$db = mysql
Authentification ie et firefox [ par mounelelabrador ]
Bonjour, Je dois créer un site avec gestion membres, admins et vu que c'est pour un cours je ne peux pas vraiment télécharger sur internet des script
Correction de code simple pour debutant [ par michmichman ]
Bonjour j'ai fais un petit code pour verifier si un utilisateur est enregistré dans ma db mais bien sur il marche pasje vous le montre je suis sur que
redirection et session [ par sparh ]
Bonjour,je bloque sur un problème de session.J'essai de créer une zone membre à l'aide des sessions. Pour l'instant tout va bien et j'ai donc un lien
Problème d'affichage [ par refkaben ]
Bonjour!J'ai un probleme au niveau de l'affichage du resultat d'une requete,je veux afficher le resultat d'une requete sur deux colonnes:j'ai une tabl
position dans une table mysql [ par slyderkiller ]
slt a ttvoila mon probleme j'aimeré récuperé l'emplacementde mes données dans la table sql dans une page en php ma
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|