简体   繁体   English

PHP使用选择标签

[英]PHP using the select tag

I would like help with my homework. 我想帮我做作业。
I need to use a select menu and then put the selection of the select tag into a function. 我需要使用选择菜单,然后将选择标记的选择放入函数中。 Now when I tried doing this I get an undefined error (Which is weird since I did define it) I have tried to do the full if system. 现在,当我尝试执行此操作时,出现一个未定义的错误(自从我定义了它以来,这很奇怪),我尝试执行完整的if系统。 But I soon gave up because it was just way to much work, while there is probbaly a better way of doing this. 但是我很快就放弃了,因为这只是很多工作的一种方式,而这可能是一种更好的方法。 Here is my code: 这是我的代码:

<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

And the "reiskosten" function: 和“ 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 ");
            }
        ?>

Your values are strings no integers. 您的值是字符串,没有整数。 $reiskosten[$vertrek][$bestemming] is not defined since its ie. $reiskosten[$vertrek][$bestemming]因此没有定义。 $reiskosten['rotterdam']['rotterdam2'] is not defined. $reiskosten['rotterdam']['rotterdam2']未定义。 You might want to change your array keys to strings or the option value to integers. 您可能需要将数组键更改为字符串,或者将选项值更改为整数。

your form is GET . 您的表格是GET You are checking for POST variables. 您正在检查POST变量。

The first thing you'll want to fix is that you're calling your reiskosten() function with the wrong arguments. 您要修复的第一件事是使用错误的参数调用reiskosten()函数。 What you mean to do is pass form values to that function, but if you look carefully, you'll see that you're passing the return values of the isset() function, each of which is going to be a boolean (TRUE/FALSE) value, not the value from the form element itself. 您的意思是将表单值传递给该函数,但是如果仔细看,您会发现您正在传递isset()函数的返回值,每个函数都将是一个布尔值(TRUE / FALSE)值,而不是表单元素本身的值。 That said, once you fix that, you'll realize that even the value of the form element is not quite what you'll want either. 也就是说,修复该问题后,您将意识到,即使form元素的值也不是您想要的。 At that point you'll either adjust what the value="" attributes contain, or re-evaluate the way you're indexing things on the back end. 届时,您将调整value =“”属性包含的内容,或重新评估在后端对事物进行索引的方式。 Good luck! 祝好运!

Your form should be: 您的表格应为:

<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. option values should (in this instance) be integers. 选项值(在这种情况下)应为整数。
  2. remove isset() as this only checks if they are set and does not actually return their values. 删除isset(),因为它仅检查是否已设置它们,并且实际上不返回其值。
  3. Create a new variable ($reiskosten) which will be the returned result of the function, and echo it out. 创建一个新变量($ reiskosten),它将作为函数的返回结果,并将其回显。

Your PHP should be: 您的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;
        }
    ?>

No need to echo out here, just return the value. 无需在此处回显,只需返回值即可。

The isset() function returns true or false , so the following line is incorrect since you appear to want to send the values through: isset()函数返回truefalse ,因此以下行是错误的,因为您似乎想通过以下方式发送值:

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

Change it to: 更改为:

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

Also, the values for vertrek and aankomst will be whatever the value field in the HTML option is, so it will be a name, not a number. 同样, vertrekaankomstvalue将与HTML optionvalue字段相同,因此它将是名称,而不是数字。

You can address it by using associative arrays like: 您可以使用以下关联数组来解决它:

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

And the same for the sub-array definitions where you set the prices. 设置价格的子数组定义也是如此。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM