У меня есть некоторые сценарии, которые добавляют значения в скрытые поля ввода в зависимости от выбора пользователя. Проблема в том, что значения не публикуются в базе данных. Это не дубликат других вопросов, поскольку он получает данные из базы данных MySQL, а затем использует JavaScript для заполнения значений в полях ввода, которые используют php для отправки данных в базу данных.
Сценарий получает свои данные, используя:
// Rooms Booked
$roomRateSQL = "SELECT * FROM tblRoomRates";
$result = $lettings->query($roomRateSQL);
// Script for Room Costs and Deposits Required (Part 1). Created by JonoJames at StackOverflow 'https://stackoverflow.com/questions/58941437/output-data-from-mysql-table-into-html-form-depending-on-user-choice'
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
// echo " RoomID: " . $row["roomID"] . " - Anon Rate: " . $row["reducedRate"] . " - Std Rate: " . $row["standardRate"] . " - Dep Rate: " . $row["depositRate"] . "<br>";
// data you want to send to json
$data[] = array(
'roomID' => $row['roomID'],
'standardRate' => $row['standardRate'],
'reducedRate' => $row['reducedRate'],
'depositRate' => $row['depositRate'],
'reducedDepositRate' => $row['reducedDepositRate']
);
//}
}
} else {
echo "0 results";
}
Клерк использует флажок в форме HTML, чтобы выбрать арендуемую комнату (всего четыре комнаты. Я только что показал один пример ):
<label class="control-label">Meeting Room</label>
<input type="checkbox" class="checkboxMargins" id="meetingRoom" name="roomID" value="1" onClick="Check();">
...
применяется ли «пониженная» ставка:
<label class="control-label" for="anonGroup">Anon Group</label>
<input type="checkbox" class="form-control" name="anonGroup" value="1" onClick="Check()">
и требуется ли депозит:
<label class="control-label">Deposit Required?</label>
<input type="checkbox" class="checkboxMargins" name="depositRequired" value="1" onClick="Check();">
В зависимости от После выбора сценария для получения правильных данных:
<!--Script for Room Costs and Deposits Required (Part 2). Created by JonoJames 'https://stackoverflow.com/questions/58941437/output-data-from-mysql-table-into-html-form-depending-on-user-choice'. Added to by trincot 'https://stackoverflow.com/questions/59129273/output-two-pieces-of-data-if-both-statements-are-true' and Sankhavaram Saitulasiram 'https://stackoverflow.com/questions/60988335/if-checkbox-checked-use-a-different-output' all at stackoverflow 'https://stackoverflow.com/'-->
<script type="text/javascript">
var Rooms = JSON.parse('<?php print_r($json_data) ; ?>');
var frm = document.forms["bookingForm"];
function Check() {
// Meeting Room
if (frm.meetingRoom.checked){
if (frm.anonGroup.checked){
frm.meetingRoomCost.value = Rooms[0].reducedRate;
if (frm.depositRequired.checked){
frm.meetingRoomDeposit.value = Rooms[0].reducedDepositRate;
} else {
frm.meetingRoomDeposit.value = '0';
}
} else {
frm.meetingRoomCost.value = Rooms[0].standardRate;
if (frm.depositRequired.checked){
frm.meetingRoomDeposit.value = Rooms[0].depositRate;
} else {
frm.meetingRoomDeposit.value = '0';
}
}
} else {
frm.meetingRoomCost.value = '';
}
...
Затем заполняются значения для соответствующих полей ввода:
<input type="hidden" id="meetingRoomCost" name="roomRate" placeholder="Meeting Room Cost">
<input type="hidden" id="meetingRoomDeposit" name="depositRate" placeholder="Meeting Room Deposit">
...
Форма отправлена:
// Insert Rooms Booked
$bookingNumber = ($_POST['bookingNumber']);
$roomID = ($_POST['roomID']);
$roomRate = ($_POST['roomRate']);
$depositRate = isset($_POST['depositRequired']) ? ($_POST['depositRate']) : '0';
$RoomsBooked = "INSERT INTO tblRoomsBooked
(bookingNumber, roomID, roomRate, depositRate)
VALUES ('$bookingNumber', '$roomID', '$roomRate', '$depositRate')";
Однако, если клерк выбирает показанную комнату и выбирает залог, значения не отправляются и выдает эту ошибку:
Ошибка: INSERT INTO tblRoomsBooked (bookingNumber, roomID, roomRate, depositRate) ЗНАЧЕНИЯ ('COT / 0520/01', '1', '', ''): - Неправильное целочисленное значение: '' для столбца roomRate в строке 1
Как исправить форму для отправки соответствующих значений?