Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    PHP - MYSQL - Raggruppare i valori da mostrare in funzione di un dato valore compreso nel record.

    Ciao, mi spiego meglio: ho un database contenente una tabella con diversi campi; questi campi contengono dati come nome della persona, motivo dell'iscrizione al servizio e data di iscrizione ( e altre cose varie... ).
    Ora avrei bisogno di vedere i valori tabellati divisi per data di iscrizione, in altre parole, in una tabella le righe saranno si zebrate, ma non una riga sì e una no, ma per gruppi di date, in modo da riconoscere subito quelli che si sono iscritti in un dato giorno, e stampare quindi una specie di report.
    Il problema è che non so come fare; pensavo ad una query che estraesse i record per gruppi, ma mentre sto scrivendo, credo che sia se non impossibile, quanto meno inutile dato che una query in tal senso dovrebbe tirare fuori solo il gruppo riferito ad una determinata data per volta. O sbaglio?
    Non finirei più di fare query per mostrare tutto il database.

    Ho anche pensato di utilizzare il PHP dopo avere estratto il database, ma anche qui mi sa che viene quanto meno complicato gestire la "tabellazione".
    Pensavo, così al volo, ad un ciclo che controlli il campo data e al suo cambiare, cambi il colore della riga.
    Oddio, mi rendo anche conto che non sarebbe una cosa così strana, dato che comunque il database non verebbe ovviamente mostrato tutto in una volta, ma tabellato di un tot di righe alla volta per via della paginazione e quindi ci sarebbero pochi dati da ciclare alla volta.
    Ma ripeto, è solo un'idea al volo.
    Voi come risolvereste la cosa?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Se non specifichi una data nella clausola WHERE, il "GROUP BY data" le date le prende tutte, non solo una.

    Per dubbi sulle query, per favore, chiedi nella sezione Database, non qui.

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Se non specifichi una data nella clausola WHERE, il "GROUP BY data" le date le prende tutte, non solo una.

    Per dubbi sulle query, per favore, chiedi nella sezione Database, non qui.
    Avevo iniziato in quella sezione, ma poi mi è venuto proprio il dubbio che non fosse in una query la soluzione del problema.
    Se usi group by, infatti ti raggruppa tutti i dati simili in un dato unico, alla fine ho provato anche group_concat(campo) ma quella accetta solo un campo non tutti quelli presenti nella tabella.
    Alla fine, ho deciso di chiedere in questa sezione perché forse la soluzione migliore è in PHP e non im MySQl.

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Se vuoi mostrare tutti i record allora group by non va bene. Se non ho capito male io userei order by data.
    Per cambiare colore dovresti fare una cosa del genere

    Codice PHP:
    $data '';
    while(
    $row = ...){
       if(
    $data != $row['data']){
           
    $style // cambia lo stile; 
           
    $data $row['data'];
       }
       echo 
    "<div style='$style'>".$row[...].'</div>';

    Forse, l'unico "intoppo" sarebbe la paginazione: Potresti ritrovarti un "gruppo" di record con la stessa data su due pagine diverse
    Ultima modifica di boots; 29-05-2017 a 12:18

  5. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Quote Originariamente inviata da boots Visualizza il messaggio

    Se vuoi mostrare tutti i record allora group by non va bene. Se non ho capito male io userei order by data.
    No, funziona prioprio così, alla fine leggendo il manuale del mysql ce l'ho fatta, e per completezzametto qui una query che raggruppa per data i valori cercati:
    codice:
    codice:
    SELECT inviata,group_concat(concat(`comune`,':', `nome`) separator ',') FROM `rettifiche` GROUP BY inviata; --

    separandoli a gruppi con virgole e : per ritrovarli.
    [QUOTE] Per cambiare colore dovresti fare una cosa del genere
    Codice PHP:
          $data '';
    while(
    $row = ...){
       if(
    $data != $row['data']){
           
    $style // cambia lo stile; 
           
    $data $row['data'];
       }
       echo 
    "<div style='$style'>".$row[...].'</div>';

    [QUOTE]





    E questo è ciò che volevo fare, ma speravo in qualche cosa di più performante, anche se come r/ipeto i numeri da processare sono pochi.
    Forse, l'unico "intoppo" sarebbe la paginazione: Potresti ritrovarti un "gruppo" di record con la stessa data su due pagine diverse


    Infatti, ora sto lavorando su questo, ma qui potrebbe essere una query a risolvere il problea, quindi torno a bomba nella sezione database
    Ma non demordo

  6. #6
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Scusate se è saltato il quoting, ma modificando il messaggio non appare nulla nel box di modifica e quindi vi ho rinunciato per non dover riscrivere tutto da capo.

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.