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

Discussione: Prenotazione mysql

  1. #1

    Prenotazione mysql

    Buongiorno, sto facendo un modulo prenotazione, vorrei che una camera non fosse prenotabile alle date indicate dall'utente tipo:

    $db2->Query("SELECT * FROM carrello WHERE data_inizio>='{$datainizio}' AND data_fine<='{$datafine}' AND id_postazione={$idpostazione->id}");

    Questa query funziona se l'utente mette fettiamente la data di inizio e la data ìdi fine, ma se mette anche un numero dopo la data di inizio cmq lascia che lìutente possa prenotare, in realtà io devo far in modo che a qualsiasi data in quel range tra data di scadenza e data di inizio la stanza non è disponibile.

    Come posso modificare la query?

    grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Non ho capito.
    Tu dici: "ma se mette anche un numero dopo la data di inizio"

    vuol dire una cosa tipo questa? 12/06/2018234

    In tal caso, prima di tutto esegui un check sulle date che ricevi, verifica che siano effettivamente delle date valide.

    Poi se a prescindere dalle date inserite devi dire che non è prenotabile, che la fai a fare la query? Dì direttamente che non si può prenotare.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Non ho capito.
    Tu dici: "ma se mette anche un numero dopo la data di inizio"

    vuol dire una cosa tipo questa? 12/06/2018234

    In tal caso, prima di tutto esegui un check sulle date che ricevi, verifica che siano effettivamente delle date valide.

    Poi se a prescindere dalle date inserite devi dire che non è prenotabile, che la fai a fare la query? Dì direttamente che non si può prenotare.

    No. esempio:

    ho la camera prenotata dal 12-08-2018 al 22-08-2018

    se un utent vuol prenotare dal 13-08-2018 al 22-08-2018 riesce a prenotare, invece no, perchè la stanza è occupata

  4. #4
    ma cosa vuol dire "ma se mette anche un numero dopo la data di inizio" ? Quale numero?

  5. #5
    ho provato a fare così ma non funziona

    $db2->Query("SELECT * FROM carrello WHERE (data_inizio>=DAYOFYEAR($datainizio) AND data_fine<=DAYOFYEAR($datafine)) OR ((data_inizio > DAYOFYEAR($datainizio) AND data_fine <=DAYOFYEAR($datafine)) OR (data_inizio>=DAYOFYEAR($datainizio) AND data_fine < DAYOFYEAR($datafine)) AND id_postazione={$idpostazione->id}");

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da optime Visualizza il messaggio
    ma cosa vuol dire "ma se mette anche un numero dopo la data di inizio" ? Quale numero?
    Penso di aver capito, il "numero dopo" va tradotto con "giorno successivo".

  7. #7
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Penso di aver capito, il "numero dopo" va tradotto con "giorno successivo".
    Si, una data successiva, a me serve che anche nell'intervallo tra due date non si possa prenotare, come posso modificare la query?

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Le prenotazioni già accettate sono nella tabella "carrello"?
    In tal caso, secondo me devi girare le condizioni

    Codice PHP:
    $db2->Query("SELECT * FROM carrello WHERE data_inizio <= '{$datainizio}' AND data_fine >= '{$datafine}' AND id_postazione = {$idpostazione->id}"); 

  9. #9
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Le prenotazioni già accettate sono nella tabella "carrello"?
    In tal caso, secondo me devi girare le condizioni

    Codice PHP:
    $db2->Query("SELECT * FROM carrello WHERE data_inizio <= '{$datainizio}' AND data_fine >= '{$datafine}' AND id_postazione = {$idpostazione->id}"); 
    Ciao, grazie per la risposta, la query funziona , ha solo un problema, cerco di spiegarmi meglio

    nel db ho segnato due date: data_inizio 2018-08-05, data_fine 2018-08-22

    in queste date non deve essere prenotabile la camera, e infatti funziona, ma non deve essere prenotabile la camera nemmeno se l'utente mette questa tipologia di data:

    data_inizio: 2018-08-04 e data_fine:2018-08-15 , perchè la camera è occupata dal 5 di agosto fino al 22 di agosto, seppure il 4 è libera non è disponibile nel periodo successivo, come posso modificare la query? grazie

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Allora devi coprire tutti i casi possibili in base alla data di inizio e fine in modo distinto, non solo per intervalli.
    Ad esempio:
    ( data_inizio_pren è compresa tra inizio_occ e fine_occ OR
    data_fine_pren è compresa tra inizio_occ e fine_occ ) OR
    ( data_inizio_pren è precedente a inizio_occ AND data_fine_pren è successiva a fine_occ ) OR
    ...
    eventuali altri casi in cui la stanza non è prenotabile.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.