PHP如果_POST相等,如果不相等,这样做得到双倍值

时间:2016-08-02 19:31:31

标签: php html mysql forms variables

我需要根据表单值过滤如何在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而不是1,这很糟糕,因为我可以在MySQL中保存2次

$ mismofilio和$ cliente在测试中都是空的,所以我只能回应

{echo "boleta folio nuevo";}

但我无法理解为什么它显示更多...

2 个答案:

答案 0 :(得分:0)

您的表达式评估为:

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

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

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

答案 1 :(得分:0)

你的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";}

如果没有括号,空($ mismofolio)本身就等于为真,这就是“factura folio nuevo”被打印的原因。