【问题标题】:PHP if _POST is equal do this if not equal do this getting double valuePHP 如果 _POST 相等,则执行此操作,如果不相等,则执行此操作以获得双倍值
【发布时间】:2016-08-03 03:40:24
【问题描述】:

我需要根据表单值过滤如何在 MySQL 中保存结果,但回显测试显示 2 个结果

这里是选择表单

<select name="documento" id="documento">
<option value="boleta">boleta</option>
<option value="comprobante" selected>comprobante</option>
<option value="factura">factura</option>
</select>

这是我保存到 MySQL 之前的测试,从选择表单中获取值

$mismofolio=mysqli_real_escape_string($db,$_POST['mismofolio']);
$cliente = mysqli_real_escape_string($db,$_POST['cliente']);
$documento=mysqli_real_escape_string($db,$_POST['documento']);

if (empty($mismofolio) && $documento == 'boleta') {
    echo "boleta folio nuevo";
}
if (!empty($mismofolio) && $documento == 'boleta') {
    echo "boleta con el mismo folio $mismofolio";
}
if (empty($mismofolio) && $documento == 'comprobante') {
    echo "comprobante folio nuevo";
}
if (!empty($mismofolio) && $documento == 'comprobante') {
    echo "comprobante con el mismo folio $mismofolio";
}
if (empty($mismofolio) || empty($cliente) && $documento == 'factura') {
    echo "factura folio nuevo";
}
if (!empty($mismofolio) || !empty($cliente) && $documento == 'factura') {
    echo "factura mismo folio $mismofolio";
}

我只需要回显 1 个值,但我得到的结果是:

Selecting: documento=boleta

回声:

BOLETA FOLIO NUEVOFACTURA FOLIO NUEVO

如您所见,php 代码占用 2 if 而不是 1,这很糟糕,因为我可以在 MySQL 中保存 2 次​​p>

$mismofilio 和 $cliente 在测试中都是空的,所以我只需要 echo

{echo "boleta folio nuevo";}

但我不明白为什么它显示更多......

【问题讨论】:

  • 你的逻辑好像有点不对。如果empty($mismofolio) &amp;&amp; $documento == 'boleta' 为真,则empty($mismofolio) 为真,empty($mismofolio) || ... 也为真
  • 真正让我吃惊的是你的代码有小写的字符串,而你的输出却是大写的......

标签: php html mysql forms variables


【解决方案1】:

您的 OR 语句(#5 和 #6)应该有括号:

    if (empty($mismofolio) && $documento == 'boleta')
{echo "boleta folio nuevo";}
    if (!empty($mismofolio) && $documento == 'boleta')
{echo "boleta con el mismo folio $mismofolio";}
    if (empty($mismofolio) && $documento == 'comprobante')
{echo "comprobante folio nuevo";}
    if (!empty($mismofolio) && $documento == 'comprobante')
{echo "comprobante con el mismo folio $mismofolio";}
    if ((empty($mismofolio) || empty($cliente)) && $documento == 'factura')
{echo "factura folio nuevo";}
    if ((!empty($mismofolio) || !empty($cliente)) && $documento == 'factura')
{echo "factura mismo folio $mismofolio";}

没有括号,empty($mismofolio) 本身就等于 true,这就是打印“factura folio nuevo”的原因。

【讨论】:

    【解决方案2】:

    您的表达式被评估为:

    if (empty($mismofolio) || (empty($cliente) && $documento == 'factura'))
    

    因此是第二个输出。也许你的意思是这个?

    if ((empty($mismofolio) || empty($cliente)) && $documento == 'factura')
    

    【讨论】:

    • 工作正常!!!只是一个问题:我解决了这个问题 if ((empty($mismofolio) || empty($cliente)) && $documento == 'factura') - 但以下是正确的,或者我也必须进行更改? if (empty($mismofolio) && $documento == 'boleta'){echo "boleta folio nuevo";} ???
    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 2013-01-19
    • 2023-03-09
    • 2021-02-10
    • 2011-06-17
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    相关资源
    最近更新 更多