我需要根据表单值过滤如何在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";}
但我无法理解为什么它显示更多...
答案 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”被打印的原因。