Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 298
  • Last Modified:

PHP calculation

Hi here is my code, very simple
if ($Type1 == "ISO" || $Type1 == "NQ") { $Total_SO1 = $Shares1 * $Price1; } else { $Total_SO1 = 0; }
if ($Type2 == "ISO" || $Type2 == "NQ") { $Total_SO2 = $Shares2 * $Price2; } else { $Total_SO2 = 0; }
if ($Type3 == "ISO" || $Type3 == "NQ") { $Total_SO3 = $Shares3 * $Price3; } else { $Total_SO3 = 0; }
if ($Type4 == "ISO" || $Type4 == "NQ") { $Total_SO4 = $Shares4 * $Price4; } else { $Total_SO4 = 0; }
if ($Type5 == "ISO" || $Type5 == "NQ") { $Total_SO5 = $Shares5 * $Price5; } else { $Total_SO5 = 0; }
if ($Type6 == "ISO" || $Type6 == "NQ") { $Total_SO6 = $Shares6 * $Price6; } else { $Total_SO6 = 0; }
if ($Type7 == "ISO" || $Type7 == "NQ") { $Total_SO7 = $Shares7 * $Price7; } else { $Total_SO7 = 0; }

$Total_SO = $Total_SO1 + $Total_SO2 + $Total_SO3 + $Total_SO4 + $Total_SO5 + $Total_SO6 + $Total_SO7;

But it dose not work, can anyone see why. I have echo each of the variables and they all have the correct value except the total of each line os zero. out side of the if statement they work properly, please help.

Thanks

Rafael
0
rcleon
Asked:
rcleon
1 Solution
 
AriMcCommented:
Are you checking the values of $TypeX correctly with your echo? There might be some additional spaces in the values that screw your tests, especially if you read them from a database.

Try debugging the values like this:

   echo "<".$Type1.">";

... to see any spaces.





0
 
Beverley PortlockCommented:
There is nothing obviously wrong with your code. The fragment supplied above works OK for me when supplied with the appropriate values.

Turn on error checking with

ini_set('display_errors',1); error_reporting(E_ALL);

at the start of your script. Also remember that PHP is case senstive with variable names so $Price and $price are not the same.
0
 
Beverley PortlockCommented:
@AriMc - it might be simpler to use trim

http://www.php.net/trim

$Type1 = $trim( $Type1 );

and so on...
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
gizmolaCommented:
My best guess is that your $Type.. variables don't match either of the 2 strings.you are testing for. PHP variable names are case sensitive so double check that.

Also, if you really want to have the if-then-else on one line like that you can replace:

if ($Type1 == "ISO" || $Type1 == "NQ") { $Total_SO1 = $Shares1 * $Price1; } else { $Total_SO1 = 0; }

Open in new window


with the ternary operator

$Total_SO1 = ($Type1 == "ISO" || $Type1 == "NQ") ? $Shares1 * $Price1 : 0;

Open in new window


Yes that is equivalent ;)
0
 
AriMcCommented:
bportlock: True, that would've been my next suggestion if the first debugging showed the values include spaces. :)

0
 
Beverley PortlockCommented:
@AriMc - never hurts to do it anyway, better safe than sorry.

Really this piece of code should have been written with arrays then used array_sum() to do all the dirty work, but we are where we are and I suspect that there is a lot of other code that would need alteration.

0
 
rcleonAuthor Commented:
Thank you ALL it works great.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now