PHP - 跨多个表单页面发布数据

时间:2013-10-04 19:47:26

标签: php forms post

说实话,我对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;
}     

?>

然后我在同一页面上回复了存款和总价的价值

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

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

2 个答案:

答案 0 :(得分:0)

我建议你看一下php session:

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

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

然后在第3页上你可以调用这样的值:\

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

PhP Documentation

答案 1 :(得分:0)

请考虑这种替代方法的优势。您的预订表格可以使用多个&#34;页面&#34;进行设置,只显示为用户的页面。

jsFiddle example

也就是说,对于用户来说,他/她将从一个屏幕进入下一个屏幕,但这将是由javascript(例如jQueryUI Tabs)创建的错觉。实际上,所有字段都在相同的页面/相同的形式中,就像在jsFiddle中一样。然后,当用户点击“提交”按钮时,您可以收集所有信息:

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

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

请注意,您仍必须验证PHP端的数据以防止SQL注入。 See this articlethis SO Post了解详情。


独立,有效的代码示例:

<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 validation plugin感兴趣。

Check out these demos快速查看/看。