Page 1 sur 1

Lire fichier TXT et l'afficher dans un ordre precis

Posté : 25 avr. 2015, 15:42
par sax76
bonjour à tous ,

j'essai de faire un système qui marche sous base de fichier txt

le fichier txt se présente sous cette forme :

@anom1;;5
@cnom2;;3
@nnom3;;8
@hnom4;;4
@enom5;;1
......................

j'utilise ce code pour le lire et l'afficher :

Code : Tout sélectionner

$handle = fopen('@@BDD.txt', 'r'); $tb_nom = array(); $tb_total = array(); $i = 0; while(($data = fgetcsv($handle, 1000, ';;')) !== FALSE){ $tb_nom[$i] = $data[0]; $tb_total[$i] = $data[2]; $i++; } $i_max = $i; fclose($handle); array_multisort($tb_nom, $tb_total); echo "<table>"; for($i = 0; $i < $i_max; $i++){ echo "<tr>"; echo ' '.$tb_nom[$i].' '.$tb_total[$i].'<br>'; echo "</tr>"; } echo "</table>";
il affiche le fichier brut et par ordre alphabetique :

anom1 == > 5
cnom2 ==> 3
enom3 ==> 1
hnom4 ==> 4
nnom5 ==> 8


je voudrais afficher selon le nombre en ordre décroissant et avoir :

nom3 ==> 8
nom1 ==> 5
nom4 ==> 4
nom2 ==> 3
nom5 ==> 1


comment procédé sachant que ce chiffre change régulièrement

cdt PAscal

Re: Lire fichier TXT et l'afficher dans un ordre precis

Posté : 25 avr. 2015, 16:33
par tof73
voir : Exemple #3 Classer les résultats d'une base de données dans
http://php.net/manual/fr/function.array-multisort.php
il faut donc avoir un seul tableau dans la boucle fgetcsv et non 2.

Re: Lire fichier TXT et l'afficher dans un ordre precis

Posté : 25 avr. 2015, 16:39
par sax76

Code : Tout sélectionner

array_multisort($tb_total , SORT_DESC ,$tb_nom);
resolu ca marche merciiiiiiiiiiiiiiiiiiiiii

Re: Lire fichier TXT et l'afficher dans un ordre precis

Posté : 25 avr. 2015, 18:00
par sax76
un petit detail me chagrine sur l'affichage
la base fait par ex 40 lignes j'affiche donc les 40 lignes
comment bloquer à 20 par ex

Code : Tout sélectionner

echo '<table>'; for($i = 0; $i < $i_max; $i++){ echo '<tr>'; echo ''.$pos.' '.$tb_nom[$i].' '.$tb_total[$i].'<br>'; if ($pos == 20) { echo '</tr>' ; } $pos++ ; } echo '</table>';
j'ai fais ca mais impossible d'affiche que 20 lignes :(

Re: Lire fichier TXT et l'afficher dans un ordre precis

Posté : 25 avr. 2015, 18:17
par sax76
j'ai fais ceci , ca marche mais est ce propre ?

Code : Tout sélectionner

if ($pos == 20) { echo '</tr>'; die() ; } $pos++ ; } echo '</table>';

Re: Lire fichier TXT et l'afficher dans un ordre precis

Posté : 25 avr. 2015, 18:19
par tof73
if($i_max > 20)[
$i_max=20;
}
for($i = 0; $i < $i_max; $i++){

Re: Lire fichier TXT et l'afficher dans un ordre precis

Posté : 25 avr. 2015, 20:24
par Ryle
Il suffit simplement de limiter le nombre d'itération de ta boucle for en jouant sur la valeur de $i_max.
Tu peux par exemple définir celui-ci ainsi : $i_max = min($i, 20);

Comme ça ta boucle s'arrête au plus petit des deux entre $i (ton nombre de résultats) et 20. Si tu as 10 résultats, il boucle 10 fois, si tu as plus de 20 résultats il ne bouclera que 20 fois au maximum,

Quant à interrompre une boucle, il faut utiliser l'instruction "break" (et non pas die :)) pour sortir immédiatement de la boucle, ou "continue" si tu veux sauter une itération et passer à la suivante sans sortir de la boucle.

Re: Lire fichier TXT et l'afficher dans un ordre precis

Posté : 26 avr. 2015, 20:37
par sax76
Merci à tout les deux

j'ai mis finalement "break"
et ca roule :)

(par contre je peux plus mettre resolu en haut )