Jump to content

Recommended Posts

Hey all,

 

I'm almost too embarrased to post this as I'm sure it is very simple - but for the life of me I can't get this to work. I am a complete newbie to PHP so please bear with me..

 

What I'm trying to do is to write a program that will go on to calculate a user's Body Mass Index (BMI) based on user inputted data of height and weight. However, I want to be able to accept heights and weights in a number of different units for maximum ease of use. I am trying to write some PHP code that will handle this , the main goal is to convert everything into 'cm' and 'kg' before going on and doing the simple BMI calculation later on.

 

However I am stuck at this point:

 

I have a text field for users to input their weight into. This is immediately followed by two radio buttons for the user to select which units they are inputting their weight in (kilograms or pounds). A third option to input their weight is given after this for those wishing to input their weight in 'stones and pounds'.

 

My problem is as follows: I can't get my code to recognise which radio button (either 'kg' or 'lbs') has been pressed. What should happen is that my code can tell something has been inputted in the text box AND which of the radio buttons has been selected. From this it does one of the two; for the kilogram option it leaves the value as it is, but if the weight has been inputted in pounds (and the 'lbs' radio button selected) then I want the code to convert this into kilos by multiplying by 0.4535.

 

Here is what I have so far (sorry its a bit messy - like i say I am a newbie):

 

 

<?php //convert.php

$ft = $cm = $inches = $weight = $stones =$pounds = $kilos = $units = "";

 

if(isset($_POST['cm'])) $cm = sanitizeString($_POST['cm']);

if(isset($_POST['ft'])) $ft = sanitizeString($_POST['ft']);

if(isset($_POST['inches'])) $inches = sanitizeString($_POST['inches']);

if(isset($_POST['weight'])) $weight = sanitizeString($_POST['weight']);

if(isset($_POST['stones'])) $stones = sanitizeString($_POST['stones']);

if(isset($_POST['pounds'])) $pounds = sanitizeString($_POST['pounds']);

if(isset($_POST['kilos'])) $kilos = sanitizeString($_POST['kilos']);

if(isset($_POST['units'])) $units = sanitizeString($_POST['units']);

 

if ($ft != '')

{

    $height = intval(($ft * 30.48) + ($inches * 2.54));

    $out = "you are $height cm tall";

}

elseif($cm != '')

{

    $height = intval($cm);

    $out = "you are $height cm tall";

}

else $out = "";

 

if ($stones != '')

{

    $kilos = intval((($stones * 14) + $pounds) * 0.45359237);

    $out2 = "you weigh $kilos Kg";

}

elseif($weight != '' AND $units = "kg")

{

    $kilos = $weight;

    $out2 = "you weigh $kilos Kg";

}

elseif($weight != '' AND $units = "lbs")

{

    $kilos = ($weight * 0.45359237);

    $out2 = "you weigh $kilos Kg";

}

else $out2 = "";

 

 

echo <<<_END

<html><head><title>Height & Weight Converter</title>

</head><body><pre>

Please enter your details below

<b>$out$out2</b>

<form method="post" action="convert.php">

Height: <input type="text" name="cm" size="3"> cm OR <input type="text" name="ft" size="1">ft <input type="text" name="inches" size="2">inches

Weight: <input type="text" name="weight" size="4" /> Kg<input type="radio" name="units" value="kg" /> lbs<input type="radio" name="units" value="lbs" /> OR <input type="text" name="stones" size="2">stone <input type="text" name="pounds" size="2">pounds

<input type="submit" value="Submit" />

</form></pre></body></html>

_END;

 

function sanitizeString($var)

{

    $var = stripslashes($var);

    $var = htmlentities($var);

    $var = strip_tags($var);

    return $var;

}

?>

 

On these lines

elseif($weight != '' AND $units = "kg")
...
elseif($weight != '' AND $units = "lbs")

You should be using the comparison operator (==) not the the assignment operator (=) for checking what $units is set to.

With those changes it should be working,

Entering 70 for weight and choosing Kg outputs You weight 70Kg

Entering 155 for weight and choosing lbs outputs You weight 70.30681735 Kg

 

Define what is not working.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.