Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1633 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  creer un classement php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

creer un classement php

n°1849533
tszlachter
Posté le 10-02-2009 à 17:35:33  profilanswer
 

Bonjour, je viens de créer un site mais je suis pas très doué en php.
Je voudrais créer 2 classements par ordre décroissant de mes membres:
le 1er, par ordre des meilleurs cliqueurs de liens
Le second, par ordre de meilleurs parrains
Les 10 premiers seraient affichés et la 11eme ligne représente mon classement
 
Sur les 2 classements, nous devons voir ceci (voir ci-dessous). 1 classement comptabilise les clics,
l'autre les filleuls (sur 2 pages différentes)
 
 
            Best clic - Best referrer
 
Nr    ----     User       ----      Clics      ----      Referrals
1    ----   Pseudo1    ----      400         ----       30
2    ----   Pseudo2    ----      390        ----       120
3    ----   Pseudo3      ----    380        ----      1900
4    ----   Pseudo4      ----    370        ----        12
5    ----   Pseudo5      ----    360        ----         1
6    ----   Pseudo6     ----     300         ----       39
7    ----   Pseudo7     ----     250         ----       79
8    ----   Pseudo8     ----     200         ----     18096
9    ----   Pseudo9     ----     150        ----        31
10   ----  Pseudo10     ----     50         ----        4
X   ----   Moi         ----          4          ----        0
 
 
            Best clic - Best referrer
 
Nr     ----    User     ----        Clics      ----      Referrals
1  ----     Pseudo1      ----     21          ----     1200
2   ----    Pseudo2      ----     90          ----     1000
3   ----    Pseudo3      ----    128        ----       900
4   ----    Pseudo4      ----     80         ----       800
5    ----   Pseudo5      ----    243         ----      700
6    ----   Pseudo6     ----      4           ----      500
7    ----   Pseudo7    ----      19        ----        300
8    ----   Pseudo8     ----    123        ----       200
9    ----   Pseudo9     ----    321        ----       100
10   ----  Pseudo10    ----   1230       ----        15
X    ----  Moi         ----         8         ----        10
 
 
Je suis allé dans mon phpmyadmin et il m'a donné ces codes:
pour le classement "visits"
 
$sql = 'SELECT DISTINCT `username`, `visits`, `referals` FROM `tb_users` ORDER BY `visits` DESC LIMIT 0, 10 ';  
 
pour le classement "referrals"
 
$sql = 'SELECT DISTINCT `username`, `visits`, `referals` FROM `tb_users` ORDER BY `referals` DESC LIMIT 0, 10 ';
 
Mais je ne sais pas comment mettre ceci sur une page pour obtenir mon classement.  
Est-ce possible de me dire exactement ce que je dois mettre dans ma page pour obtenir ces 2 classements ?  
 
Merci bcp


Message édité par tszlachter le 10-02-2009 à 17:37:24
mood
Publicité
Posté le 10-02-2009 à 17:35:33  profilanswer
 

n°1849537
Profil sup​primé
Posté le 10-02-2009 à 17:44:40  answer
 

où en es-tu pour l'instant ? Montre nous un peu de code stp.

n°1849543
tszlachter
Posté le 10-02-2009 à 17:59:41  profilanswer
 

Ben en gros j'en suis nul part
 
Voila ma table : tb_users
et voila les champ qui m'intéresse dans cette table : username , visits , referals
 
et en visitant d'autre forum j'ai fait ceci:
 
$sql = 'SELECT DISTINCT `username`, `visits`, `referals` FROM `tb_users` ORDER BY `visits` DESC LIMIT 0, 10 ';  
 
$sql = 'SELECT DISTINCT `username`, `visits`, `referals` FROM `tb_users` ORDER BY `referals` DESC LIMIT 0, 10 ';  
 
Mais je ne sais pas comment faire mon tableau et y insérer les données
Je ne sais pas non plus ajouter la 11eme ligne avec les infos du membre.


Message édité par tszlachter le 10-02-2009 à 18:00:49
n°1849545
Profil sup​primé
Posté le 10-02-2009 à 18:02:09  answer
 

en fait si tu n'y connais rien il ne faut pas demander qu'on fasse le boulot à ta place sur ce forum mais il faut que tu apprennes à l'aide de tutos ou de livres. Ensuite, si tu rencontres des difficultés tu pourras éventuellement demander de l'aide sur ce forum.

n°1849549
tszlachter
Posté le 10-02-2009 à 18:12:11  profilanswer
 

bah dsl ... je pensais que c'était un code simple pour les connaisseurs.
Maintenant si tu appelles ca un "boulot" ca doit etre des lignes et des lignes de codages qui doivent prendre au moins 2-3h à faire.. Dans ce cas je suis d'accord pour appeler ca un boulot
 
Il y a peut etre d'autres personnes plus sympa qui voudront m'aider.
Pour moi, juste demander un classement, c'est pas faire le site à ma place :) (on peut très bien savoir mettre ses chaussures mais pas savoir les lasser).
 
Bon ben, si d'autres personnes veulent m'aider ?

n°1849553
Profil sup​primé
Posté le 10-02-2009 à 18:20:39  answer
 

bah non parce que trier, afficher, insérer, bah çà demande des formulaires, des vérifications, plein de choses autours du code mysql.
Donc on ne fait pas à la place des gens s'ils ne s'y connaissent pas du tout, surtout s'ils se disent "j'ai la flemme d'apprendre ou d'installer un cms/blog/etc, je préfère faire faire çà à des gens sur un forum". Ici c'est un forum de programmation, on est pas là pour faire des scripts sur mesure. N'y voit pas la de la méchanceté.
 
Pour finir, quand tu dis c'est un code simple pour les connaisseurs... Je dirais en PHP c'est le contraire : le débutant ne pense pas aux contraintes de son programme, aux problèmes de sécurité, de compatibilité, etc..., alors que le connaisseur fait attention à tout cela.
:jap:

n°1849614
tszlachter
Posté le 10-02-2009 à 23:15:56  profilanswer
 

Bon voila un codage que quelqu'un m'a proposé mais il y a encore 2 erreurs (en rouge)
 
voici le code
 

Code :
  1. <?php
  2. // on se connecte à MySQL (à remplir)  
  3. $db = mysql_connect('localhost', 'login', 'password');
  4. // on sélectionne la base (à remplir)  
  5. mysql_select_db('tb_users',$db); 
  6. // Tableau des meilleurs posteurs  
  7. $recup_posteurs =mysql_query( 'SELECT DISTINCT `username`, `visits`, `referals` FROM `tb_users` ORDER BY `visits` DESC LIMIT 0, 10 '); 
  8. $compteur = 1;
  9. while($best_posteurs = mysql_fetch_array($recup_posteurs)){
  10.      // Mise en forme des données à revoir  
  11.      echo $compteur."<br/>";     
  12.      echo $best_posteurs ["username"]."<br/>";
  13.      echo $best_posteurs ["visits"]."<br/>";
  14.      echo $best_posteurs ["referals"]."<br/>";
  15.      $compteur++;
  16. }
  17. // Tableau des meilleurs parrains  
  18. $recup_parrains =mysql_query( 'SELECT DISTINCT `username`, `visits`, `referals` FROM `tb_users` ORDER BY `referals` DESC LIMIT 0, 10 '); 
  19. $compteur = 1;
  20. while($best_parrains = mysql_fetch_array($recup_posteurs)){
  21.      // Mise en forme des données à revoir  
  22.      echo $compteur."<br/>";     
  23.      echo $best_parrains["username"]."<br/>";
  24.      echo $best_parrains["visits"]."<br/>";
  25.      echo $best_parrains["referals"]."<br/>";
  26.      $compteur++;
  27. }
  28. ?>


 
Merci pour votre aide.

Message cité 1 fois
Message édité par tszlachter le 10-02-2009 à 23:26:06
n°1849687
aspirateur
Posté le 11-02-2009 à 09:56:18  profilanswer
 

C'est pas plutot dans les requêtes qu'il y a des erreurs?
 
'SELECT DISTINCT `username`, `visits`, `referals` FROM `tb_users` ORDER BY `visits` DESC LIMIT 0, 10 '
 
Essaye plutot
"SELECT DISTINCT `username`, `visits`, `referals` FROM `tb_users` ORDER BY `visits` DESC LIMIT 0, 10 "

n°1849689
Profil sup​primé
Posté le 11-02-2009 à 09:59:04  answer
 

les délimiteurs de chaînes PHP n'ont rien à voir avec la requête, le problème vient sûrement du fait qu'il n'a pas adapté le code à sa base de données.

n°1849701
tszlachter
Posté le 11-02-2009 à 10:42:35  profilanswer
 

j'ai essayé le conseil de aspirateur mais rien n'y change.
 
J'ai adapté le code à ma base (localhost login et password ont bien évidemment été changé,ainsi que ma table...).
 
Il y a tjrs le problème sur les 2 même lignes
 
Les requêtes je les avaient créées avec phpmyadmin donc il ne peut pas y avoir d'erreur à ce niveau.

mood
Publicité
Posté le 11-02-2009 à 10:42:35  profilanswer
 

n°1849705
aspirateur
Posté le 11-02-2009 à 10:51:48  profilanswer
 

Tu dis que ca marche pas, peux on avoir le message d'erreur?

n°1849716
tszlachter
Posté le 11-02-2009 à 11:09:49  profilanswer
 

Oui biensur
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homez.38/showbux/test/classement.php on line 33
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homez.38/showbux/test/classement.php on line 46

n°1849727
Profil sup​primé
Posté le 11-02-2009 à 11:17:15  answer
 

ok, on s'en doutais un peu en fait :D
ce qui nous intéresse c'est le message d'erreur retourné par mysql. (echo mysql_error(); après la requête).

n°1849734
tszlachter
Posté le 11-02-2009 à 11:24:42  profilanswer
 

Heu, je trouve ou ce message d'erreur ?  
 
Voila ma page (en test):
http://test.showbux.net/classement.php

n°1849773
macgawel
Posté le 11-02-2009 à 11:51:02  profilanswer
 

tszlachter a écrit :

Bon voila un codage que quelqu'un m'a proposé mais il y a encore 2 erreurs (en rouge)


 

tszlachter a écrit :

Heu, je trouve ou ce message d'erreur ?


 :heink:  
Comment sais-tu qu'il y a deux erreurs ?

n°1849776
Profil sup​primé
Posté le 11-02-2009 à 11:53:06  answer
 

tszlachter a écrit :

Heu, je trouve ou ce message d'erreur ?  
 
Voila ma page (en test):
http://test.showbux.net/classement.php


non mais tu lis mes messages  [:massys]  
Je viens te de le dire !
echo mysql_error(); arpès l'appel de mysql_query !  :o

n°1849800
tszlachter
Posté le 11-02-2009 à 12:05:11  profilanswer
 

macgawel:
Je le sais car j'ai testé le code en ligne
 
Luc@s:
J'ai fais l'appel de la requete SQL:
SELECT DISTINCT `username` , `visits` , `referals`  
FROM `tb_users`  
ORDER BY `visits` DESC  
LIMIT 0 , 10  
 
sur phpmyadmin, et il n'y a pas d'erreur, ca me classe les membres par ordre

n°1849802
Profil sup​primé
Posté le 11-02-2009 à 12:06:33  answer
 


n°1849809
omega2
Posté le 11-02-2009 à 12:16:24  profilanswer
 

Tiens, faut que je me le note dans les bonnes escuses ça :
"C'est pas la peine de débugguer ici par ce que ça marche ailleurs." Je me demande ce que mon chef dirait si je là lui sortais celle là.
 
Entre nous, si tu ne veux pas savoir ce qui se passe, continu comme ça mais ne t'attend alors pas à obtenir des solutions miraculeuses sur ce forum. Par contre, si tu veux savoir pourquoi ça ne marche pas, fait ce que luc@s t'as dit.
 
En passant, je suis étonné que Luc@s continue d'insister pour t'aider. Après une réponse comme la tienne j'aurais laissé tomber. [:airforceone]

n°1849816
tszlachter
Posté le 11-02-2009 à 12:24:45  profilanswer
 

J'ai dit dans mon premier message que je n'étais pas du tout un as du php/mysql
 
on me demande de trouver echo mysql_error(); arpès l'appel de mysql_query.
 
J'ai demandé ou trouver cela, on me répond : Je viens te de le dire !
 
Moi je ne sais pas si je dois aller dans phpmyadmin, regarder dans le codage, ou aller sur ma page d'erreur sur le site... J'essaye de faire ce que vous me dites, je suis de bonne volonté, je vous remercie pour votre aide, mais bon il faut aussi comprendre qu'un débutant peu pas comprendre tout ce que vous dites
 
Alors tanpis ... C'est pas grave. Ca fera une option de moins sur mon site.

Message cité 1 fois
Message édité par tszlachter le 11-02-2009 à 12:29:02
n°1849820
Profil sup​primé
Posté le 11-02-2009 à 12:31:49  answer
 

tszlachter a écrit :

J'ai dit dans mon premier message que je n'étais pas du tout un as du php/mysql
 
on me demande de trouver echo mysql_error(); arpès l'appel de mysql_query.
 
J'ai demandé ou trouver cela, on me répond : Je viens te de le dire !
 
Alors tanpis ... C'est pas grave. Ca fera une option de moins sur mon site.


EUh, non, tu as dit, je cite :

tszlachter a écrit :

Heu, je trouve ou ce message d'erreur ?


Et pour çà il faut faire :
echo mysql_error();
Ce qui va afficher l'erreur retournée par mysql.
 
Mais bon je devine que tu t'es très mal exprimé et que tu voulais dire "Bah ouais mais je le mets où çà  [:julm3]"
Dans ce cas la réponse est : après l'appel de la fonction mysql_query().
Et si tu ne comprends pas çà, alors je ne peux plus rien pour toi.

n°1849822
macgawel
Posté le 11-02-2009 à 12:43:31  profilanswer
 

macgawel a écrit :

 


 :heink:
Comment sais-tu qu'il y a deux erreurs ?

 
tszlachter a écrit :

macgawel:
Je le sais car j'ai testé le code en ligne


[:domen1]
Et quand tu l'as testé en ligne, comment as-tu découvert qu'il y avait deux erreurs ?

 

C'était marqué "Vous avez deux erreurs" ? Tu as eu une révélation ? Autre - précisez ?

 

Avant de t'énerver parce qu'on ne t'aide pas, essaye d'expliquer clairement le problème, merci.


Message édité par macgawel le 11-02-2009 à 12:45:54
n°1849824
tszlachter
Posté le 11-02-2009 à 12:45:36  profilanswer
 

Merci luc@s j'ai compris.
J'ai trouvé le problème et l'affichage du classement est ok.
Mais bon, comme à mon habitude... il y a un problème.
 
Ca affiche le classement avec comme score pour le premier 99 ensuite 98 97 ...
Et ça classe les membres avec plus de 100 clics dans le fond du classement
 
Idem pour les meilleurs parrains
 
Voir ici:
http://test.showbux.net/classement.php

Message cité 1 fois
Message édité par tszlachter le 11-02-2009 à 12:48:28
n°1849826
macgawel
Posté le 11-02-2009 à 12:49:49  profilanswer
 

tszlachter a écrit :

Merci luc@s j'ai compris.
J'ai trouvé le problème et l'affichage du classement est ok.
Mais bon, comme à mon habitude... il y a un problème.
 
Ca affiche le classement avec comme score pour le premier 99 ensuite 98 97 ...
Et ça classe les membres avec plus de 100 clics dans le fond du classement
 
Voir ici:
http://test.showbux.net/classement.php


Si tu vas voir ta table dans phpmyadmin, quel est le type du champ sur lequel tu fais le tri ?

n°1849833
tszlachter
Posté le 11-02-2009 à 12:58:56  profilanswer
 


table : tb_users
champ :visits  
type: varchar(150)  
 

n°1849837
omega2
Posté le 11-02-2009 à 13:07:02  profilanswer
 

"type: varchar" donc du texte. Il est donc normal qu'une chaine qui commence par le caractère '9' soit considéré comme supérieur à une chaine qui commence par le caractère '1' (les comparaisons de chaines se font caractère par caractère)
 
Change le type de cette zone en TyniInt si le plus grand nombre possible est 100 (ou en integer si t'as besoin de plus grand) et avec avec "unsigned" (nombres positif uniquement) si tu ne veux pas avoir de nombre négatif.

n°1849844
tszlachter
Posté le 11-02-2009 à 13:23:23  profilanswer
 

Disons que pour le moment les 1er sont à 127 clics mais par le futur il n'y aura pas de limite.
J'ai changé le type en TyniInt (attributs unsigned) et ca marche bien
Mais je n'ai pas compris, comment faire pour mettre une plus grande valeur ?

n°1849859
macgawel
Posté le 11-02-2009 à 14:13:23  profilanswer
 

tszlachter a écrit :

Disons que pour le moment les 1er sont à 127 clics mais par le futur il n'y aura pas de limite.
J'ai changé le type en TyniInt (attributs unsigned) et ca marche bien
Mais je n'ai pas compris, comment faire pour mettre une plus grande valeur ?


[:rtfm]
TinyInt = Tiny Int(eger) = Petit Entier.
Int = Int(eger) = Entier.
Etc.

n°1849942
tszlachter
Posté le 11-02-2009 à 15:51:21  profilanswer
 

ah ok !
 
Merci bcp à vous tous pour votre aide et votre GRANDE patience avec moi ^^
 
Très cordialement.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  creer un classement php

 

Sujets relatifs
Utilisation de DDK pour créer une carte réseaux virtuelleCréer une relation 0,n sous access
Creer sur la meme page un formulaire de recherche fixe et les resulcreer des Tableaux en PHP avec pour nom le resultat fournit par requet
Créer un topic phpBB3 via un formulaire externeCréer une page de dispatch en php en fonction de l'url saisie
créer un index des fichiers d'un répertoireCréer un fichier html compilé
Facebook : comment créer application pour noter&faire un classement?Créer un "classement" ( genre "Vous êtes 52 ème sur 2457 )
Plus de sujets relatifs à : creer un classement php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR