簡體   English   中英

PHP使用選擇標簽

[英]PHP using the select tag

我想幫我做作業。
我需要使用選擇菜單,然后將選擇標記的選擇放入函數中。 現在,當我嘗試執行此操作時,出現一個未定義的錯誤(自從我定義了它以來,這很奇怪),我嘗試執行完整的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 ");
            }
        ?>

您的值是字符串,沒有整數。 $reiskosten[$vertrek][$bestemming]因此沒有定義。 $reiskosten['rotterdam']['rotterdam2']未定義。 您可能需要將數組鍵更改為字符串,或者將選項值更改為整數。

您的表格是GET 您正在檢查POST變量。

您要修復的第一件事是使用錯誤的參數調用reiskosten()函數。 您的意思是將表單值傳遞給該函數,但是如果仔細看,您會發現您正在傳遞isset()函數的返回值,每個函數都將是一個布爾值(TRUE / FALSE)值,而不是表單元素本身的值。 也就是說,修復該問題后,您將意識到,即使form元素的值也不是您想要的。 屆時,您將調整value =“”屬性包含的內容,或重新評估在后端對事物進行索引的方式。 祝好運!

您的表格應為:

<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;
        }
    ?>

無需在此處回顯,只需返回值即可。

isset()函數返回truefalse ,因此以下行是錯誤的,因為您似乎想通過以下方式發送值:

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

更改為:

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

同樣, vertrekaankomstvalue將與HTML optionvalue字段相同,因此它將是名稱,而不是數字。

您可以使用以下關聯數組來解決它:

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

設置價格的子數組定義也是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM