0

宿題を手伝ってほしい。
選択メニューを使用してから、選択タグの選択を関数に入れる必要があります。これを実行しようとすると、未定義のエラーが発生します(定義したので奇妙です)ifシステムを完全に実行しようとしました。しかし、それは多くの仕事への道だったので、私はすぐに諦めましたが、おそらくこれを行うためのより良い方法があります。これが私のコードです:

<form action=<?php echo $_SERVER['PHP_SELF'];?>>
            Vertrek:
            <select name="vertrek">
                <option value="amsterdam">Amsterdam</option>
                <option value="utrecht">Utrecht</option>
                <option value="denhaag">Den Haag</option>
                <option value="rotterdam">Rotterdam</option>
            </select>
            Aankomst:
            <select name="aankomst">
                <option value="amsterdam2">Amsterdam</option>
                <option value="utrecht2">Utrecht</option>
                <option value="denhaag2">Den Haag</option>
                <option value="rotterdam2">Rotterdam</option>
            </select>
            <br/><br/>
            <input type="submit" value="Berekenen">
            <p>------</p>
            De berekende reiskosten zijn:
            <?php 
                reiskosten(isset($_POST['vertrek']), isset($_POST['aankomst']));            
            ?> Euros's

そして「reiskosten」関数:

<?php
            function reiskosten($vertrek, $bestemming)
            {
                $reiskosten = array();
                $reiskosten[1] = array();
                $reiskosten[2] = array();
                $reiskosten[3] = array();
                $reiskosten[4] = array();

                //Amsterdam naar iets
                $reiskosten[1][1] = 0;
                $reiskosten[1][2] = 30;
                $reiskosten[1][3] = 60;
                $reiskosten[1][4] = 90;

                //Utrecht naar iets
                $reiskosten[2][1] = 30;
                $reiskosten[2][2] = 0;
                $reiskosten[2][3] = 40;
                $reiskosten[2][4] = 20;

                //Den Haag naar iets
                $reiskosten[3][1] = 60;
                $reiskosten[3][2] = 40;
                $reiskosten[3][3] = 0;
                $reiskosten[3][4] = 10;

                //Rotterdam naar iets
                $reiskosten[4][1] = 90;
                $reiskosten[4][2] = 20;
                $reiskosten[4][3] = 10;
                $reiskosten[4][4] = 0;

                echo($reiskosten[$vertrek][$bestemming] . " Euro's ");
            }
        ?>
4

5 に答える 5

1

あなたのフォームはGET. POST変数をチェックしてい ます。

于 2012-11-08T17:56:36.480 に答える
1

最初に修正したいことは、間違った引数で reiskosten() 関数を呼び出していることです。あなたがしようとしているのは、フォームの値をその関数に渡すことですが、注意深く見ると、isset() 関数の戻り値を渡していることがわかります。それぞれがブール値 (TRUE/ FALSE) 値であり、フォーム要素自体の値ではありません。とはいえ、それを修正すると、フォーム要素の値でさえ、必要なものではないことに気付くでしょう。その時点で、value="" 属性に含まれるものを調整するか、バックエンドでインデックスを作成する方法を再評価します。幸運を!

于 2012-11-08T17:59:47.380 に答える
1

フォームは次のようになります。

<form action=<?php echo $_SERVER['PHP_SELF'];?>>
        Vertrek:
        <select name="vertrek">
            <option value="1">Amsterdam</option>
            <option value="2">Utrecht</option>
            <option value="3">Den Haag</option>
            <option value="4">Rotterdam</option>
        </select>
        Aankomst:
        <select name="aankomst">
            <option value="1">Amsterdam</option>
            <option value="2">Utrecht</option>
            <option value="3">Den Haag</option>
            <option value="4">Rotterdam</option>
        </select>
        <br/><br/>
        <input type="submit" value="Berekenen">
        <p>------</p>
        De berekende reiskosten zijn:
        <?php 
            $reiskosten = reiskosten($_POST['vertrek'], $_POST['aankomst']);
            echo $reiskosten . "Euros's";
        ?>
  1. オプション値は (この場合) 整数でなければなりません。
  2. isset() を削除します。これは、設定されているかどうかのみをチェックし、実際には値を返さないためです。
  3. 関数の返される結果となる新しい変数 ($reiskosten) を作成し、それをエコーし​​ます。

PHP は次のようになります。

<?php
        function reiskosten($vertrek, $bestemming)
        {
            $reiskosten = array();
            $reiskosten[1] = array();
            $reiskosten[2] = array();
            $reiskosten[3] = array();
            $reiskosten[4] = array();

            //Amsterdam naar iets
            $reiskosten[1][1] = 0;
            $reiskosten[1][2] = 30;
            $reiskosten[1][3] = 60;
            $reiskosten[1][4] = 90;

            //Utrecht naar iets
            $reiskosten[2][1] = 30;
            $reiskosten[2][2] = 0;
            $reiskosten[2][3] = 40;
            $reiskosten[2][4] = 20;

            //Den Haag naar iets
            $reiskosten[3][1] = 60;
            $reiskosten[3][2] = 40;
            $reiskosten[3][3] = 0;
            $reiskosten[3][4] = 10;

            //Rotterdam naar iets
            $reiskosten[4][1] = 90;
            $reiskosten[4][2] = 20;
            $reiskosten[4][3] = 10;
            $reiskosten[4][4] = 0;

            $return = $reiskosten[$vertrek][$bestemming];

            return $return;
        }
    ?>

ここでエコーアウトする必要はありません。値を返すだけです。

于 2012-11-08T18:03:13.060 に答える
1

関数はorをisset()返すため、値を送信したいように見えるため、次の行は正しくありません。truefalse

reiskosten(isset($_POST['vertrek']), isset($_POST['aankomst']));

次のように変更します。

if( isset($_POST['vertrek']) && isset($_POST['aankomst']) ) {
  reiskosten($_POST['vertrek'], $_POST['aankomst']);
}

また、 と の値vertrekは、HTML のフィールドaankomstが何であれ、数値ではなく名前になります。valueoption

次のような連想配列を使用して対処できます。

$reiskosten = array();
$reiskosten['amsterdam'] = array();
$reiskosten['utrecht'] = array();
$reiskosten['denhaag'] = array();
$reiskosten['rotterdam'] = array();

価格を設定するサブ配列定義についても同じです。

于 2012-11-08T18:05:24.283 に答える
1

あなたの値は整数ではなく文字列です。 $reiskosten[$vertrek][$bestemming]そのie以来定義されていません。$reiskosten['rotterdam']['rotterdam2']定義されていません。配列キーを文字列に、またはオプション値を整数に変更したい場合があります。

于 2012-11-08T17:54:44.330 に答える