форма бронирования: Изменение цены при выборе другого варианта из выпадающего списка — PHP и Javascript

#php #javascript

#php #javascript

Вопрос:

У меня есть скрипт системы онлайн-бронирования отелей, где цены на номера и типы номеров извлекаются из базы данных с использованием php. У меня есть только 2 номера в этой системе. Один вмещает до 4 человек, другой — до 6. В форме бронирования указаны даты От и до, тип номера (x suite), которые можно выбрать от 0 до 1, за которыми следует цена x 120 за номер в сутки. У меня также есть возможность выбрать количество человек. Установлена цена 120 за номер в сутки для размещения до 2 человек. За каждого дополнительного человека к цене добавляется 20. таким образом, если в номере 3 человека, цена будет 140. Я пытался заставить это работать сам, но я просто не могу изменить цену в зависимости от количества выбранных людей. Код для выбора тега для людей выглядит следующим образом:

 <select name="people" class="FormFields" onChange="checkBookingForm()" style="width:70px">
        <?php for ($i=1; $i<=$SETTINGS["room_people"]; $i  ) {
                if ($i==$_REQUEST["people"]) {
                    $selected='selected';
                    }
                    else { 
                    $selected='';
                    }
        ?>
        <option value="<?php echo $i; ?>" <?php echo $selected; ?>><?php echo $i; ?></option>
        <?php }; ?>
        </select>
  

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

 <script language="javascript" type="text/javascript">
  

функция checkBookingForm() {
var allRooms=новый массив();

var totalPeople = 0;

 for(i=0; i<document.NewBookingFrm.elements.length; i  ) {
    if(document.NewBookingFrm.elements[i].type=="select-one") {
        name_t = document.NewBookingFrm.elements[i].name;
        if (name_t!=='people') {
            value_t = document.NewBookingFrm.elements[i].value;
            totalPeople = parseInt(allRooms[name_t]) * parseInt(value_t)   totalPeople;
        }
    }
}

if (totalPeople==1) {
    var acP = 'person';
} else {
    var acP = 'people';
};


if (totalPeople!=document.NewBookingFrm.people.value) {
    totalPeople = '<strong style="color:red; font-size:14px">' totalPeople '</strong>'
}

document.getElementById('PeopleAccommodate').innerHTML = 'selected room(s) can accommodate '   totalPeople   ' '   acP;
  

}

Я пробовал разные вещи, но поскольку я одновременно изучаю Javascript, у меня ничего не получается. Я все еще пытаюсь понять, как работает DOm. Если кто-нибудь может указать мне правильное направление, я был бы очень признателен. Я понимаю, что я должен делать с кодом:

  1. сначала проверьте, сколько человек выбрано
  2. затем проверьте, выбран ли какой-либо из номеров (если значение равно 1)
  3. и если выбран один номер, соответственно увеличьте цену или уменьшите ее.

для количества доступных номеров у меня в настоящее время есть этот код:

  <select name="room_<?php echo ReadFromDB($row["id"]); ?>" class="FormFields" onChange="checkBookingForm()" style="width:70px">
    <option value="0">0</option>
    <?php for ($i=1; $i<=$available_rooms; $i  ) {
        if ($i==$booked_rooms["quantity"]) $selected=' selected'; else $selected='';
    ?>
    <option value="<?php echo $i; ?>"<?php echo $selected; ?>><?php echo $i; ?></option>
    <?php }; ?>
    </select>
    x
  

«>

ссылка на более полный код:http://jsfiddle.net/x6ZYB

Ответ №1:

ну, вы необычно смешиваете php и html, может быть, вам следует использовать heredoc для лучшего кода?

ну, вам не следует публиковать php-код, там много ошибок, хм, почему бы не попытаться получить с помощью jquery и .value() значение входных данных при нажатии на них и изменить цену с помощью .html() ?

ну, код для меня беспорядочный, у вас есть HTML-вывод этого в качестве примера? а также div, где написана цена, которая рассчитывается?

Комментарии:

1. Спасибо за ваш ответ, Дэниел. дело в том, что я не кодировал весь скрипт сам, я просто пытаюсь модифицировать его в соответствии с тем, чего я хочу достичь. он интегрирован в страницу с помощью тега iframe.

2. ну, iframes. их можно заменить div и .load() с помощью jquery, чтобы вы могли получить доступ к содержимому div с помощью javascript, в то время как вы не можете получить доступ к iframe с помощью javascript.

3. часть, которую я добавил, заключается в следующем: // проверка того, сколько человек будет в номере, и взимание дополнительной платы за каждого человека, если ($ _REQUEST [«people»] == 3) { $ Price = $ Price 20; } else if ($_REQUEST [«people»] == 4) { $ Price = $ Price 40; } else if ($ _REQUEST [«people»] == 5) { $ Price = $ Price 60; } else если ($_REQUEST[«люди»] == 6) { $Price = $Price 80; }

4. демонстрационную версию этой системы бронирования можно найти здесь phpjabbers.com/hotels-booking-system/index.php

5. ну, это плохая техника программирования, есть такая формула: price2 = (people-2)* 20 => цена price2