ordinare dati da file di testo

  • Creatore Discussione Creatore Discussione ste80
  • Data di inizio Data di inizio

ste80

Nuovo Utente
25 Feb 2012
38
0
6
44
Brescia
buonasera a tutti,
in uno semplicissimo script in PHP faccio generare un file di testo "file.txt" contenente i campi nome, punti e lanci; fin qui niente di strano, ma io vorrei che in fase di visualizzazione del file i dati fossero ordinati per punteggio dal più grande al più piccolo.

riporto un pezzetto dello script:
PHP:
<?
include("index.php");
$file = "file.txt";
$somecontent =  "nome:&nbsp;" . $nome."<br/>". "punti:&nbsp;". $punti. "&nbsp;&nbsp;lanci:&nbsp;" .$lanci. "<br/>" ;
$fh = fopen($file, 'a+');
fwrite($fh, $somecontent);
echo file_get_contents("file.txt");  
?>

Non riesco a venirne a capo, qualcuno potrebbe aiutarmi.
Grazie :)
 
ciao
se tu avessi usato un db sarebbe stato semplicissimo, con i file di testo è sempre un po' una rogna.
provo a vedere si risco e se si ti posto

dimenticavo: non usare gli short tag <?, ma <?php
 
Ultima modifica:
ciao
forse ti conviene avere un approccio leggermente diverso nello scrivere i record di testo
tanto a che ti serve avere nel file txt le informazioni nome, punti e lanci, ti basta saper in che posizione sono scritti i valori
PHP:
<?php
//.........
$somecontent =  $nome."|" $punti. "|" .$lanci;//scrivi il record con separatore |
//...........
$risultato=file("file.txt");//ottieni un array di record => nome|punti|lanci
$stampa=array();//inizializzi un array
foreach($risultato as $valore){
	$separi=explode("|", $valore);//suddividi il record secondo il carattere |
	/*
	in $separi[0] => nome
	in $separi[1] => punti
	in $separi[2] => lanci
	e ricrei un array da ordinare, usando i punti come chiave
	*/
	$chiave=$separi[1];//forse se i punti sono un numero ti conviene forzare ad intero: $chiave=(int)$separi[1];
	$stampa[$chiave]="nome:&nbsp;".$separi[0]."<br/>punti:&nbsp;".$separi[1]."&nbsp;&nbsp;lanci:&nbsp;".$lanci."<br/>";
}
ksort($stampa);//ordini l'array secondo la chiave punti, o krsort se ordine inverso
//e stampi il risultato
foreach($stampa as $testo){
	echo $testo;
}
//.....
?>
prova
comunque, se puoi passa a mysql tutto diventa più semplice
 
grazie mille!!! adesso ci lavoro su ma penso proprio che passerò alla versione con mysql.
Grazie mille!!!
 

Discussioni simili