使用isset验证字段

时间:2016-12-31 20:34:42

标签: php if-statement isset

我尝试创建一个基本的计算器,这完全有效,但我需要验证字段。我'尝试if(),但PHP忽略了这一点。如果字段为空,则不显示该文章'完成所有字段'并执行function operadora();生成的结果0.

我做错了什么?

抱歉我的英语不好:(

这是表格:

<form action="calcular.php" method="post">
<input name="valor1" type="number">
  <select name="operacion" id="">
    <option value="+">+</option>
    <option value="-">-</option>
    <option value="*">*</option>
    <option value="/">/</option>
   </select>
<input name="valor2" type="number">
<input type="submit" name="enviar" value="enviar">
</form>

这是php代码:

<?php

if(isset($_POST['enviar'])){
  if(!isset($_POST['valor1']) ||
  !isset($_POST['valor2'])){
    echo 'complete all fields';
  }
  else{
    $valor1 = $_POST['valor1'];
    $valor2 = $_POST['valor2'];
    $operacion = $_POST['operacion'];
    operadora($operacion,$valor1,$valor2);
  }
}

function operadora($operador, $valor1, $valor2){
if(!strcmp($operador,"+")){
     $resultado = $valor1+$valor2;
     echo $resultado;
   }
if(!strcmp($operador,"-")){
     $resultado = $valor1-$valor2;
     echo $resultado;
   }
if(!strcmp($operador,"*")){
     $resultado = $valor1*$valor2;
     echo $resultado;
   }
if(!strcmp($operador,"/")){
     $resultado = $valor1/$valor2;
     echo $resultado;
   }
};

 ?>

2 个答案:

答案 0 :(得分:2)

使用 empty()来检查字段,因为当您发送空表单字段时总是会设置。

if (!empty($_POST['valor1') 
    && !empty($_POST['valor2']) 
    && !empty($_POST['operacion'])) {

    $valor1 = $_POST['valor1'];
    $valor2 = $_POST['valor2'];
    $operaction = $_POST['operaction'];
    operadora($operaction, $valor1, $valor2);
} else {
    echo 'Complete all fields';
}

<强>的strcmp() strcmp在字符串相等时返回0, 所以你需要使用if语句

if (strcmp($operador, "+") == 0) {
    $resultado = $valor1 + $valor2;
    echo $resultando;
}

我更喜欢这种操作的switch语句。

function operadora($operador, $valor1, $valor2)
{
    $resultado = 0;
    switch($operador) {
        case '+':
            $resultado = $valor1 + $valor2;
            break;
        case '-':
            $resultado = $valor1 - $valor2;
            break;
        case '*':
            $resultado = $valor1 * $valor2;
            break;
        case '/':
            $resultado = $valor1 / $valor2;
            break;
    }
    echo $resultado;
}

答案 1 :(得分:0)

试试这个

if(isset($_POST['enviar']))
{
   if(isset($_POST['valor1']) && isset($_POST['valor2']))
  {
      $valor1 = $_POST['valor1'];
      $valor2 = $_POST['valor2'];
      $operacion = $_POST['operacion'];
      operadora($operacion,$valor1,$valor2);
  }
  else
  {
     echo 'complete all fields';
  }
}