【问题标题】:PHP Arrays and Form ValuesPHP 数组和表单值
【发布时间】:2013-10-20 01:11:23
【问题描述】:

PHP 菜鸟在这里。我正在使用 PHP 来呈现供应订单表格。可以订购的用品清单是动态的,所以我从 MySQL 数据库中提取它们。下面是通过循环查询结果生成 HTML 表单字段的 PHP 代码:

while($row = mysqli_fetch_array($itemresult)) 
{
echo "<input type='hidden' name='Item_ID[]' value='" . $row['Item_ID'] . "'></TD>";
echo "<TR><TD class='itemdesc'>" . $row['Item_Name'] . " </TD>";
echo "<input type='hidden' name='Item_Name[]' value='" . $row['Item_Name'] . "'></TD>";
echo "<TD>" . $row['Item_Qty'] . " </TD>";
echo "<TD class='itemprice'>" . $row['Price'] . " </TD>";
echo "<input type='hidden' name='Item_Price[]' value='" . $row['Price'] . "'></TD>";
echo "<TD><input type='text' size='3' name='Order_Qty[]'></TD>";
echo "<TD><input type='checkbox' name='Off_Day[]'></TD>";
}

我没有使用数组的经验,但是我需要将这些表单值以数组格式传递给我的 process.php 文件。现在,我的 process.php 的目的是简单地打印一个 Item_Name 列表和相关的 Order_Qty 自己,很像: 铅笔 10 钢笔 7 不断地。 作为数组和 PHP 的新手,我不知道如何在我的 process.php 文件中完成此操作,希望得到一些指导。谢谢!

++++++++++++++++++++++++++++++++++++++++++++++++++ *@yknivag* 谢谢!这有助于我理解结构。我一直在在线测试各种 foreach 示例,遇到了障碍,可以使用一些额外的帮助。我的数组结果如下所示。

[Item_Name] => Array (
[0] => One Item
[1] => Second Item
[2] => Third Item
[3] => Fourth Item    )

[Item_Price] => Array (
[0] => 0.00
[1] => 64.50
[2] => 110.00
[3] => 38.45  )

如何引用数组中的特定值,例如“第二项”?我似乎无法弄清楚引用特定项目的语法。例如,此语句不返回任何数据。

echo "Item: " . $_POST[Item_Name] . "<BR>";

还有什么有用的,是知道如何同时显示相应的数组项,例如“第二项”和“64.50”? 下面的 foreach 循环似乎应该可以解决问题,但是它也不返回任何数据。

foreach ($myarray as $key => $value)
{
echo "<p>".$key." ".$value."</p>";
}

我读过的所有内容都说这应该给我我想要的东西,我很困惑为什么它什么也没返回。

【问题讨论】:

  • 您的阵列使用情况看起来不错。您的表单名称看起来也不错。我不确定你在问什么。

标签: php arrays forms


【解决方案1】:

在您的 process.php 文件中以:

<?php
print "<pre>" . PHP_EOL;
print_r($_POST);
print "</pre>" . PHP_EOL;
?>

然后您将看到被发回的数据的结构,这将有助于您弄清楚如何处理它。

获得结构后,检查foreach 命令。

【讨论】:

    【解决方案2】:

    你想要一个关联数组

    array("pencil" => 9.99, "pen" => 3.23, "paper" => 21.11)
    

    如果您通过 AJAX 提交表单,您将使用 JavaScript 将值发布到您的 PHP 页面。

    var pencil = document.getElementById("pencil").value;
    var pen = document.getElementById("pen").value;
    var paper = document.getElementById("paper").value;
    $.post("process.php", {pencil: pencil, pen: pen, paper: paper});
    

    在您的“流程”页面上,您将获取发布的值

    $pencil = $_POST["pencil"];
    $pen = $_POST["pen"];
    $paper = $_POST["paper"];
    

    然后使用以下内容构建您的数组

    $myarray = array("pencil" => $pencil, "pen" => $pen, "paper" => $paper);
    

    编辑

    在您的 WHILE 循环中,通过将其放在末尾来构建自己的数组

    $myarray[$name] = $price;
    

    然后在循环之外,将您的数组编码为 JSON 对象

    $myjson = json_encode($myarray, JSON_HEX_APOS);
    

    现在您有了一个 JSON 对象,您需要在 JavaScript 中获取它

    var myjson = <?php echo $myjson; ?>;
    

    然后你可以对键/值对做任何你想做的事情

    for(var key in myjson){
        var item_name = key;
        var item_price = myjson[key];
        //where the magic happens
    }
    

    【讨论】:

    • 这是个好东西,但我不确定它是否符合我的表单要求。我的表单和字段名称是动态构建的,所以当我在我的流程脚本中发现它们时,我不会知道即将到来的字段名称。 (我的表单/字段生成代码在我的原始帖子中)。有没有办法调整你的建议以满足我的要求?谢谢!
    猜你喜欢
    • 2017-11-15
    • 2012-10-20
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 2011-08-04
    • 2021-03-26
    • 2016-03-05
    • 2014-11-30
    相关资源
    最近更新 更多