【问题标题】:booking form:Price change on selecting different option from dropdown list - PHP and Javascript预订表格:从下拉列表中选择不同选项的价格变化 - PHP 和 Javascript
【发布时间】:2011-05-12 16:18:50
【问题描述】:

我有在线酒店预订系统脚本,其中房间价格和房间类型是使用 php 从数据库中提取的。我在这个系统中只有 2 个房间。一间最多可容纳 4 人,另一间最多可容纳 6 人。 预订表格有FromTo日期,房间类型(x套房),可以从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/

【问题讨论】:

    标签: php javascript


    【解决方案1】:

    你以一种不同寻常的方式混合 php 和 html 你应该使用heredoc来获得更好的代码吗?

    你不应该发布 php 代码 有很多错误 嗯,为什么不尝试使用 jquery 和 .value() 获取单击时输入的值并使用 .html() 更改价格?

    代码对我来说是一团糟 你有这个的html输出作为例子吗? 还有写价格的那个div是计算出来的?

    【讨论】:

    • 感谢您的回复 Daniel。问题是我自己没有编写整个脚本,我只是想修改它以适应我想要实现的目标。它通过使用 iframe 标签集成到一个页面中。
    • 好吧,iframe。这些可以用 div 和 .load() 与 jquery 替换,因此您可以使用 javascript 访问 div 的内容,而无法使用 javascript 访问 iframe。
    • 我添加的部分是: //检查一个房间里有多少人,并为每个人收取额外费用 if ($_REQUEST["people"] == 3) { $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; }
    • 这个预订系统的演示可以在这里找到phpjabbers.com/hotels-booking-system/index.php
    • 好吧,这是一种糟糕的编程技术,有一个公式:price2 =(people-2)*20 => price + price2
    猜你喜欢
    • 2023-03-08
    • 2020-03-02
    • 1970-01-01
    • 2019-07-24
    • 2013-07-29
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多