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

您的值是字符串,没有整数。 $reiskosten[$vertrek][$bestemming]没有定义,因为它的 ie。$reiskosten['rotterdam']['rotterdam2']没有定义。您可能希望将数组键更改为字符串或将选项值更改为整数。

于 2012-11-08T17:54:44.330 回答
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

isset()函数返回trueor false,因此以下行不正确,因为您似乎希望通过以下方式发送值:

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

将其更改为:

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

vertrek此外,和的值aankomst将是valueHTML 中的任何字段option,因此它将是名称,而不是数字。

您可以使用关联数组来解决它,例如:

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

对于您设置价格的子数组定义也是如此。

于 2012-11-08T18:05:24.283 回答