Visualizzazione dei risultati da 1 a 3 su 3

Discussione: min max e media

  1. #1

    min max e media

    ciao a tutti e buon natale, vi ripropongo un nuovo problema!!!


    devo calcolare media min e max ma non mi funziona nulla (chissa come mai )

    ecco il quesito:

    svolgo la mia query che mi stampa in html una tabella, tra le colonne esite una che si chiama 'differenza' ovvero la differenza tra il valore previsto e quello realizzato dal treno.

    la differenza la trovo con la seguente stringa:

    $line['differenza'] = $tff - $tempi_previsti; (tutto in secondi)
    e questo è all'interno di un ciclo che mi calcola ogni riga le varie differenze.


    per calcolarmi media min e max ho scritto il seguente codice:
    inizializzo prima le variabili contatore:

    $tempo_totale = 0;
    $tempo_max = 0;
    $tempo_min = 0;

    poi calcolo e variabili nel ciclo in questo modo:

    $tempo_totale += ($line['differenza']);
    if($tempo_min > $line['differenza']){
    $tempo_min = $line['differenza'];
    }
    if($tempo_max < $line['differenza']){
    $tempo_max = $line['differenza'];
    }


    e infine calcolo la media:
    $tempo_medio=$tempo_totale/count($line);

    e riporto tutto in ore minuti e secondi.
    $tempo_medio=date("h:i:s",$tempo_medio);

    ecco il problema:

    count($line) mi restituisce 1 invece del numero di colonne e non corrispondono neanche media min e max

    il php mi restituisce i seguenti valori:
    MEDIA RITARDO 01:04:30 RITARDO Max 12:05:14 RITARDO Min 12:00:00

    facendoli in excel i valori esatti dovrebbero essere:
    MEDIA 00:03:48 MAX 00:05:14 MIN 00:00:52

    come potete vedere il valore max coincide a meno di 12 ore in più che non capisco dove li prende ma il resto no

    vi prego aiutatemi.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Suppongo che a $line sia associato un mysql_fetch_array() o simile.

    la funzione count() fatta su questa variabile è ovvio che ti restituisca 1, ad ogni ciclo $line contiene sempre e solo un risultato.

    Per sapere quante entries hai preso dal db devi usare mysql_num_rows() in questo modo:
    Codice PHP:
    $query "SELECT * FROM tabella";
    $result mysql_query($query);

    $entries mysql_num_rows($result); //questa contiene il numero di erntries prese dal db 

  3. #3
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    c'è un po' di confusione nel tuo codice (o almeno credo visto che non l'hai messo tutto e sto andando a tentativi)
    $line['differenza'] = "quella formula", cos'è? scritto così sembra un array di lunghezza 1 a cui ogni volta sovrascrivi il valore associato alla chiave 'differenza'

    l'algoritmo, scritto in maniera rapida (poi te lo sistemi tu) è:
    [code]
    int i;
    max = min = v[0];
    for(i = 1; i<v.length; i++){
    if(max<v[i]) max = v[i];
    if(min>v[i]) min = v[i];
    }
    [code]

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.