【问题标题】:PHP, Submitting a two dimensional table with TextBox to proccessPHP,提交带有TextBox的二维表进行处理
【发布时间】:2012-08-08 03:04:45
【问题描述】:

我正在构建一个具有动态表的应用程序,每次打开页表的行和列都会根据数据库中的数据进行更改。 每行是一个供应商公司,每列是一个项目标题。所有这些供应商都提供相同的项目,因此该表有一个文本框,每个文本框都包含一个文本框,因此用户可以键入值,该值表示他们想要从该供应商那里获得的水果数量。以下是示例。

所以我现在需要做的是,输入这些值后,我想通过PHP处理它们,然后在确认页面看到4个不同的报告,例如:写公司名称,在其下,它们是什么必须为每个项目供应,然后是下一个公司,依此类推,直到最后。

我不知道我是否应该为每个文本框创建不同的类?或识别他们!我应该排列它们吗?我很困惑..如果你们中的任何人可以提供帮助,那就太好了

非常感谢

【问题讨论】:

    标签: php arrays textbox


    【解决方案1】:

    我建议您将输入元素命名为数组。类似:

    <input type="text" name="fruits[company1][apple]">
    <input type="text" name="fruits[company1][berries]">
    <input type="text" name="fruits[company1][orange]">
    <input type="text" name="fruits[company1][bannana]">
    
    <input type="text" name="fruits[company2][apple]">
    <input type="text" name="fruits[company2][berries]">
    <input type="text" name="fruits[company2][orange]">
    <input type="text" name="fruits[company2][bannana]">
    

    或者同样的事情,第一层是水果,第二层是公司名称。这实际上是同一件事,通常都一样容易使用。仅取决于发布表单后您希望如何循环数据。您最好也使用公司名称和/或水果的 id。只是这样,例如,带有空格的公司名称仍然有效。

    使用上面的表格,你可以像这样处理数据:

    <?php
    foreach($_POST['fruits'] as $company=>$row){
        foreach($row as $fruit=>$quantity){
            if(!is_numeric($quantity) || $quantity < 0){
                $quantity = 0;
            }
            echo "You selected {$quantity} {$fruit} from {$company}";
        }
    }
    

    【讨论】:

    • 非常感谢。正是我需要的!
    【解决方案2】:

    我会尝试创建一个以项目 ID 作为第一个维度的多暗淡数组。像这样:

    <input type="textbox" name="textbox[<?php echo $row['item_id']; ?>]["apple"]" value="<?php echo $row['apple']; ?>" />
    

    然后,在您的处理脚本中:

    foreach ($_POST['textbox'] as $row)
    {
      foreach ($row as $key => $val)
      {
        $q = "update `items` set `apple` = {$val['apple']} where `item_id` = {$key}";
        mysql_query($q);
      }
    }
    

    【讨论】:

    • 是的 :) 显然,您必须确保这一点。
    • 哇!你有没有为此投反对票!?这并不是最终的解决方案+安全机制,我只是向他们展示如何做到这一点。他们可以自己做安全...
    猜你喜欢
    • 2017-09-02
    • 2017-09-27
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    相关资源
    最近更新 更多