0

我需要结合一些 php 和 html 技巧来使表单的典型选择选项段为每个表单保存多个值。产品的 id、标记的 id 和标记的“名称”。这允许管理用户根据利润率选择产品价格。提交表单会为选择中的三个值生成空白值。

<?php

    $factor_grab = "
    SELECT * FROM product_latest_price_factor AS t1
    WHERE product_id = '".$product_id."'";
    //echo $factor_grab.'<br>';
    $factor_result = mysql_query($factor_grab) or die (mysql_error());
    while($frow=mysql_fetch_array($factor_result))
    {
        $level = $frow['level'];
        $percentage = $frow['percentage'];
        $value = $frow['value'];
        $price_level_id = $frow['price_level_id'];

//This piece does not work
        echo '<option value="{level:\''.$level.'\', price_level_id:\''.$price_level_id.'\', percentage:\''.$percentage.'\'}">'.$level.' - %'.number_format($percentage,2).' - $'.$value.'</option>';

    }
      ?>

我以为这次我成功了,因为我可以看到表格中的值,并通过使用 Google Chrome 检查选项,但我认为这是因为我的报价失控了。您可以看到每个选项值应该存储三个变量。级别、Price_level 和 Price_level_id。(价值只是为了让用户明确地看到最终的价格是多少。)我如何回应一个适用于所有三个选项的选项?这对我来说将是一个非常强大的解决方案。

4

2 回答 2

1

正确逃避事情,避免问题:

echo '<option value="', 
    htmlspecialchars(
        json_encode(
            array(
                'level'=>$level,
                'price_level_id'=>$price_level_id,
                'percentage'=>$percentage
            )
        )
    ),
    '">',
    htmlspecialchars($level . ' - %' . number_format($percentage,2)),
    htmlspecialchars(' - $' . $value),
    '</option>';

这很混乱......只是想在这里向您展示这个想法。你应该把这些东西清理一下。最好只在该选项值中保留一个 ID,并将这些其他内容从 JavaScript 数组或对象中或以后保留的任何位置中提取出来。

此外,请确保您正在转义查询中的数据。就目前而言,您可能会受到 SQL 注入的影响。学习使用 PDO 和准备好的查询来避免这个问题。

于 2012-08-23T21:14:03.360 回答
0

您如何检索这些值?你在用json_decode吗?因为如果你是,那么你首先需要确保你的 JSON 是有效的。尝试这个:

echo '<option value="'.htmlspecialchars(json_encode(compact("level","price_level_id","percentage"))).'">'.$level.' - %'.number_format($percentage,2).' - $'.$value.'</option>';

然后用于json_decode将值放入数组中。

于 2012-08-23T21:15:48.710 回答