Nokelekele Nokelekele - 4 months ago 11
MySQL Question

PHP if _POST is equal do this if not equal do this getting double value

I need to filter how to save results in MySQL according to the form values but the echo test show me 2 results

Here is the select form

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


Here is the test before I save to MySQL, getting the values from the select form

$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";
}


I just have to echo 1 value but the result I get is:

Selecting: documento=boleta


Echo:

BOLETA FOLIO NUEVOFACTURA FOLIO NUEVO


As you can see the php code is taking 2 if and not 1, this is bad because I could save 2 times in MySQL

Both $mismofilio and $cliente are empty in the test so I have to only echo

{echo "boleta folio nuevo";}


But I cannot understand why it is displaying more...

Answer

You should have brackets surrounding your OR statements (#5 and #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";}

Without the brackets, empty($mismofolio) by itself is equating to true, which is why "factura folio nuevo" is being printed.