2013-01-10 3 views
0

J'ai deux champs, check_in et nights.Dates de réservation Disponibilité en PHP/MySQL

Les nuits comprennent la date de check_in. Donc, si un client réserve 1 nuit, il check_out le lendemain et la chambre sera alors disponible pour la réservation (sauf si réservé par quelqu'un d'autre).

Voici un exemple de dossiers couple dans ma table,

customer   room   check_in   nights 
cus1    test room  2013-01-23   2 
cus2    test room  2013-01-25   1 
cus3    test room  2013-01-26   4 

CUS3 a réservé une chambre, ils vérifieront dans la chambre 26/01/2013 et ils resteront pour 4 nuits. cela signifie que la chambre sera indisponible pour la réservation pendant cette période.

Alors, comment pourrais-je vérifier si la chambre était disponible?

la salle ne devrait être disponible que pour check_in le 2013-01-30.

Toute aide est appréciée :)

+0

Voulez-vous vérifier quand la salle sera disponible (par exemple, à partir de la date actuelle)? Ou voulez-vous vérifier si la salle est disponible pour une date donnée? –

+0

@StephenBooher Je voudrais passer une date donnée et si possible, renvoyer true si la pièce est disponible et false si la pièce n'est pas disponible. – verheesj

Répondre

0

Lorsque vous obtenez les données de la ligne à la clientèle, l'utiliser pour obtenir la date de départ:

$check_out = date('Y-m-d', strtotime($row['check_in'].' + '.$row['nights'].' days')); 
0

quelque chose comme ça,

SELECT room, 
     CASE WHEN 'dateHere' BETWEEN check_in AND check_out 
      THEN 'UNAVAILABLE' 
      ELSE 'AVAILABLE' 
     END Status 
FROM 
    (
     SELECT room, 
       check_in, 
       DATE_ADD(check_in, INTERVAL nights day) check_out 
     FROM booking 
) s 
+0

C'est presque parfait, j'ai oublié d'ajouter que je vais envoyer une date et le montant des nuits demandées. Donc, si x date est disponible avec x nombre de nuits – verheesj

+0

pourriez-vous donner un exemple? –

+0

(en utilisant mes données existantes fournies à titre d'exemple). Le client souhaite réserver une chambre et check_in le 2013-01-21, ils aimeraient rester pendant 4 jours. Ils ne devraient pas être en mesure de réserver la salle car il existe des réservations existantes dans cette gamme. – verheesj

0

Lorsque vous sélectionnez votre date d'arrivée et les nuits occupées que vous pouvez faire quelque chose comme ceci (code fictif):

$startDate='2013-01-26';//for example 
    $to_time=date("Y-m-d", strtotime("$startDate + 4 day")); 
    echo $to_time;//prints 2013-01-30 
Questions connexes