【问题标题】:Echoing a complex form array in PHP在 PHP 中回显一个复杂的表单数组
【发布时间】:2012-08-23 21:07:04
【问题描述】:

我需要结合一些 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>';

    }
      ?>

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

【问题讨论】:

  • 它到底在呼应什么?你的一些文字?所有的?还是有错误?
  • 您的问题在于处理表单,但您没有共享处理表单的代码。不要浪费别人的时间问无法回答的问题。
  • 在查询中使用数据之前,您是否正确使用mysql_real_escape_string 转义数据? (在您的情况下为 $product_id)。
  • 生成的选项如下所示: ,表示该产品被标记为 55%,并带有其各自的 id 和 code。
  • 所以它生成正常。正如@DanGrossman 所说——如果你需要帮助,是处理代码不起作用,所以你必须添加它。

标签: php html arrays forms


【解决方案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 和准备好的查询来避免这个问题。

【讨论】:

  • 你是对的,我目前正在做一些原始的事情,但当我看到它工作时,我会确保切换到 PDO。但我不能说我以前用过 json_encode,所以我会学习这个。谢谢。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-10-23
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多