Бронирование мест в автобусах PHP и MySQL

0

У меня есть другой случай.
Я получил автобус на 27 мест
то, если люди выбирают место 4, так что никто не может занять это место 4.

мой вопрос:

  • как база данных проекта содержит 27 мест? Я предполагаю, используя цикл до 27 с PHP
  • Как показать форму, форму выбора содержать незарегистрированное место?
  • Как предотвратить, если другие люди занимают одно и то же место?

спасибо.

  • 1
    Ммм, это очень простые и в то же время очень сложные вопросы. Может быть, сначала сосредоточиться на дизайне базы данных. (Вероятно, у вас будут не только места, но и несколько автобусов).
Теги:

5 ответов

1

База данных: Введите таблицу BusType со свойствами, которые будут включать количество мест, стоимость и т.д. У вас есть таблица BusBookedSeats, которая будет связывать FK с рассматриваемой шиной и сохранить общее количество оставшихся и/или зарезервированных мест.

Форма: Запросите базу данных и укажите количество мест - количество забронированных мест. Добавьте дальнейшую проверку, чтобы показать местоположение места.

Профилактика: Если запрос возвращает значение больше 0 (значение, принятое в этом случае), предупредите пользователя о том, что оно было принято, и сообщите им, чтобы они заняли другое место. Или даже не показывайте место для них.

0

База данных лежит в Sane, предположил, это хорошая идея. Прекратить дублирование заказов действительно не так сложно - вам просто нужно выбрать метод.

  • Система очереди. Когда люди заказывают, вы добавили их в хвост очереди, а затем разделили script, чтобы вытащить людей из головы. Затем вы сможете оценивать каждый заказ в устойчивом темпе, один за другим.

  • Уровень базы данных. Если вы собираетесь использовать MySQL, вам будет лучше использовать такой движок, как InnoDB, который поддерживает транзакции (введение: http://www.databasejournal.com/features/mysql/article.php/3382171/Transactions-in-MySQL.htm)

0

С точки зрения DB, исходя из того, что я понимаю ваши требования, я бы предложил что-то в этих строках: -

  • Таблица шин - содержит запись для каждой отдельной шины. Имеет столбец, обозначающий пропускную способность этой шины.

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

  • Таблица BusUser - таблица транзакций, содержащая запись для места на шине, например: если в шине X имеется 27 = посадочная способность, эта таблица будет содержать 27 записей - каждая с соответствующим номером места, связанным с ней.

С точки зрения пользовательского интерфейса вы показываете содержимое пользователя шины. Когда пользователь выбирает одну из записей в пользовательском интерфейсе, вы связываете пользователя с этой записью в таблице BusUser. BusUser - будет иметь столбец, указывающий пользователя, связанного с этим экземпляром шины.

Это общая идея. Надеюсь, что дадут некоторые указания для вас, чтобы начать...

0

Для вашей базы данных:

  • У вас есть таблица с шинами и номерами доступных мест.
  • У вас есть таблица для бронирования
  • У вас есть таблица, которая имеет отношение к резервированию на конкретном месте на определенной шине.

Как показать имеющиеся места:

  • Сделайте запрос для всех зарезервированных мест
  • Нарисуйте изображение автобуса и отметьте все зарезервированные места.

Как предотвратить двойное резервирование: Вам нужна какая-то процедура транзакций, но трудно сказать, когда нужно запереть сиденье и когда его разблокировать (например, пользователь не отвечает в течение некоторого времени). Обычно вы резервируете его только на последнем шаге. Поэтому убедитесь, что у вас не слишком много шагов или выбор является одним из последних шагов, вы уменьшаете количество конфликтов.

Это действительно только некоторые очень простые советы, но вся проблема слишком сложна, чтобы кратко описать ее. Если у вас есть какие-то конкретные вопросы, вы можете захотеть их отдельно.

0

Убедитесь, что у вас есть какой-то первичный ключ, который включает время выхода шины и т.д. вместе с уникальным идентификатором для каждой шины (составной первичный ключ). У вас может быть только уникальный идентификатор шины, так как это ограничит каждую шину только поездкой:)

27 мест автобуса, которые, как мне кажется, должны обрабатываться вашим приложением. Возможно, сначала вставьте 27 строк для каждой шины и обновите, когда кто-то закажет место. Таким образом, вы можете позволить пользователю, возможно, выбрать, какое место они хотят. (Должно быть сделано из вашего графического интерфейса).

Конечно, у вас должен быть статус для каждого места, которое вы можете использовать, чтобы узнать, зарезервировано оно или нет.

Это ОЧЕНЬ основная идея, и я не включил никаких диаграмм или чего-либо подобного. Надеюсь, я не испортил вашу возможность самостоятельно создать базу данных:)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню