1

说实话,我对PHP一无所知,但我可以看到它的强大,我只是想学习如何控制它。我有一个三页的预订表格。第一到第二页可以正常工作,但第二到第三页不能正常工作。这是第二页的 PHP 代码 -

<?php

// Total Number of Nights Between Picked Dates

$days = (strtotime($_POST["checkoutdate"]) - strtotime($_POST["checkindate"])) / 86400 - 1;

// Extra Nightly Cost

define ("extranights", 80);
$addnights = (int)extranights * ($days - 4);

// Deposit Price Calculation

define("deposit", 370); 
$deposit = null;

if (isset($_POST["numberofpeople"])) {
$numberofpeople = intval($_POST["numberofpeople"]);
$deposit = ((int)deposit * $numberofpeople + $addnights) * 0.3;
}     

// Total Price Calculation

define("totalprice", 370);  
$result = null;

if (isset($_POST["numberofpeople"])) {
$numberofpeople = intval($_POST["numberofpeople"]);
$result = (int)totalprice * $numberofpeople + $addnights;
}     

?>

然后我在同一页面上呼应了 deposit 和 totalprice 的值

.....(确认预订)30% 定金:€ 总价:€

我一直在苦恼的是如何将存款和总价的回声值发布到第三页上。如果解决方案/答案很广泛,那么我将不得不回到绘图板并一点一点地重新开始。但这将完成表单的用户端。我不期待数据库的东西:(

4

2 回答 2

0

我建议您查看 php 会话:

你会在第 2 页做这样的事情:

<?php
  session_start();
    $deposit= $_SESSION['deposit'] = $depositVar; 
    $total = $_SESSION['total'] = $totalVar; 
  ?>

然后在第 3 页上,您可以调用如下值:\

            echo  $deposit= $_SESSION['deposit'];
               echo  $total= $_SESSION['total']

PhP 文档

于 2013-10-04T19:54:25.067 回答
0

请考虑这种替代方法的优点。您的预订表格可以使用多个“页面”设置,这些“页面”仅向用户显示为页面。

jsFiddle 示例

也就是说,对于用户来说,他/她会从一个屏幕转到下一个屏幕,但这将是由 javascript(例如 jQueryUI 选项卡)创建的一种错觉。实际上,所有字段都在相同的页面/相同的表单中,就像在 jsFiddle 中一样。然后,您可以在用户点击提交按钮时收集所有信息,并且:

  • 验证所有字段均已填写;
  • 验证字段中数据的正确格式;
  • 如果有任何问题,(1)通过alert()或 jQueryUI 对话框显示消息,以及(2)通过将用户发送回表单return false;
  • 如果没有问题,请通过以下方式提交表格:$('#IdOfForm').submit();

通过在客户端进行所有数据收集和验证,您可以大大简化您的 PHP 代码。此外,如果用户被送回完成错过的字段,他们迄今为止键入的所有数据仍然存在......

请注意,您仍然必须在 PHP 端验证数据以防止 SQL 注入。有关更多信息,请参阅本文此 SO 帖子


独立的工作代码示例:

<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />

        <style>
        </style>

        <script type="text/javascript">
            $(document).ready(function() {

                var arrFormFields = ['cn','ca','ce','cp','dd','rd'];

                $("#tabs").tabs();
                $("#theMsg").dialog({
                    autoOpen: false,
                });
                $('#doit').click(function() {
                    for (var fld in arrFormFields) {
                        if ( $('#' + arrFormFields[fld]).val() == ''){
                            console.log('Var ' +arrFormFields[fld]+ ' has value: ' + $('#'+arrFormFields[fld]).val() );
                            $('#' + arrFormFields[fld]).css({'border':'1px solid red','background':'yellow'})
                            $('#ui-id-1').trigger('click');
                            $('#' + arrFormFields[fld]).focus();
                            alert('Please complete all fields'); //For some reason the alert isn't displaying
                            return false;
                        }else{
                            //Submit form to "dothebooking.php", like this:
                            //$('#TripForm').submit();
                            $('#theMsg').html('<h2>Form was successfully submitted</h2>');
                            $('#theMsg').dialog({'title':'Notice'}).dialog('open');
                        }
                    }
                });

                $('input:text').blur(function() {
                    $("input:not(:button)").css({'border':'1px solid grey','background':'white'});
                });

            }); //END $(document).ready()

        </script>
    </head>
<body>

    <div id="tabs">
        <ul>
            <li><a href="#tabs-1">Customer Details</a></li>
            <li><a href="#tabs-2">Trip Details</a></li>
            <li><a href="#tabs-3">Trip Options</a></li>
        </ul>
        <form id='TripForm' action="dothebooking.php" method="POST">
            <div id="tabs-1">
                Customer Name: <input type='text' id="cn"><br>
                Customer Address: <input type='text' id="ca"><br>
                Customer Email: <input type='text' id="ce"><br>
                Customer Phone: <input type='text' id="cp"><br>
            </div><!-- #tabs-1 -->
            <div id="tabs-2">
                Departure Date: <input type='text' id="dd"><br>
                Return Date: <input type='text' id="rd"><br>
            </div><!-- #tabs-2 -->
            <div id="tabs-3">
                Guided Tour option <input type='checkbox' id="gt"><br>
                Presidential Suite <input type='checkbox' id="ps"><br>
                Bed and Breakfast <input type='checkbox' id="bb"><br>
                <input type='button' id="doit" value="Submit Trip"><br>
            </div><!-- #tabs-3 -->
        </form><!-- #TripForm -->
    </div><!-- #tabs -->
    <div id="theMsg"></div>

</body>
</html>

您可能也对jQuery验证插件感兴趣。

查看这些演示以快速查看/查看。

于 2013-10-07T16:54:02.673 回答