Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591

    dividere eventi giorni diversi con una sola query

    in un gestionale per eventi, il cliente mi ha chiesto di prendere eventi di una settimana, e visualizzarli in parti diverse della pagina.
    Potrei fare varie query, e sarebbe ok, ma vorrei fare tutto con una query in modo da far risparmiare al server qualcosa..

    non riesco ad "aggregare" in un array i risultati dello stesso giorno
    ho provato in vari modi ma non ho trovato quello giusto (autoedit: è inutile mettere i passaggi che ho fatto, e ne ho fatti.. )
    L'aiuto di cui ho bisogno può essere teorico.. giusto per indicarmi la strada visto che non riesco ad andare avanti

    grazie in anticipo a chi mi darà una mano

  2. #2
    In che formato sono le date nel db?
    Experience is what you get when you don’t get what you want

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    intanto grazie..
    sono in formato datetime..
    le ho anche elaborate nel php per vedere solo la data del giorno ma non mi è stato utile alla mia causa. Anche se so che di sicuro devo passare per "quello", che è l'unica variabile che deve essere uguale (wow che gioco di parole.. ) tra eventi dello stesso giorno..
    e la query è
    SELECT * FROM eventi WHERE DATE_FORMAT(data_evento,'%Y-%m-%d')

  4. #4
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    rileggendo credo di essermi espresso male..
    non devo fare tutto NECESSARIAMENTE con gli array..
    mi basterebbe anche farlo con le variabili..

  5. #5
    Mettiamo il caso che tu debba stampare un calendario settimanale: nella query inserisci innanzitutto un order by data.
    Dopodiché quando enumeri i risultati, ti basta controllare che il giorno (rispetto al record precedente) non sia variato. Se questo succede significa che hai chiuso una giornata e devi quindi inserire il codice di markup, necessario a cambiare giorno sulla vista.
    Experience is what you get when you don’t get what you want

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    non riesco.. è vero quello che dici, l'ho già fatto in altri casi ad utilizzare una variabile di appoggioper confrontare un record con il precedente.
    Ma in questo caso se anche fosse giusto, non riesco ad applicarlo: nello specifico se anche riesco a memorizzare nelle variabili i dati, poi però queste non hanno i nomi del giorno corretto ma è $i che è 1 2 o 3 ma che però non riesco ad assegnare ad un giorno, perchè il valore si è incrementato ma non di un valore "riconoscibile"..

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    e comunque farò qualche errore io, ma lo script si "mangia" il primo record di ogni giornata: me ne fa vedere se ce ne sono 4 solo 3.. ma su questo sicuro sbaglio io

  8. #8
    Purtroppo è difficile risponderti, senza dare uno sguardo al codice.
    Se hai bisogno di una struttura dati puoi usare un array associativo:
    $eventiSettimanali = array(
    "lun" => array(....),
    "mar" => array(...),
    ...
    );
    Per popolare un simile array ti basta enumerare i risultati, come ti ho scritto nel precedente post.
    Experience is what you get when you don’t get what you want

  9. #9
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    guarda ho fatto così, semplice semplice:

    Codice PHP:
    //con questo mi calcolo i giorni di una settimana - la variabile settimana me la calcolo prima...
    for($j=1;$j<8;$j++) {$giorno[$j] = date('Y-m-d',time()+( $j + (7*$settimana) - date('w'))*24*3600);//echo $giorno[$j];}

    //questa è la query
    $query_eventi "SELECT * FROM eventi WHERE DATE_FORMAT(data_evento,'%Y-%m-%d')  BETWEEN '$giorno[1]' AND  '$giorno[7]' ORDER by data_note ASC";

    // qua mi calcolo le variabili
    do {        for($i=1;$i<8;$i++) {    if($giorno[$i] ==  substr($row_eventi['data_note'],0,10)) {    $DATI[$i] .=  "<STRONG>DATA : </STRONG>"$row_eventi['data_evento'] . " --- " $row_lunedi['testo_evento'] . "<br>";    }    }

    //per vedere se è ok stampo i risultati qua
    for($i=1;$i<8;$i++) {echo $DATI[$i] . "<br>";    } 

    ovviamente è più che SPARTANO.. i record li mette tutti, nelle variabili giuste..
    secondo te ci sono controindicazioni?

  10. #10
    Quote Originariamente inviata da telegio Visualizza il messaggio
    secondo te ci sono controindicazioni?
    A cosa?

    Non capisco perché hai utilizzato "data_note" per l'ordinamento.

    Quote Originariamente inviata da telegio Visualizza il messaggio
    guarda ho fatto così, semplice semplice:
    Prova a buttare quello che hai fatto e ripartire da un codice fatto così:
    codice:
    $result = /*il risultato della query*/
    $data = /*il giorno precedente al primo della settimana*/
    
    
    $events = array();
    $i = 0;
    foreach($result as $row) {
    	if($data != $row->data) {
    		$i++;
    		$events[$i] = new array();	
    	}
    	$events[$i][] = $row;
    }
    Questo codice funziona per un numero di giorni variabile.
    Experience is what you get when you don’t get what you want

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.