在数据库

时间:2017-07-30 08:41:30

标签: javascript php ajax

我有一个选择选项,在选择一个品牌后我成功获得/显示品牌名称,但我也希望其他值显示为价格,无论是否刷新页面。

<?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>';

?>

我可以得到描述的价值,但价格我不能。在一个表示品牌或描述的选择选项中,我想要将我选择的品牌的价格值分配给变量,这样我就可以在后面的代码中进行算术运算而不会看到它。谢谢。

1 个答案:

答案 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?