Reputation: 13
Given this code:
<input type="checkbox" id="Coke" name="Price" value="70" />
<input type="checkbox" id="Fanta" name="Price" value="70" />
<input type="checkbox" id="Sprite" name="Price" value="70" />
I would like to know how, if my user selects Fanta checkbox, I want my php variable $type="Fanta"
but I need form checkbox VALUES to stay NUMERIC for total price calculation.
Upvotes: 0
Views: 422
Reputation: 22029
It's not clear what exactly you're asking, but I believe you basically want 2 fields, one that defines the price and one that defines the selected type.
In that case, your best bet would be to store the prices server-side (That way people can't modify them too, which is good!). If you do this, your checkboxes will look like this:
<input type="checkbox" id="Coke" name="type[]" value="Coke" />
<input type="checkbox" id="Fanta" name="type[]" value="Fanta" />
<input type="checkbox" id="Sprite" name="type[]" value="Sprite" />
Your backend code would look like this:
$prices = array(
'Coke' => 70,
'Fanta' => 70,
'Sprite' => 70
);
$types = $_POST['type'];
$total = 0;
foreach($types as $key => $type) {
if (!isset($prices[$type]))
continue;
$total += $prices[$type];
}
// Use $total as your total price for whatever calculation
echo $total;
As per your comment, if you still want these prices client side for calculations, you can use json_encode
to output it into a script tag and use the prices directly. It's basically going to turn the server-side prices array into a client-side array of prices.
<script type="text/javascript">
var prices = <?= json_encode($prices) ?>;
// Now you can use prices['Coke'] etc, based off the value of the selected checkbox.
</script>
Upvotes: 3
Reputation: 20239
<input type="checkbox" value="Coke" name="Price" rel=70 />
<input type="checkbox" value="Fanta" name="Price" rel="70" />
<input type="checkbox" value="Sprite" name="Price" rel="70" />
use javascript to get rel attribute value for selected checkbox for total price
Upvotes: 0
Reputation: 72739
I would like to know how, if my user selects Fanta checkbox,
Then name you field fanta
:
<input type="checkbox" id="Fanta" name="fanta" value="70" />
Once you have done that you can get the values using either the $_POST
or the $_GET
superglobal (depending on your form method):
if (isset($_POST['fanta'])) {
echo $_POST['fanta'];
}
However you should never ever ever rely on the prices coming from the clientside!
but I need form checkbox VALUES to stay NUMERIC for total price calculation.
That is not going to happen because in HTTP values are being send as strings. Luckily PHP does automatic type juggling for you so you will still be able to do calculations with the string values.
http://codepad.viper-7.com/GOhHdz
In some situations you want to make it a integer value explicitly. In that case you can use type casting:
var_dump((int) '18');
http://codepad.viper-7.com/kJlGoS
Upvotes: 1
Reputation: 1331
When you post a form, anyway you will get 70 as value.
echo $_POST['Price'];
gives 70
Upvotes: 0