1

正直なところ、PHP に関してはまったく手がかりがありませんが、PHP の威力はわかります。それを制御する方法を学びたいだけです。3ページの予約フォームがあります。1 ~ 2 ページは機能していますが、2 ~ 3 ページは機能していません。2ページ目の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% デポジット : € 総額 : €

私が頭を悩ませているのは、deposit と totalprice のエコーされた値を 3 番目のページにどのように掲載するかということです。解決策/答えが広範である場合は、最初からやり直して、少しずつやり直す必要があります。しかし、これでフォームのユーザー側が完成します。私はデータベースのものを楽しみにしていません:(

4

2 に答える 2

0

この代替アプローチの利点を考慮してください。予約フォームは、ユーザーにはページとしてのみ表示される複数の「ページ」を使用してセットアップできます。

jsFiddle の例

つまり、ユーザーにとっては、ある画面から次の画面に移動することになりますが、それは javascript (jQueryUI タブなど) によって作成された錯覚にすぎません。実際には、jsFiddle のように、すべてのフィールドが同じページ/同じフォームにあります。次に、ユーザーが送信ボタンを押したときにすべての情報を収集できます。

  • すべてのフィールドが入力されていることを確認します。
  • フィールド内のデータの正しい形式を確認します。
  • 何か問題がある場合は、(1)alert()または jQueryUI ダイアログを介してメッセージを表示し、(2) を介してユーザーをフォームに送り返します。return false;
  • 問題がなければ、次の方法でフォームを送信してください。$('#IdOfForm').submit();

すべてのデータ収集と検証をクライアント側で行うことにより、PHP コードを大幅に簡素化できます。また、ユーザーが見逃したフィールドを完了するために送り返された場合、それまでに入力したすべてのデータがまだそこにあります...

SQL インジェクションを防ぐために、PHP 側でデータを検証する必要があることに注意してください。詳細については、この記事この 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 に答える
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 に答える