Can someone tell me why my function is executing both an IF statement and ELSE

Alex S

New member
statment with php? <?php
//mainline

$orderNumber = 0;
$itemNumber = 0;
$qtyReq = 0;
$qtyOH = 0;
$qtyShip = 0;
$qtyBO = 0;
$message= "";


sList($sList); // function call to open the shipping list
BO($backOrder); // function call to open the back order list

printf("\nEnter Order Number or 0 to exit: ");
fscanf(STDIN, "%s", $orderNumber);

while($orderNumber != "0")
{
printf("\nEnter Item Number or 0 to exit: ");
fscanf(STDIN, "%s", $itemNumber);
while($itemNumber != "0")
{
printf("\nEnter requested quantity: ");
fscanf(STDIN, "%s", $qtyReq);

printf("\nEnter quantity on hand: ");
fscanf(STDIN, "%s", $qtyOH);

doCalc( $sList, $backOrder, $orderNumber, $itemNumber, $qtyReq, $qtyOH, $qtyShip, $qtyBO, $message);

printf("\nEnter Item Number or 0 to exit: ");
fscanf(STDIN, "%s", $itemNumber);
}

if($itemNumber == "0")
{
printf("\nEnter Order Number or 0 to exit: ");
fscanf(STDIN, "%s", $orderNumber);
}
}

//fscanf(STDIN, "%s", $buster);
//end mainline

function sList(&$sList)
{
$sList=fopen("shippinglist.txt", "w");
fprintf($sList,"MITRE-11 HARDWARE\n\n");
fprintf($sList,"INVENTORY CONTROL SHIPPING LIST\n\n");
fprintf($sList,"ORDER NO. ITEM NO. UNITS SHIPPED MESSAGE\n");
}

function BO(&$backOrder)
{
$backOrder=fopen("backorder.txt", "w");
fprintf($backOrder,"MITRE-11 HARDWARE\n\n");
fprintf($backOrder,"INVENTORY CONTROL BACK ORDER LIST\n\n");
fprintf($backOrder,"ORDER NO. ITEM NO. UNITS BACK ORDERED MESSAGE\n");
}

function doCalc( $sList, $backOrder, $orderNumber, $itemNumber, $qtyReq, $qtyOH, &$qtyShip, &$qtyBO, &$message)
{
if($qtyOH >= $qtyReq)
{
$qtyShip = $qtyReq;
$qtyBO = 0;
$message ="Shippment Fully Filled";
fprintf($sList, "\n%-5s %11s %10s %30s", $orderNumber, $itemNumber, $qtyShip, $message);
}
if($qtyOH != 0 AND $qtyOH < $qtyReq)
{
$qtyShip = $qtyOH;
$qtyBO = ($qtyReq - $qtyOH);
$message ="Shippment Partially Filled";
fprintf($sList, "\n%-5s %11s %10s %36s", $orderNumber, $itemNumber, $qtyShip, $message);
fprintf($backOrder, "\n%-5s %11s %13s", $orderNumber, $itemNumber, $qtyBO);
}
else
{
$qtyShip = 0;
$qtyBO = $qtyReq;
$message ="OUT OF STOCK";
fprintf($backOrder, "\n%-5s %11s %13s %25s", $orderNumber, $itemNumber, $qtyBO, $message);
}
}

?>

That's what I have so far. What my code does or is suppose to do, is to take in 4 inputs, an Order Number, Item Number, Requested Quantity, and Quantity On Hand. After the inputs are given, it'll go through some calculations and print to two different files.
My problem lies within the doCalc function. I have two IF statements and 1 ELSE statement. What I don't understand is that when my first IF statement holds true, it executes that process, BUT then moves on the my ELSE statement...
The second IF statement is working fine it seems, as well as if it were just the ELSE statement.
This issue only happens when the first IF statement holds true.
Below is the doCalc function for easy referance.

function doCalc( $sList, $backOrder, $orderNumber, $itemNumber, $qtyReq, $qtyOH, &$qtyShip, &$qtyBO, &$message)
{
if($qtyOH >= $qtyReq)
{
$qtyShip = $qtyReq;
$qtyBO = 0;
$message ="Shippment Fully Filled";
fprintf($sList, "\n%-5s %11s %10s %30s", $orderNumber, $itemNumber, $qtyShip, $message);
}
if($qtyOH != 0 AND $qtyOH < $qtyReq)
{
$qtyShip = $qtyOH;
$qtyBO = ($qtyReq - $qtyOH);
$message ="Shippment Partially Filled";
fprintf($sList, "\n%-5s %11s %10s %36s", $orderNumber, $itemNumber, $qtyShip, $message);
fprintf($backOrder, "\n%-5s %11s %13s", $orderNumber, $itemNumber, $qtyBO);
}
else
{
$qtyShip = 0;
$qtyBO = $qtyReq;
$message ="OUT OF STOCK";
fprintf($backOrder, "\n%-5s %11s %13s %25s", $orderNumber, $itemNumber, $qtyBO, $message);
}
}
 
Back
Top