如何处理庞大的形式

时间:2012-07-30 11:50:12

标签: php mysql forms

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

我有下一个: ~50个字段(输入文本,checkboxex,select,textarea)

之后,我需要将其保存到MySQL数据库中,我需要选择并过滤这些数据。 你有练习吗,你在项目中使用了什么?

2 个答案:

答案 0 :(得分:6)

要组织此类表单中的数据,您可以使用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>

更新:使用<fieldset><legend>代码和一些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

答案 1 :(得分:3)

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