Salve ho una tabella dati.txt del tipo
Data A B C D
6/10/11 13.2
6/10/11 0.0
7/10/11 13.2
7/10/11 0.0
8/10/11 2.1
8/10/11 6.3
8/10/11 0.0
come si fa a fare la somma dei dati della colonna D della sola data odierna ?
Grazie
Salve ho una tabella dati.txt del tipo
Data A B C D
6/10/11 13.2
6/10/11 0.0
7/10/11 13.2
7/10/11 0.0
8/10/11 2.1
8/10/11 6.3
8/10/11 0.0
come si fa a fare la somma dei dati della colonna D della sola data odierna ?
Grazie
Prova in questo modo:
Prima di usarlo, cerca di capire cosa fa il codice...Codice PHP:
<?php
$file = file('dati.txt');
$somma = 0;
foreach($file as $riga)
{
$semiriga = explode(' ',$riga);
if($semiriga[0] == date('j/n/y'))
$somma += $semiriga[1];
}
echo $somma;
?>
Ciao!
regolamento altervista_______________ regolamento forum
ok, grazie, funziona alla grande,
nb. se volessi estrarre anche il valore max e min sempre del giorno odierno come si modifica lo script .
Se cerchi di capire come funziona il codice, e sapendo che esiste la funzione max(), in pratica hai già fatto
È soltanto una riga da aggiungere!
Ciao!
Ultima modifica di alemoppo : 09-10-2011 alle ore 13.04.28
regolamento altervista_______________ regolamento forum
l'interpretazione è corretta ?Codice PHP:
<?php
$file = file('dati.txt'); //leggo il file
$somma = 0; // imposto a 0 il contatore
foreach($file as $riga) //effettuto la ricerca su tutta la tabella
{
$semiriga = explode(' ',$riga); //divido la riga dopo ogni spazio
if($semiriga[0] == date('j/n/y')) // confronto il valore data della prima colonna con la data odierna , se è uguale allora fai la somma del dato dell' array 1
$somma += $semiriga[1];
}
echo $somma;// scrivo a video il valore
?>
perchè sto provando a leggere gli esempi ma non ci riesco.
Avete pienamente ragione quando dite di leggere e provare , ma mi si è chiuso la mente.
Sì, è corretta.
Ci ho ripensato un attimo, e non è poi così banale come pensavo...
Prova a ragionarci.. Se poi non riesci, scrivici cosa hai provato e dove ti sei impuntato...
Ciao!
regolamento altervista_______________ regolamento forum
tutto il codice è questo,
l' esempio è quaCodice PHP:
<?php
$file = file('dati.txt'); //leggo il file
$line = preg_replace('/\s+/', ';', $file);// elimino gli spazi e inserisco il ;
$somma = 0; // imposto a 0 il contatore
foreach($line as $riga) //effettuto la ricerca su tutta la tabella
{
$semiriga = explode(';',$riga); //divido la riga dopo ogni spazio
//echo $riga."<br>";
echo $semiriga[0]."-".$semiriga[4]."<br>";
// confronto il valore data della prima colonna con la data odierna , se è uguale allora fai la somma del dato dell' array 1
if($semiriga[0] == date('j/n/y'))
$somma += $semiriga[4];
}
$val=array($semiriga[4]);
$val_max = max($val);
$val_min = min($val);
echo"<br>";
echo "Tot. del giorno ".date('j/n/y')." = ".$somma;// scrivo a video il valore
echo"<br>";
echo "max val : " .$val_max ;
echo"<br>";
echo "min val : " .$val_min ;
?>
http://raimaker.altervista.org/dati.php
la tabella è qua :
http://raimaker.altervista.org/dati.txt
val max e min è sempre uguale a 1.30
Non ho capito perché sostituisci lo spazio con il ; e poi effettui l'explode rispetto il ; ...non fai prima a fare l'explode rispetto lo spazio? (comunque funziona ugualmente).
Non capisco $semiriga[4]... In ogni riga, ci sarà solo un ; no?, quindi avrai $semiriga[0] e $semiriga[1] (ovviamente, se hai modificato la formattazione del file in input, il discorso cambia :D ).
In generale, comunque, da quel che ho capito devi trovare il massimo numero (e il minimo) del giorno attuale. Quindi, io farei in questo modo (riprendendo lo script che avevo fatto):
Codice PHP:
$file = file('dati.txt'); //leggo il file
$somma = 0; // imposto a 0 il contatore
$massimo = '';
foreach($file as $riga) //effettuto la ricerca su tutta la tabella
{
$semiriga = explode(' ',$riga); //divido la riga dopo ogni spazio
if($semiriga[0] == date('j/n/y')) // confronto il valore data della prima colonna con la data odierna , se è uguale allora fai la somma del dato dell' array 1
{
$somma += $semiriga[1];
if(empty($massimo)) //se è il primo ciclo
$massimo = $semiriga[1];
else if($semiriga[1] > $massimo)
$massimo = $semiriga[1];
}
}
...ok, scusami: non ho usato la max()
Se ti va bene questa soluzione, ti lascio il calcolo del minimo, che è analogo a quello del massimo...
Ciao!
regolamento altervista_______________ regolamento forum
Vi ringrazio di cuore per la Vs gentile collaborazione,
mi avete risolto il mio problemino ,
mi potete consigliare una buona guida in italiano su php .
Grazie
Sinceramente non ho mai seguito una guida in particolare.
Quel che so l'ho imparato qui sul forum, o leggendo (pezzi) di guide in internet.
Penso che una giuda "completa", sia questa, ma ne trovi infinite su google...
Ciao!
regolamento altervista_______________ regolamento forum
Grazie.