Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: eventi con più giorni

  1. #1
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228

    eventi con più giorni

    Ciao a tutti, sto realizzando un sistema di gestione eventi che permette di inserire un po' di appuntamenti.
    Il problema è che un appuntamento potrebbe durare più giorni (una mostra per esempio o un film al cinema)

    Al momento l'utente inserisce una data di inizio ed una di fine.

    es della tabella:
    codice:
    evento -   inizio    -    fine
      A    - 2011-04-19  - 2011-04-20
      B    - 2011-04-19  - 2011-04-19
      C    - 2011-04-19  - 2011-04-19
      D    - 2011-04-20  - 2011-04-21
      E    - 2011-04-21  - 2011-04-24
    Dovrei permettere di visualizzare una agenda che mi dica:

    Martedì 19 aprile
    - evento A
    - evento B
    - evento C
    Mercoledì 20 aprile
    - evento A
    - evento D
    Giovedì 21 aprile
    - evento D
    - evento E
    ecc...

    avete qualche idea?

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    SELECT * FROM tabella WHERE inizio<=$datadacontrollare AND fine>=$datadacontrollare

  3. #3
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    mmm $datadacontrollare ?

    io la query attualmente ce l'ho così:
    codice:
    SELECT * FROM tabella WHERE fine>CURDATE() -1 ORDER BY inizio ASC, id ASC LIMIT 0,7
    questa mi mostra i primi 7 eventi in agenda, ma compaiono così:

    Martedì 19 aprile
    - evento A
    - evento B
    - evento C
    Mercoledì 20 aprile
    - evento D
    Giovedì 21 aprile
    - evento E

    Non compaiono cioè i giorni in cui un evento è effettivamente presente (nell'esempio l'evento A dovrebbe comparire anche il 20 aprile)

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    certo perchè CURDATE ti da la data del server sql (che presubibilmente sarà la data di oggi)

  5. #5
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    esatto, ma la query deve essere:
    mostra i primi 7 eventi la cui data di fine è maggiore a ieri (in pratica è almeno oggi, questo per evitare problemi sull'ora); in questo caso CURDATE -1 è ieri appunto.

    la query funziona, ma non mi mostra i record "duplicati".

    Come detto se un evento dura più giorni me lo deve mostrare per più giorni (durante il tempo che va appunto dalla data di inizio a quella di fine)

    Io tramite PHP riesco a mostrarlo più volte contando i giorni, ma non mi permette una classificazione per giorno, ma solo una visualizzazione molteplice dello stesso record (usando for $i=0; $i<=$giorni; $i++)

    La visualizzazione però è sbagliata:

    Martedì 19 aprile
    - evento A
    - evento A
    - evento B
    - evento C
    Mercoledì 20 aprile
    - evento D <<< qui doveva esserci prima l'evento A

    Attenzione perché non so quando sono programmati gli eventi. Quindi è possibile che il primo evento in programma sia tra 2 giorni e non oggi

  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    si ma una query singola ti tira su una riga al più una volta

    secondo me devi fare una query per ogni giorno
    una per il 19 aprile, una per il 20 etc etc
    per questo avevo messo $datadacontrollare

  7. #7
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    non funziona comunque...

    anche impostando manualmente la data non funziona... non capisco perché
    la query:
    SELECT * FROM tabella WHERE inizio <= '2011-04-19' AND fine >= '2011-04-19'
    restituisce 0 righe

    questa:
    SELECT * FROM tabella WHERE fine >= '2011-04-19'
    restituisce 5 record (correttamente)

  8. #8
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    o meglio...
    il sistema sembra funzionare se ci sono eventi che durano più di un giorno. Nonostante ci sia <= e >= nella query gli eventi che durano 1 giorno non sono mostrati.

    Stesso risultato usando la query
    SELECT * FROM tabella WHERE '$data' BETWEEN inizio AND fine

  9. #9
    Originariamente inviato da Scream
    il sistema sembra funzionare se ci sono eventi che durano più di un giorno. Nonostante ci sia <= e >= nella query gli eventi che durano 1 giorno non sono mostrati.

    Stesso risultato usando la query
    SELECT * FROM tabella WHERE '$data' BETWEEN inizio AND fine
    Nella SELECT prova a mettere le parentesi () alla condizione e le && al posto di AND.
    .: Teju.it - Una vita da raccontare
    .: 8s8.it - Wordpress gratis per tutti
    .: Vado.li - Accorcia URL

  10. #10
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    ??? no, con && non funziona, ma in mySQL l'and è dato da AND

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.