Jump to content

using the variable generated from a radio button


mstans1980

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;

}

?>

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.