将$_POST与选择列表一起使用时取消定义索引


Undefine index while using $_POST with a select list

有人能告诉我为什么我有"未定义索引"警告吗?我一点也不知道。。

    <?php
    function li(){
        if(isset($_POST['send'])){
            $a=$_POST['encrypt'];
        }echo $a;
    }
?>
<select name="encrypt" size="3">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

编辑:这是我定义"发送"的地方

<input type="submit" value="Send" name="send">

这是整个代码:

<html>
    <head>
    </head>
    <body>
    </br>
<form method="post">
Text</br> <textarea name="text" rows="5" columns=40></textarea></br>
</br></br>Encrypted</br> <textarea name="en" rows="5" columns="40"><?php li(); ?></textarea></br>
<input type="submit" value="Send" name="send">
</form> 
<?php
    function li(){
        if(isset($_POST['send'])){
            $a=$_POST['encrypt'];
        }echo $a;
    }
?>
<select name="encrypt" size="3">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

    </body>
</html>

我已经将选择放入表单部分,但它仍然不起作用。

<html>
    <head>
    </head>
    <body>
    </br>
<form method="post" action="index.php">
Text</br> <textarea name="text" rows="5" columns=40></textarea></br>
</br></br>Encrypted</br> <textarea name="en" rows="5" columns="40"><?php li(); ?></textarea></br>
<input type="submit" value="Send" name="send">
<select name="encrypt" size="3">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>
</form> 
<?php
    function li(){
        if(isset($_POST['send'])){
            $a=$_POST['encrypt'];
        }echo $a;
    }
    print_r($_POST);
?>

    </body>
</html>

上次编辑:上次更改后一切都很好。。。我只需要从列表中选择一个选项。我需要保护它免受此错误的影响:>对不起,我的不好

您的SELECT标记在FORM外部。使其位于内部

   <form method="post">
    Text</br> <textarea name="text" rows="5" columns=40></textarea></br>
    </br></br>Encrypted</br> <textarea name="en" rows="5" columns="40"><?php li(); ?></textarea></br>
    <select name="encrypt" size="3">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
   </select>
<input type="submit" value="Send" name="send">
    </form> 

请将encrypt的下拉列表保留在<form>标签中。

<form method="post">
Text</br> <textarea name="text" rows="5" columns=40></textarea></br>
</br></br>Encrypted</br> <textarea name="en" rows="5" columns="40"><?php li(); ?></textarea></br>
<select name="encrypt" size="3">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>
<input type="submit" value="Send" name="send">
</form> 
<?php
    function li(){
        $a = '';
        if(isset($_POST['send']) && isset($_POST['encrypt'])){
            $a=$_POST['encrypt'];
        }echo $a;
    }
?>
    </body>
</html>

同时检查函数中$_POST['encrypt']的条件。

这应该有效。您有三种选择,没有默认值可供选择,以防没有选择,因此会出现错误。这应该是你的错误:"PHP注意:未定义的索引:加密在…"

<html>
<head>
</head>
<body>
</br>
<form method="post" action="">
Text</br> <textarea name="text" rows="5" columns=40></textarea></br>
</br></br>Encrypted</br> <textarea name="en" rows="5" columns="40"><?php li();       ?></textarea></br>
<input type="submit" value="Send" name="send">
<select name="encrypt" size="3">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form> 
</body>
</html>
<?php
  function li()
{
    if(isset($_POST['send']))
    {
        if(isset($_POST['encrypt']))
        {
        $a = $_POST['encrypt'];
        }
        else { $a = 1;}
    }
    echo $a;
}
print_r($_POST);
?>