【问题标题】:Getting variable value in textbox [duplicate]在文本框中获取变量值[重复]
【发布时间】:2021-08-08 01:04:08
【问题描述】:

所以,我正在做一个工资计算器 使用 Switch 语句为 $NetS 变量赋值,但是当我尝试在文本框中回显时,它给出了这个错误:

未定义变量:C:\wamp\www\salary.php 中的 NetS 在第 73 行调用 堆栈#TimeMemoryFunctionLocation 10.0003390392{main}( )...\salary.php:0 " />

这是我的代码

<body>
<?php
if(isset($_POST['Submit']))
{
    $Dept = $_POST['Dept'];
    $ES = $_POST['ES'];
    $NetS;

    switch($Dept)
    {
        case "da":
        $NetS = $ES - ($ES*1/100)-500;
        break; 

        case "db":
        $NetS = $ES - ($ES*2/100)-500;
        break;

        case "dc":
        $NetS = $ES - ($ES*3/100)-500;
        break;

        case "dd":
        $NetS = $ES - ($ES*5/100)-500;
        break;

        default: echo"Invalid Choice or error";
        
        break;

    
    }
}
?> 

<h1 style="text-align:center;">CS310 Open Source Web Application Development</h1>   

<h3 style="text-align:center;" >Assignment no 1</h3>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>" method="POST">
<br><br>
Select Department
<select name="Dept" id="Dept" class="form-control" style="width:230px">
<option value="">Select Options</option>
<option value="da">Department A</option>
<option value="db">Department B</option>
<option value="dc">Department C</option>
<option value="dd">Department D</option>
</select>
</form>
<br><br>
Employee Salary
<input type="text" name="ES" Placeholder="Enter Employee Salary" class="form-control" style="width:230px"/>
<br>
<input type="submit" name="Submit" class="tn btn-success" style="width:120px"/>
<br> <br>
Net salary
<input type="text" class="form-control" style="width:230px" name="NetSalary" value="<?php echo $NetS; ?>" />
</body>
</html>

【问题讨论】:

  • 不是您当前的问题,而是您的 default 没有分配值,它只是输出。 $NetS 仅在提交表单时创建.. 否则未定义。
  • 另外,如果不使用department$_POST['ES'] - ( $_POST['ES'] * $_POST['Dept']/100) - 500 会容易得多,只需将值放在value 中即可。如果想在不存在时抛出 Invalid Choice or error,也可以为 4 个值执行 in_array

标签: php switch-statement


【解决方案1】:

我对你的代码做了一些修改:

1- 在“if(isset($_POST['Submit']))”之前声明变量 $NetS
2- 在表单标签中添加提交按钮,目前它在表单标签之外。
// 添加适当的 body 和 html 标签
// 为了向相同的页面数据提交值,我在操作中添加了“#”(如果需要,可以更改)

这是最终代码:

<?php
     $NetS = 0;
     if(isset($_POST['Submit']))
     {
         $Dept = $_POST['Dept'];
         $ES = $_POST['ES'];
         
     
         switch($Dept)
         {
             case "da":
             $NetS = $ES - ($ES*1/100)-500;
             break; 
     
             case "db":
             $NetS = $ES - ($ES*2/100)-500;
             break;
     
             case "dc":
             $NetS = $ES - ($ES*3/100)-500;
             break;
     
             case "dd":
             $NetS = $ES - ($ES*5/100)-500;
             break;
     
             default: echo"Invalid Choice or error";
             
             break;
     
         
         }
     }
     ?> 

<h1 style="text-align:center;">CS310 Open Source Web Application Development</h1>
  <h3 style="text-align:center;" >Assignment no 1</h3>
  <form action="#" method="POST">
     <br><br>
     Select Department
     <select name="Dept" id="Dept" class="form-control" style="width:230px">
        <option value="">Select Options</option>
        <option value="da">Department A</option>
        <option value="db">Department B</option>
        <option value="dc">Department C</option>
        <option value="dd">Department D</option>
     </select>
     <br><br>
     Employee Salary
     <input type="text" name="ES" Placeholder="Enter Employee Salary" class="form-control" style="width:230px"/>
     <br>
     <input type="submit" name="Submit" class="tn btn-success" style="width:120px"/>
  </form>
  <br> <br>
  Net salary
  <input type="text" class="form-control" style="width:230px" name="NetSalary" value="<?php echo $NetS; ?>" />

输出:

【讨论】:

  • # 不应用于表单操作。
  • 你可以使用这个方法:。
  • 这对 XSS 注入开放。 OP 所拥有的是/是正确的,&lt;?php echo htmlentities($_SERVER['PHP_SELF']);?&gt;
  • 非常感谢。我只需要在 if(isset) 之前声明 $NetS 并将其初始化为空字符串,然后将这些文本字段和提交按钮放入表单中。
  • @OsamaBukhari 所以这个答案解决了你的问题(除了使用错误的#)。你应该接受它,stackoverflow.com/help/someone-answers
猜你喜欢
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多