вставить одну или несколько строк из формы HTML - PullRequest
0 голосов
/ 20 апреля 2020

Я понимаю, что это может быть повторяющийся вопрос, но я не могу найти правильный ответ.

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

Таблица называется tblRoomsBooked, а поля имеют значения bookingNumber, roomID, roomRate и depositRate. У таблицы есть собственный уникальный первичный ключ roomBookedID, который автоматически увеличивается.

У нас есть форма HTML для бронирования номеров, которые мы нанимаем. Есть четыре комнаты, которые можно арендовать в любой комбинации. В каждом номере есть свой ID, стоимость аренды и требуемая сумма депозита. Так, например, если одна комната была забронирована с депозитом, должна быть вставлена ​​одна запись, состоящая из номера бронирования, идентификатора комнаты, стоимости комнаты и ее депозита. Если нужно было арендовать три комнаты, необходимо вставить три отдельные записи, каждая запись будет содержать идентификатор комнаты, стоимость комнаты и залог за каждую забронированную комнату, но все комнаты, забронированные за один раз, будут иметь одинаковый номер бронирования.

Код SQL:

$bookingNumber = ($_POST['bookingNumber']);
$roomID = ($_POST['roomID']);
$roomRate = ($_POST['roomRate']);
$depositRate = ($_POST['depositRate']);

$RoomsBooked = "INSERT INTO tblRoomsBooked (bookingNumber, roomID, roomRate, depositRate) VALUES ('$bookingNumber', '$roomID', '$roomRate', '$depositRate')";

Если я использую $ RoomsBooked = "INSERT INTO tblRoomsBooked (bookingNumber, roomID, roomRate, depositRate) VALUES ('$bookingNumber', '$roomID', '$roomRate', '$depositRate'), ('$bookingNumber', '$roomID', '$roomRate', '$depositRate'). ('$bookingNumber', '$roomID', '$roomRate', '$depositRate'), ('$bookingNumber', '$roomID', '$roomRate', '$depositRate')";, как я читал в другом месте здесь, он просто создает четыре строки с одинаковыми данными, независимо от комбинации Выбранные комнаты.

Комнаты выбираются с помощью флажков ...

<input type="checkbox" class="checkboxMargins" id="meetingRoom" name="roomID" value="1" onClick="Check();">
<input type="checkbox" class="checkboxMargins" id="library" name="roomID" value="2" onClick="Check();">
<input type="checkbox" class="checkboxMargins" id="jajRoom" name="roomID" value="3" onClick="Check();">
<input type="checkbox" class="checkboxMargins" id="annex" name="roomID" value="4" onClick="Check();">

Когда флажок установлен, некоторые сценарии JQuery от JonoJames можно найти здесь Выходные данные из MYSQL ... используются для заполнения скрытых полей ввода для стоимости комнаты.

Я пытался использовать name="roomID[], но это выдает ошибку относительно массивов и не нравится заявление INSERT.

Все это прекрасно работает при бронировании одного номера, просто если забронировано более одного, я не могу работать.

Я думаю, что мне нужно используйте for или foreach но exa Здесь приведены примеры, которые не показывают, как взять данные из формы и вставить их в таблицу.

Что мне нужно знать, так это если for или foreach - это путь к go что делать и как им пользоваться. Если нет, что мне нужно делать?

1 Ответ

0 голосов
/ 20 апреля 2020

Поскольку вы не предоставили никакой информации о коде HTML, действительно трудно понять процесс бронирования.

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

Каждый объект должен содержать ваши необходимые данные, номер комнаты, номер комнаты, депозит и многое другое. Как вы сказали, да, можно выполнить l oop через этот массив, а затем вставить каждое резервирование в базу данных.

Ошибка, которую вы получаете, состоит в том, что вы вставляете одни и те же данные снова и снова, потому что вы Не набирайте oop или не правильно получили ваше следующее бронирование. Если вы поделитесь больше кода, мы можем посмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...