Videos streaming images jeux et buzz
Connexion






Perdu le mot de passe ?

Inscrivez-vous maintenant !
Menu Principal
Communauté




Wiliwilliam
créer un classement scripté
 0  #1
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938
bon voilà, j'ai un fichier qui évolue régulièrement, un .users lisible avec un éditeur de texte classique
Il comporte des données classé un peu sous forme de tableau.

NOM.PARTICIPANT1:29:::933:0:50:0:0:2:12:1:1:0:0:847:120:1000:840:972:810:0:240::0:0:0:0:0:0:0:0:0:DISABLED:0:0:0:1365956345:
NOM.PARTICIPANT2:124:::63:10:975:3:0:5:28:5:49:0:20:1017:540:520:840:151:680:280:800::1:540:0:0:0:0:0:0:0:DISABLED:6:180:0:1366076526:

...etc
Admettons, j'ai un dossier TEST contenant un index.html et le fichier FICHIER.users

Comment je pourrais faire un affichage tableau récupérant certaines valeurs (changeable) et en faire un classement selon le nom du participant?

Par exemple, admettons que la valeur située en 8ème position est le score total.
NOM.PARTICIPANT1:29:::933:0:50:0:0:2:12:1:1:0:0:847:120:1000:840:972:810:0:240::0:0:0:0:0:0:0:0:0:DISABLED:0:0:0:1365956345:
NOM.PARTICIPANT2:124:::63:10:975:3:0:5:28:5:49:0:20:1017:540:520:840:151:680:280:800::1:540:0:0:0:0:0:0:0:DISABLED:6:180:0:1366076526:

Bin moi je voudrais obtenir en finalité un truc dans ce style:
01. 28 - NOM.PARTICIPANT.2
02. 12 - NOM.PARTICIPANT.1


Voilà, je sais lire à peu près un script mais je ne sais en aucun cas le composer, alors si quelqu'un peu m'aider, je lui serait grandement reconnaissant!

Contribution le : 16/04/2013 11:58
Signaler

-Flo-
 0  #2
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562
En php ça te va ?

<?php
$file = 'FICHIER.users';
$users = array();
$handle = fopen($file, 'r');
while ($buffer = fgets($handle)) {
	$user_data = explode(':', $buffer);
	$user_name = $user_data[0];
	$user_score = $user_data[10];
	$users[$user_name] = $user_score;
}
fclose($handle);
arsort($users, SORT_NUMERIC);
$rank = 1;
foreach ($users as $name=>$score) {
	echo "$rank - $name - $score<br />\n";
	$rank++;
}
?>


Je ne sais pas combien tu as d'entrées au total, mais le plus propre si elles sont nombreuses serait tout de même de se passer de ce fichier au profit d'une base de données.

Contribution le : 16/04/2013 14:19
Signaler

Wiliwilliam
 0  #3
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938
tu gères c'est nickel!
Si j'ai bien compris [$user_score = $user_data[10]] détecte le nombre de ':' à sauter, et si je veux, disons, la 2ère colonne, je fais $user_score = $user_data[4]


Merci c'est exactement ce qu'il me fallait 😛

mmmh j'ai encore un peu de mal avec les bases mysql mais à terme ouai, faudrait que je passe par çà

Contribution le : 16/04/2013 15:10
Signaler

-Flo-
 0  #4
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562
Citation :

Wiliwilliam_ a écrit:
Si j'ai bien compris [$user_score = $user_data[10]] détecte le nombre de ':' à sauter, et si je veux, disons, la 2ère colonne, je fais $user_score = $user_data[4]


Tu as bien compris mais je ne vois pas comment tu arrives à 4 au final. 🙂

$user_data contient toutes les chaines séparées par des ":", numérotées en partant de 0. Si tu veux la deuxième colonne, et en admettant qu'on parle tous les deux de ":" comme d'une séparation de colonnes, alors ça sera $user_data[1].

Contribution le : 16/04/2013 15:25
Signaler

Wiliwilliam
 0  #5
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938
!la deuxieme colonne de chiffre hein

ça en fait bien 4 nan?
NOM.PARTICIPANT1:29:::933:0:50:0:0:2:12:1:1:0:0:847:120:1000:840:972:810:0:240::0:0:0:0:0:0:0:0:0:DISABLED:0:0:0:1365956345:

donc ça me donne la valeur 933
(oui excuse moi, j'ai pas compté la colonne NOM.PARTICIPANT comme une colonne :-S)

Contribution le : 16/04/2013 15:27
Signaler

-Flo-
 0  #6
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562
Ah ok je vois ce que tu veux dire. Lorsque tu dis "deuxième colonne", il fallait entendre "deuxième colonne contenant exclusivement un nombre, en omettant les colonnes vides". 😃

Donc oui dans ce cas c'est bien 4

Contribution le : 16/04/2013 15:30
Signaler

Wiliwilliam
 0  #7
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938

Contribution le : 16/04/2013 15:41
_________________
>> Récompenses si tu passes en article <<
Signaler


 Haut   Précédent   Suivant






Si vous êtes l'auteur d'un élément de ce site, vous pouvez si vous le souhaitez, le modifier ou le supprimer
Merci de me contacter par mail. Déclaré à la CNIL N°1031721.