预订表格:从下拉列表中选择不同选项会导致价格变化 - PHP和Javascript

3
我有一个在线酒店预订系统脚本,客房价格和类型是使用php从数据库中提取的。在此系统中,我只有两个房间。其中一个可容纳最多4人,另一个可容纳最多6人。 预订表单有“从”和“到”日期,“房型”(x套房)等选项,可以从0到1进行选择,每个房间每晚价格为x 120。我还有一个选择“人数”的选项。对于最多2人的设置价格为每晚120元。每增加一个人,价格增加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">

函数检查预订表格() { var 所有房间 = 新数组();

var 总人数 = 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个回答

0

你用了一种不寻常的方式混合了PHP和HTML,也许应该使用heredoc来获得更好的代码?

你不应该发布PHP代码,因为有很多错误。嗯,为什么不尝试使用jQuery和.value()来获取输入框被点击时的值,并使用.html()更改价格呢?

对我来说,这段代码很混乱。你有这个代码的HTML输出示例吗?还有计算价格的div是什么?


谢谢您的回复,丹尼尔。问题是我并没有自己编写整个脚本,我只是试图修改它以适应我想要实现的目标。它是通过使用iframe标签集成在页面中的。 - Petra
//检查房间里有多少人,并为每个人收取额外费用 if ($_REQUEST["people"] == 3) { $Price = $Price + 20; } else if ($_REQUEST["people"] == 4) { $Price = $Price + 40; } else if ($_REQUEST["people"] == 5) { $Price = $Price + 60; } else if ($_REQUEST["people"] == 6) { $Price = $Price + 80; } - Petra
这个预订系统的演示可以在这里找到:http://www.phpjabbers.com/hotels-booking-system/index.php - Petra
那是很差的编程技术。有一个公式:price2 = (people-2)*20 => price + price2 - user753676
我没有太多编程经验 - 仍在学习,所以任何帮助和建议都非常感激。 - Petra
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接