Visualizzazione risultati 1 fino 12 di 12

Discussione: Sommare dati di una tabella

  1. #1
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito Sommare dati di una tabella

    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

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,806

    Predefinito

    Prova in questo modo:

    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;
    ?>
    Prima di usarlo, cerca di capire cosa fa il codice...

    Ciao!

  3. #3
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    ok, grazie, funziona alla grande,
    nb. se volessi estrarre anche il valore max e min sempre del giorno odierno come si modifica lo script .

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da raimaker Visualizza messaggio
    ok, grazie, funziona alla grande,
    nb. se volessi estrarre anche il valore max e min sempre del giorno odierno come si modifica lo script .
    Studiare, cercare di carpire e provare no?
    Usare quel famoso raziocinio di cui dovrebbe essere dotato ogni essere appartenente al genere umano?

    Nooooooo, Tutti abbiamo bisogno di tutto e subito!

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,806

    Predefinito

    Citazione Originalmente inviato da raimaker Visualizza messaggio
    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

  6. #6
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    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
    ?>
    l'interpretazione è corretta ?
    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.

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,806

    Predefinito

    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!

  8. #8
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    tutto il codice è questo,


    Codice 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 ;
    ?>
    l' esempio è qua
    http://raimaker.altervista.org/dati.php
    la tabella è qua :
    http://raimaker.altervista.org/dati.txt
    val max e min è sempre uguale a 1.30

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,806

    Predefinito

    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!

  10. #10
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    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

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,806

    Predefinito

    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!

  12. #12
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    Grazie.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •