Member 13209355 Ответов: 2

Система бронирования отелей (наличие свободных номеров)


Я делаю систему бронирования отелей. У меня есть 15 кнопок, представляющих каждую комнату. После того, как дата была выбрана, если номер был забронирован, то мне нужно, чтобы кнопка с номером номера на ней стала красной и не могла быть выбрана. Однако мне также нужно, чтобы кнопка была красной со временем между датой входа и датой выхода.

Таким образом, в принципе, мне нужно найти базу данных доступа с выбранной датой, которая превращает кнопку в красный цвет с тем же номером, что и номер номера в базе данных, и не позволяет забронировать номер между датой входа и датой выхода.

Я понятия не имею, с чего начать, так как я довольно новичок в программировании.

Что я уже пробовал:

Я пробовал это, но это далеко не то, что мне нужно.
Dim BookingFound As String = False
      MyConn = New OleDbConnection

      MyConn.ConnectionString = connString
      MyConn.Open()

      str1 = ("SELECT * FROM [BookingInformation] WHERE [Date In] = #" & dtpDateIn.Value.Date & "#")

      Dim cmd1 As OleDbCommand = New OleDbCommand(str1, MyConn)
      dr = cmd1.ExecuteReader

      While dr.Read()
          BookingFound = True

          strDateOut = dr("Date Out").ToString
          strDateIn = dr("Date In").ToString
          strRoomNumber = dr("Room Number").ToString

          If BookingFound = True Then

          End If


      End While
      MyConn.Close()
  End Sub

2 Ответов

Рейтинг:
0
Рейтинг:
0

Patrice T

Цитата:
если номер был забронирован, то мне нужно, чтобы кнопка с номером номера на ней стала красной и не могла быть выбрана. Однако мне также нужно, чтобы кнопка была красной со временем между датой входа и датой выхода.

Похоже, в вашем заявлении не хватает чего-то важного.
Скажем, в субботу забронированы номера с 1 по 10, а в воскресенье-номера с 10 по 15.
С вашим заявлением вы не можете забронировать номер на эти 2 дня, потому что в течение этого периода нет свободных номеров.
Решение, которого вам не хватает, - это возможность перенести бронирование в воскресенье в другой номер, что освобождает номер на эти 2 дня.
При проживании более 2 ночей вам, возможно, придется перенести больше бронирований, чтобы освободить номер в течение этого периода.
----
str1 = ("SELECT * FROM [BookingInformation] WHERE [Date In] = #" & dtpDateIn.Value.Date & "#")

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL Injection-руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL-OWASP[^]