时间:2016-04-23 20:53:45

标签: php

我准备了一个简单的.php文档,允许用户选择要打印的值,然后将其发布到打印它的php脚本。这是我使用的代码:

<?php
  echo('<form method="post">
    Select value:
    <select type="integer" name="val" value= "">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <input type="submit" name="submit" value="display"/>
    </form>');
  $val = $_POST['val'];
  echo($val);
?>

然而,我有两个问题:

  1. 首次打开时,它显示一条顽皮的行“注意:未定义的索引:第12行的C:\ ... \ test.php中的val”。我如何解决它?

  2. 当我按下显示按钮时,打印脚本工作正常,但列表值返回1而不是选择的数字。

  3. 这是我在StackOverflow上的第一篇文章,对不起,如果我违反任何规则,我就找不到解决方案。 提前感谢任何建议!

1 个答案:

答案 0 :(得分:4)

首先,<select>没有type="integer"(它甚至不存在),也没有“类型”开头,所以我们只删除它。

<form method="post">
            Select value:
            <select name="val">
            <option value="1" <?php if(isset($_POST['val']) && $_POST['val'] == 1){ echo "selected";}?>>1</option><!-- check the posted value and compare it with option value and if equal then add selected attribute-->
            <option value="2" <?php if(isset($_POST['val']) && $_POST['val'] == 2){ echo "selected";}?>>2</option>
            <option value="3" <?php if(isset($_POST['val']) && $_POST['val'] == 3){ echo "selected";}?>>3</option>
            <option value="4" <?php if(isset($_POST['val']) && $_POST['val'] == 4){ echo "selected";}?>>4</option>
            <input type="submit" name="submit" value="display"/>
            </form>

<?php
    if(isset($_POST['val'])){ // check value is posted and set or not
        $val = $_POST['val'];
        echo($val);
    }
?>

或者更好: -

<form method="post">
    Select value:
    <select name="val">
    <?php 
    for($i =1;$i<=4;$i++){ // start loop
        if(isset($_POST['val']) && $_POST['val'] == $i){ // check posted value is set and equal to option or not if yes then add selected.
            echo "<option value=$i selected>$i</option>";
        }else{
            echo "<option value=$i >$i</option>";
        }
    }
    ?>
    </select>
    <input type="submit" name="submit" value="display"/>
</form>         
<?php
    if(isset($_POST['val'])){ // check posted value is set or not
        $val = $_POST['val'];
        echo($val);
    }
?>

注意: - 文件扩展名必须为.php