Videos streaming images jeux et buzz
Connexion






Perdu le mot de passe ?

Inscrivez-vous maintenant !
Menu Principal
Communauté


(1) 2 »


Wiliwilliam
Petit exercice de programmation html/php
 0  #1
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
Consigne: Faire un classement

J'ai une liste de fichiers .txt nommés de façon aléatoire.
en deuxième ligne j'ai un nombre de taille variable.

Je veux afficher un classement en html du plus grand au plus petit nombre de la seconde ligne, avec le nom affiché!

exemple:
Dans un dossier j'ai:

pif.txt
ligne 1 : 456
ligne 2 : 12
ligne 3: ... etc

paf.txt
ligne 1 : 231
ligne 2 : 25
ligne 3: ... etc

pouf.txt
ligne 1 : 1023
ligne 2 : 9
ligne 3: ... etc

dans le même dossier j'ai un fichier html
Sur mon affichage web, je veux:

1 - 25 - Paf
2 - 12 - Pif
3 - 9 - Pouf


Etant donné que je ne sais pas trop comment programmer. Pouvez vous m'écrire le code si vous avez le temps.
Parce que si vous me dites: c'est simple tu utilises la fonction de recup' ça m'aide pas vraiment :roll:

Contribution le : 29/01/2014 15:15
Signaler

moa56
 0  #2
Je suis accro
Inscrit: 16/12/2013 18:26
Post(s): 1757
bah, c'est pourtant simple, utilise la fonction recup 😃

Contribution le : 29/01/2014 15:22
Signaler

Wiliwilliam
 0  #3
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
vtff 😃 @moa56

Contribution le : 29/01/2014 15:25
_________________
>> Récompenses si tu passes en article <<
Signaler

Poum45
 0  #4
Je poste trop
Inscrit: 03/12/2007 23:03
Post(s): 59592
Karma: 4214
Mouais, Recup me parait assez adapté à ta situation 😉

Plus sérieusement, regarde si ça, ça peut t'aider.

Je ne code pas en php ou javascript donc ...

Contribution le : 29/01/2014 15:27
Signaler

Wiliwilliam
 0  #5
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
ben du coup du javascript me paraît plus adapté.
ça ne m'aide pas vraiment parce que je ne cherche pas à trier des fichiers mais des données dans des multiples fichiers dans un unique fichier.
(mais si personne n'a de solution, pas même @-Flo- ni @grandrasse ni @djfameus

je pense que je testerai le classement par fichier et ferait un classement à la main :-? mais bon, l'idée c'est que le classement soit à jour de manière instantanée.


En fait j'avais demandé une chose dans ce genre il y a quelques temps mais c'était au sein même d'un seul fichier:

<?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++;
}
?>

Contribution le : 29/01/2014 15:47
Signaler

Adr1enb
 0  #6
La loi c'est moi
Inscrit: 19/04/2008 16:29
Post(s): 8776
Karma: 2423
Je verrais bien en shell:

<grep "ligne 2" * >

dans le dossier en question, que tu tries en fonction du résultat après "ligne 2"

Contribution le : 29/01/2014 15:56
Signaler

Wiliwilliam
 0  #7
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
ça donnerait quoi comme truc?
je crée un fichier que je mets dans le-dit dossier et?

Contribution le : 29/01/2014 16:01
_________________
>> Récompenses si tu passes en article <<
Signaler

Wiliwilliam
 0  #8
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
@leozero
(du coup comme je te vois connecté!)

Contribution le : 29/01/2014 16:15
_________________
>> Récompenses si tu passes en article <<
Signaler

leozero
 0  #9
Je masterise !
Inscrit: 18/10/2007 21:56
Post(s): 4876
Karma: 221
Je n'ai pas trop compris l'exercice ^^"

Mais pour faire simple, j'utiliserai une fonction de lecture de fichier, puis je lirais chaque ligne pour mettre le nombre dans un tableau et ensuite une fonction de tri basique.

Avec du fopen, fgets, asort et utiliser la clé du tableau pour stocker le nom du fichier.

Tu dois récupérer tous les txt dans un dossier ou tu connais déjà le nom de ces fichiers ?

PS: Désolé je suis au boulot, je lis un peu en diagonale ^^"

Contribution le : 29/01/2014 16:32
Signaler

Wiliwilliam
 0  #10
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
nan nan je crois que t'as compris le truc
pour les fichiers/dossiers

Un dossier, et dedans tous les fichiers.txt , leur nombre risque de varier, leur position dans le dossier aussi.

Contribution le : 29/01/2014 16:35
_________________
>> Récompenses si tu passes en article <<
Signaler

leozero
 0  #11
Je masterise !
Inscrit: 18/10/2007 21:56
Post(s): 4876
Karma: 221
Citation :

@Wiliwilliam_ a écrit:
nan nan je crois que t'as compris le truc
pour les fichiers/dossiers

Un dossier, et dedans tous les fichiers.txt , leur nombre risque de varier, leur position dans le dossier aussi.


je suis en train de te coder ça 😉

Contribution le : 29/01/2014 16:43
Signaler

Wiliwilliam
 0  #12
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
:-o
sérieux?! ❤

Contribution le : 29/01/2014 16:47
_________________
>> Récompenses si tu passes en article <<
Signaler

leozero
 0  #13
Je masterise !
Inscrit: 18/10/2007 21:56
Post(s): 4876
Karma: 221
Par contre, il ne gère pas les doublons de valeurs ^^"
<?php

$folder = 'folder';

$files = scandir($folder);

$sort = array();

foreach($files as $file) {
	if(preg_match('/\.txt/', $file)) {
		$handle = fopen($folder.'/'.$file, 'r');
		while (!feof($handle)) {
			$line = fgets($handle);
			$sort[intval($line)] = trim($file, '.txt');
		}
	}
}

ksort($sort);
foreach($sort as $key=>$value) {
	echo $value.'-'.$key.'<br>';
}


Contribution le : 29/01/2014 16:56
Signaler

Wiliwilliam
 0  #14
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
si y a 2 fichiers avec le même nom ou 2 fichiers dont la ligne 2 est de même valeur?

j'pense que ça devrait aller 😃
merci énormément!!!

Contribution le : 29/01/2014 16:57
Signaler

leozero
 0  #15
Je masterise !
Inscrit: 18/10/2007 21:56
Post(s): 4876
Karma: 221
Citation :

@Wiliwilliam_ a écrit:
si y a 2 fichiers avec le même nom ou 2 fichiers dont la ligne 2 est de même valeur?

j'pense que ça devrait aller 😃
merci énormément!!!


Theoriquement, tu ne peux pas avoir 2 fichiers avec le même nom dans le même dossier ^^".

Sinon, ouais, ça pose problème s'il y a 2 valeurs identiques dans 2 fichiers différents, par exemple 2 "12".

Et y'a pas de quoi 😉

J'aurai pu faire un truc qui gère les doublons, mais je suis au boulot ^^"

Contribution le : 29/01/2014 17:02
Signaler

Wiliwilliam
 0  #16
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
heu, il me fait un message d'erreur avec la fonction scandir
Fatal error: Call to undefined function: scandir() in stats.php on line 5

Contribution le : 29/01/2014 17:03
Signaler

leozero
 0  #17
Je masterise !
Inscrit: 18/10/2007 21:56
Post(s): 4876
Karma: 221
Arf, tu dois avoir une ancienne version de PHP ... ou alors c'est dispo que sur Linux ...

Essaye de mettre à jour ton PHP.

Sinon, voici une correction qui gère les doublons et un petit soucis de ligne vide ^^

<?php

$folder = 'folder';

$files = scandir($folder);

$sort = array();

foreach($files as $file) {
	if(preg_match('/\.txt/', $file)) {
		$handle = fopen($folder.'/'.$file, 'r');
		while (!feof($handle)) {
			$line = fgets($handle);
			if($line)
				$sort[] = array(trim($file, '.txt'), intval($line));
		}
	}
}

usort($sort, 'sort_value');
foreach($sort as $array) {
	echo $array[0].'-'.$array[1].'<br>';
}

function sort_value($a, $b) {
	if($a[1] == $b[1])
		return 0;
	return ($a[1] < $b[1]) ? -1 : 1;
}

Contribution le : 29/01/2014 17:09
_________________
Signaler

Wiliwilliam
 0  #18
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
c'est pas un serveur dédié, j'ai pas d'accès ssh
je suis pas sur que je puisse mettre à jour php

Contribution le : 29/01/2014 17:15
_________________
>> Récompenses si tu passes en article <<
Signaler

leozero
 0  #19
Je masterise !
Inscrit: 18/10/2007 21:56
Post(s): 4876
Karma: 221
Citation :

@Wiliwilliam_ a écrit:
c'est pas un serveur dédié, j'ai pas d'accès ssh
je suis pas sur que je puisse mettre à jour php


Arf, du coup, je suis pas sûr que tu puisses lister un dossier ... ils ont du sécuriser certaines commandes ...

Contribution le : 29/01/2014 17:18
Signaler

Wiliwilliam
 0  #20
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38241
Karma: 18982
@leozero

j'ai suivi cette démarche:
http://guides.ovh.com/Php5ChezOvh
en mettant à chaque fois une version différence.
Les erreurs ont évoluées.

Warning: scandir(folder): failed to open dir: No such file or directory in stats.php on line 5

Warning: scandir(): (errno 2): No such file or directory in stats.php on line 5

Warning: Invalid argument supplied for foreach() in stats.php on line 9

Contribution le : 29/01/2014 17:24
_________________
>> Récompenses si tu passes en article <<
Signaler


 Haut   Précédent   Suivant
(1) 2 »






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.