【问题标题】:How to handle huge form [closed]如何处理巨大的表格[关闭]
【发布时间】:2012-07-28 02:08:44
【问题描述】:

我有一个问题,您如何使用 php 和 mysql 处理来自表单的大量数据?

我有下一个: ~ 50 个字段(输入文本、复选框、选择、文本区域)

之后,我需要将它保存到 MySQL 数据库中,并且我需要选择和过滤这些数据。 你有实践吗?你在项目中使用什么?

【问题讨论】:

  • 有具体问题吗?没有本机抑制剂阻止您提交 50 个字段(当然是通过 POST - 使用 GET,您最终可能会遇到 URL 长度限制)。
  • here you go 假设您的 huge 等于 many fields 而不是 large fields
  • 我的意思是也许有可以帮助我的框架或方法。我很累通过 $_POST['field'] -> 插入数据库来处理。
  • bart s 谢谢,我忘了 jQuery =)
  • 问题是他应该如何处理数据库,如何处理代码(避免重复使用$_POST)。这不是建设性的,因为没有一个正确的答案/

标签: php mysql forms


【解决方案1】:

我会将信息分成几个部分,每个部分只显示/询问一个子集。每个部分都有一个保存/下一步按钮,数据在每个部分提交时保存。

【讨论】:

    【解决方案2】:

    要以这种形式组织数据,您可以使用 HTML 表单数组。假设我们提交了大量关于某个房子的数据。我会将数据拆分为多个部分,例如:generalgeofeaturesdescriptions 并像这样编写表单。

    <form>
      <fieldset>
        <legend>General information</legend>
        <input type="number" name="general[pax]"  value="" placeholder="Pax"  />
        <input type="number" name="general[pets]" value="" placeholder="Pets" />
        <input type="text"   name="general[type]" value="" placeholder="Type" />
      </fieldset>
    
      <fieldset>
        <legend>GEO data</legend>
        <input type="text" name="geo[longitude]" value="" placeholder="Longitude" />
        <input type="text" name="geo[latitude]"  value="" placeholder="Latitude" />
      </fieldset>
    
      <fieldset>
        <legend>Features</legend>
        <input type="checkbox" name="features[internet]" value="1" title="Internet" />
        <input type="checkbox" name="features[pool]" value="1" title="Pool" />
        <input type="checkbox" name="features[conditioner]" value="1" title="A/C" />
      </fieldset>
    </form>

    更新:使用&lt;fieldset&gt;&lt;legend&gt; 标记和一点jQuery未演示)您可以轻松显示/隐藏不同的组并命名它们随你的口味。

    提交此类表单后,您将能够访问以下值:

    $pets = (int)$_POST['general']['pets'];
    $features = $_POST['features'];
    
    $lon = (float)$_POST['geo']['longitude'];
    $lat = (float)$_POST['geo']['latitude'];
    

    它将简化您的开发并减少控制/解析/枚举不同数据组的工作。

    更新:或另一种可能的变体是

    <input type="text" name="params[param1]" value="" />
    <input type="text" name="params[param2]" value="" />
    <input type="text" name="params[param3]" value="" />
    

    同时在PHP

    $params = $_POST['params']; // getting our isolated array of parameters
    $names = array_keys($params); // extracting names from array
    $values = array_values($params); // extracting values from array
    
    $mysql->insert($names, $values) // and trying to implement desired solution
    

    【讨论】:

    • 是的,我也喜欢它,但是当我打开我的 php 脚本并编写诸如此类的东西时: $varA = $_POST['param1]....$varZ = $_POST['param1000 '] 我郁闷了。
    • @d7p4x,我已经用&lt;fieldset&gt;&lt;legend&gt; 标签更新了我的答案,以便能够在表单中组织数据组。
    • 我不认为
      需要,我只使用 name="program[1]"..name="program[10]" 并且它有效 =) 但它不舒服。我想要: $params[][] = $_POST['params']; $mysql-> insert($params['names'], $params['values']) 是真的吗? =)
    • 谢谢!这对我有帮助 =)
    • @d7p4x 很高兴它有帮助!您能否将问题标记为accepted
    猜你喜欢
    • 1970-01-01
    • 2018-08-20
    • 2011-02-12
    • 2011-09-20
    • 2011-06-19
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多