Значения из динамически заполненных полей ввода не публикуются в базе данных - PullRequest
0 голосов
/ 04 мая 2020

У меня есть некоторые сценарии, которые добавляют значения в скрытые поля ввода в зависимости от выбора пользователя. Проблема в том, что значения не публикуются в базе данных. Это не дубликат других вопросов, поскольку он получает данные из базы данных 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

Как исправить форму для отправки соответствующих значений?

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