Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [MYSQL] controllo date già prenotate

    Salve a tutti!
    Sto cercando di creare una query che controlli che il periodo da me immesso non sia sovrapposto ad uno già presente nel database.

    MI spiego meglio.
    Ipotizziamo che sul database ho una tabelal del genere

    db_inizio | db_fine
    2006-01-03 | 2006-01-10
    2006-01-15 | 2006-01-20

    quando inserisco un nuovo periodo devo conrollare che questo non sia compreso negli altri e che quelli nel database non siano compresi in esso.

    ad esempio:
    2006-01-04 2006-01-12 non va bene perchè il 4 gennaio è compreso nel primo record.

    2006-01-02 2006-01-11 non va bene perchè quei giorni sono già occupati dalla pernotazione nel primo record.

    In partciolare mi servirebbe una funzione che mi fa capire facilmente se la data che voglio inserire e' corretta o no.

    come condizione avevo pensato ad una cosa del geneer:
    Codice PHP:
    WHERE (db_inizio BETWEEN '$add_inizio' AND '$add_fine') OR (db_fine BETWEEN '$add_inizio' AND '$add_fine'
    non sembra funzionare e cmq è incompleta perchè controllerebbe solo se il periodo del database è compreso in quello che sto cercado di inserire.

    Spero che qualcuno riesca ad aiutarmi.

    GRazie mille in anticipo a tutti
    Ciao

  2. #2
    Membro Junior
    Registrato dal
    Dec 2005
    Messaggi
    44
    Ti posto al volo parte di una query che ho usato su un sito di prenotazioni alberghiere. Spero ti possa essere utile come spunto

    SELECT * FROM qCamereDisponibilita WHERE (db_fine < dataInizio OR db_fine IS NULL) AND (db_inizio > dataFine OR db_inizio IS NULL)

  3. #3
    grazie per la risposta.
    ci sto pensando su ma così sembra non funzionare nel mio caso.
    Qualche atro suggerimento?

  4. #4
    Membro Junior
    Registrato dal
    Dec 2005
    Messaggi
    44
    Originariamente inviato da LoRdCoStE
    grazie per la risposta.
    ci sto pensando su ma così sembra non funzionare nel mio caso.
    Qualche atro suggerimento?
    Non voglio insistere, ma credo che invece faccia al caso tuo.
    La query che ho indicato puoi benissimo usarla nella funzione.

    con mysql_num_rows() controlli che la query restituisca 0.
    In questo caso il periodo da te inserito è corretto, altrimenti no.

  5. #5
    penso di aver capito perchè non funzionava, praticamente le date nel database erano nel formato giusto anno-mese-giorno mentre quella che devo controllare no, avevo dimenticato di "girarla" nelf ormato giusto :rollo:

    Ho risolto modificando un po' al tua:

    Codice PHP:
    SELECT FROM prenotazioni
                WHERE 
    ((fine '$add_inizio') AND (inizio '$add_fine')) AND (id_tipo='$add_stanza')"; 

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.