2

正直なところ、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;
}     

?>

次に、同じページで預金と合計価格の値をエコーし​​ました

<table>
<tr>
                <td width="573" height="30" align="right" valign="bottom" style="color:#0099FF;">( confirm reservation ) 30% Deposit :</td>
                <td width="158" align="left" valign="bottom" style="color:#0099FF; font-size:1.8em; line-height:23px;">&#8364;<?php echo $deposit; ?></td>
              </tr>

              <tr>
                <td height="30" align="right" valign="bottom" style="color:#0099FF;">Total Price :</td>
                <td align="left" valign="bottom" style="color:#0099FF; font-size:1.8em; line-height:23px;">&#8364;<?php echo $result; ?></td>
              </tr>
<td width="131" align="right" valign="middle" style="color:#000;"><input type="submit" name="submit" id="formbtn" value="CONTINUE" /></td>
</table>

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

4

3 に答える 3

3

または意図したものを使用してください:

<input type="hidden" name="deposit" value="$deposit" />
于 2013-10-04T20:44:22.023 に答える
0

計算された値を含むいくつかの隠しフィールドをページ 2 に含めます。

....
<input type="text" name="deposit" value="$deposit" style="display:none" />
...
<input type="text" name="result" value="$result" style="display:none" />

$_POST値は、配列の 3 ページ目に表示されます。

于 2013-10-04T20:21:19.620 に答える
0

この例では、動的なフォーム処理と get all parameters による送信のために php と js(AJAX) を組み合わせています。おそらく、時間を節約できます。ただし、必要に応じて変更する必要があります。

<table ALIGN="CENTER">
<table>
                    <?php  foreach ($chunkIt[1] as $k => $v){ ?>
                        <tr>    
                            <td width="150" height="" align="right" valign="middle" id='celda_interna_dealer'><strong><span id='texter1'><?php echo $v; ?></span></strong></td>

                        <?php if($arrD[$i] != 0){   ?>      
                            <td width="208" height="" align="left" valign="middle" id="celda_interna"><span id="texter1"><div id="ck-button"><label><input type="checkbox" name="<?php echo "status".$k; ?>" id="<?php echo "status".$k; ?>" value="<?php echo "status".$k; ?>" checked="yes"><span onclick="this.firstChild.data = this.firstChild.data == 'Des' ? 'Act' : 'Des'">Act</span></label></div></span></td>
                        <?php }else{ ?>
                            <td width="208" height="" align="left" valign="middle" id="celda_interna"><span id="texter1"><div id="ck-button"><label><input type="checkbox" name="<?php echo "status".$k; ?>"  id="<?php echo "status".$k; ?>" value="<?php echo "status".$k; ?>" ><span onclick="this.firstChild.data = this.firstChild.data == 'Des' ? 'Act' : 'Des'">Des</span></label></div></span></td> 
                        <?php } ?>
                        </tr>
                        <?php $i++; } ?>

                </table>
                </td>
                <td>
                <table ALIGN="CENTER">
                    <?php  foreach ($chunkIt[2] as $k => $v){ ?>
                        <tr>    <!-- ESTA PRIMERA LINEA ES SIEMPRE LA MISMA -->
                            <td width="150" height="" align="right" valign="middle" id='celda_interna_dealer'><strong><span id='texter1'><?php echo $v; ?></span></strong></td>

                        <?php if($arrD[$i] != 0){   ?>      
                            <td width="208" height="" align="left" valign="middle" id="celda_interna"><span id="texter1"><div id="ck-button"><label><input type="checkbox" name="<?php echo "status".$k; ?>" id="<?php echo "status".$k; ?>" value="<?php echo "status".$k; ?>" checked="yes"><span onclick="this.firstChild.data = this.firstChild.data == 'Des' ? 'Act' : 'Des'">Act</span></label></div></span></td>
                        <?php }else{ ?>
                            <td width="208" height="" align="left" valign="middle" id="celda_interna"><span id="texter1"><div id="ck-button"><label><input type="checkbox" name="<?php echo "status".$k; ?>"  id="<?php echo "status".$k; ?>" value="<?php echo "status".$k; ?>" ><span onclick="this.firstChild.data = this.firstChild.data == 'Des' ? 'Act' : 'Des'">Des</span></label></div></span></td> 
                        <?php } ?>
                        </tr>
                        <?php $i++; } ?>
                </table>
                </td>
                </tr>
                        <tr>
                            <td  colspan="3" align="center" valign="middle" id='celda_interna' height="31">
                                <input type="button" value="<?php echo $confirm_btn; ?>" onclick="Aj();"></input> 
                                <input type="hidden" name="status_count" id="status_count" value="<?php echo $i; ?>" > <!-- --> </input>
                            </td>
                        </tr>

            </table>

// UR データを JS VARS に保存し、DB にダンプする関数を作成する

                                var laVar = null;
                                function Aj() {


                                    var i = 0,
                                        input;

                                    var ar = [];

                                    while (input = document.getElementsByTagName('input')[i++]) {

                                        if (input.id.match(/^status([0-9]+)$/)) {

                                            ar.push(input.id);

                                        }
                                    }


                                    var status_count_demo = document.getElementById('status_count').value;

                                    var status_count = status_count_demo - 1;


                                    i = 0;

                                    var ar3 = new Array();

                                    while (i <= status_count) {

                                        var campo = document.getElementById(ar[i]).checked;

                                        if (campo === true) {


                                            ar3[ar[i]] = 1;

                                        } else {

                                            ar3[ar[i]] = 0;

                                        }
                                        i++;
                                    }


                                    function url(data) {

                                        var ret = [];

                                        for (var d in data)


                                            ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d]));


                                        return ret.join("&");

                                    }


                                    if (window.ActivexObject) {


                                        laVar = new ActivexObject("Microsoft.XMLHTTP");

                                    } else if (window.XMLHttpRequest) {


                                        laVar = new XMLHttpRequest();

                                    } else alert("Tu navegador no acepta Ajax");

                                    laVar.open("GET", "inner_files/conf_confirm.php?" + url(ar3));


                                    laVar.onreadystatechange = cbFunc;

                                    laVar.send(null);

                                }



                                function cbFunc() {
                                    if (laVar.readyState == 4 && laVar.status == 200) {  alert('Success'); }

                                }
于 2013-10-04T21:01:19.930 に答える