我有一个选择选项,在选择一个品牌后我成功获得/显示品牌名称,但我也希望其他值显示为价格,无论是否刷新页面。
<?php
require_once 'config.php';
echo '<select class="form-control action" name="tran_description" value="<?
php echo $tran_description; ?>" style="background-color:#F0F0F0">';
$sql = mysqli_query($mysqli, 'SELECT * FROM products order by product_id');
while ($row = $sql->fetch_assoc()){
echo '<option id="' . $row['product_id'] . '"';
echo ' value="' . $row['description'] . '" ';
echo ' value="' . $row['price'] . '" ';
if($row['description'] == $tran_description) {
if($row['price'] == $tran_price) {
$tran_price = $row['price'];
echo ' selected="selected"';
}
}
if($row['product_id'] == $row['description']) {
echo ' selected="selected"';
}
echo '>';
echo $row['description'];
echo '</option>';
}
echo '</select>';
?>
我可以得到描述的价值,但价格我不能。在一个表示品牌或描述的选择选项中,我想要将我选择的品牌的价格值分配给变量,这样我就可以在后面的代码中进行算术运算而不会看到它。谢谢。
答案 0 :(得分:0)
您正在使用错误的HTML结构,只有第一个属性被使用而另一个属性在DOM中被忽略。在一个选择中存储多个值的正确方法可以是这样的:
<select name="">
<option value="{'num_sequence':[0,1,2,3]}">Option one</option>
<option value="{'foo':'bar','one':'two'}">Option two</option>
</select>
在你的情况下它应该是这样的:
echo '<option id="' . $row['product_id'] . '"';
// echo ' value="{ /"description:/"' . $row['description'] . ', /"price:/"' . $row['price'] . ' }" ';
echo ' value="' .
json_encode(['description'=>$row['description'], 'price'=>$row['price']) .
'">";
然后获得你将要做的价值是:
$description = $_POST['NameOfSelectInput']['description'];
$price = $_POST['NameOfSelectInput']['price'];
如果你想在javascript中获取值,例如,使用jQuery,你可以这样做:
var value = JSON.parse($('#select_id').val()); // use id of your select control
var price = value.price;
var description = value.description;
您应该进行适当的错误检查......
有关详细信息,请参阅此处: Can an Option in a Select tag carry multiple values?