Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766

    Dividere per mese i risultati

    Dovrei fare una pagina che ogni mese mi mostri l'incasso di un negozio.
    La query e il codice che segue mi mostra il totale degli incassi di tutti i giorni e quindi mi mostra una cosa tipo
    Incasso euro: 1000
    ora vorrei fare una cosa che mi dice a gennaio quanto ha incassato, a febbraio, a marzo ecc.
    Una cosa tipo:
    Gennaio: 100 euro
    Febbraio: 150.00
    Marzo: 120.00 euro
    ecc
    Come posso farlo in automatico?
    Codice PHP:
    $sql "select * from $tabella";
    $risultato mysql_query($sql,$connessione);
    $i=0;
    $h=0;
    while (
    $fetch mysql_fetch_array($risultato)){
    $totale[] = $fetch['incasso'];
    $totale_hotel[] = $fetch['incasso_hotel'];
    $i++;
    $h++;
    $incasso_totale_hotel=array_sum($totale_hotel);
    $incasso_totale=array_sum($totale);

    La data la metto nel database in questo modo:
    0000-00-00 00:00:00

  2. #2
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    oppure potrei mettere qualcosa cosi?

    $sql = "SELECT count(incasso) FROM $tabella WHERE data BETWEEN 20060301000000 AND 20070102235959 group by incasso";

    Il problema e' che mi da zero euro...

    Forse perche' i valori 20060301000000 e 20070102235959 non li ho scritti bene, non esiste un sito dove inserisco le date normali e quindi 02/01/2007 mi estrae le date in unixtimestamp?

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select date_format(campo_datetime,"%Y-%m") as mese_anno,sum(prezzo) as totale
    from tabella
    group by mese_anno

  4. #4
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente inviato da nicola75ss
    codice:
    select date_format(campo_datetime,"%Y-%m") as mese_anno,sum(prezzo) as totale
    from tabella
    group by mese_anno
    quindi cosi?
    Codice PHP:
    <?
    $sql
    ="select date_format(data,\"%Y-%m\") as mese_anno,sum(incasso) as totale from $tabella group by mese_anno";
    $risultato mysql_query($sql,$connessione);
    $i=0;
    $h=0;
    while (
    $fetch mysql_fetch_array($risultato)){
    $totale[] = $fetch['incasso'];
    $totale_hotel[] = $fetch['incasso_hotel'];
    $i++;
    $h++;
    $incasso_totale_hotel=array_sum($totale_hotel);
    $incasso_totale=array_sum($totale);
    }
    ?>
    pero' mi dice sempre che ho zero euro

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prova a spiegarti bene altrimenti ne vien fuori un 3d chilometrico come al solito.

    Originariamente inviato da Tr|k`Tr4k
    Forse perche' i valori 20060301000000 e 20070102235959 non li ho scritti bene, non esiste un sito dove inserisco le date normali e quindi 02/01/2007 mi estrae le date in unixtimestamp?
    ...cosa vorrebbe dire questa frase?

    Se gli hotel sono più di uno allora devi raggruppare anche per hotel, oltre che per mese_anno.

  6. #6
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    allora
    in pratica lo script postato all'inizio mi mostra gli incassi totali senza nessuna divisione. Ogni volta che aggiungo una vendita in automatico si somma a quella cifra.

    Ora pero' vorrei fare in modo che ogni mese dell'anno mi faccia vedere l'incasso in modo da fare un paragone con l'anno prima

    Adesso nel db io faccio finire le date nel formato 0000-00-00 00:00:00 mentre in quella query di prova che ho postato e cioe'
    Codice PHP:
    $sql "SELECT count(incasso) FROM $tabella WHERE data BETWEEN 20060301000000 AND 20070102235959 group by incasso"
    penso di aver sbagliato a scrivere le date (vedi 20060301000000 e 20070102235959)

    Ricapitolando, lo script mi dovrebbe mostrare ogni mese l'incasso... è possibile farlo in automatico?
    Calcola che ne ho uno che mi mostra giorno per giorno l'incasso, e lo faccio cosi':
    Codice PHP:
    $query=mysql_query("SELECT DATE_FORMAT(`data`, '%d/%m/%Y') AS fdata, format(SUM(incasso),2) FROM $tabella GROUP BY `fdata` ORDER BY id DESC LIMIT 0,30") or die(mysql_error());
    $incasso_giorno $incasso_giorno $riga['incasso'];
    while(list(
    $data$incasso_giorno) = mysql_fetch_row($query))
    echo 
    "[b]$data[/b] -  $incasso_giorno 
     "

    Quindi che faccio per vedere ogni mese quanto incassa??

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se questa è la tua query che raggruppa per giorno togli %d e avrai il raggruppamento per mese e anno
    Codice PHP:
    $query=mysql_query("SELECT DATE_FORMAT(`data`, '%d/%m/%Y') AS fdata, format(SUM(incasso),2) FROM $tabella GROUP BY `fdata` 
    codice:
    SELECT DATE_FORMAT(`data`, '%m/%Y') AS fdata, 
    format(SUM(incasso),2) as tot_incasso
    FROM $tabella GROUP BY `fdata`

  8. #8
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente inviato da nicola75ss
    Se questa è la tua query che raggruppa per giorno togli %d e avrai il raggruppamento per mese e anno
    Codice PHP:
    $query=mysql_query("SELECT DATE_FORMAT(`data`, '%d/%m/%Y') AS fdata, format(SUM(incasso),2) FROM $tabella GROUP BY `fdata` 
    codice:
    SELECT DATE_FORMAT(`data`, '%m/%Y') AS fdata, 
    format(SUM(incasso),2) as tot_incasso
    FROM $tabella GROUP BY `fdata`
    Si infatti, l'avevo pensato anche io.
    Pare che funziona bene.
    Grazie

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.